基於 FC7300 平台之 PCF2131 RTC 晶片寄存器的介紹及實現

關鍵字 :pcf2131fc7300電池NXPon

簡介

        PCF2131 是一款具有集成溫度補償晶體振盪器(TCXO)和 32.768 kHz 石英晶體的 CMOS 實時時鐘(RTC)晶片。PCF2131 具有可選擇的 I2C 總線或 SPI 總線。本文主要對PCF2131 RTC 晶片寄存器進行介紹。世平集團基於 FlagChips FC7300 BMS 方案 BMU 板的 PCF2131 RTC 晶片,被用於設置準確性地時間日期,提供鬧鐘、提供可編程看門狗、提供時間戳等功能。

       在本文中舉例,通過配置時間戳中斷寄存器和中斷掩碼寄存器 INT_B_MASK2,實現時間戳在中斷引腳B上產生中斷,即在中斷引腳B的中斷處理函數中列印“TS1 INT is ok”。

                                                                                                                                                                                                 

1.寄存器介紹

1.1 控制寄存器


  • Control_1 寄存器
    • EXT_TEST:RTC 運行模式位
    • TC_DIS:溫度自動補償位
    • STOP:RTC 時鐘位
    • 100TH_S_DIS:1/100 秒位
    • POR_OVRD:上電復位覆蓋位
    • 12_24:時間格式位
    • MI:分鐘中斷位
    • SI:秒中斷位
  • Control_2 寄存器
    • MSF:秒和分鐘中斷標誌位
    • WDTF:看門狗標誌位
    • AF:鬧鐘標誌位
    • AIE:鬧鐘中斷標誌位
  • Control_3 寄存器
    • PWRMNG[2:0]:控制電池切換、電池電量不足檢測和額外電源故障檢測功能位
    • BTSE:電池切換時,時間戳標誌位
    • BLF:電池電量低標誌位
    • BIE:電池電量切換中斷標誌位
    • BLIE:電池電量低中斷標誌位
  • Control_4 寄存器
    • TSF1-TSF2:時間戳標誌位
  • Control_5 寄存器
    • TSIE1-TSIE4:時間戳中斷標誌位


1.2 
軟體復位寄存器


  • CPR:清除預分頻位
  • SR:軟體復位位
  • CTS:清除時間戳位


1.3 
時間日期寄存器


  • 100 th_Seconds 寄存器:以 BCD 碼的格式設置 1/100 秒,範圍 0-99
  • Seconds 寄存器
    • OSF:保持時鐘完整性
    • SECONDS:以 BCD 碼的格式設置秒,範圍 0-59
  • Minutes 寄存器:以 BCD 碼的格式設置分鐘,範圍 0-59
  • Hours 寄存器
    • 12 小時格式下
      • AMPM 位:上午、下午格式
      • HOURS 位:以 BCD 碼的格式設置小時,範圍 1-12
    • 24 小時格式下
      • HOURS 位:以 BCD 碼的格式設置小時,範圍 0-24
  • Days 寄存器:以 BCD 碼的格式設置天,範圍 1-31
  • Weekdays 寄存器:以 BCD 碼的格式設置天,範圍 0-6
  • Months 寄存器:以 BCD 碼的格式設置月,範圍 1-12
  • Years 寄存器:以 BCD 碼的格式設置年,範圍 0-99


1.4 
鬧鐘寄存器


  • Second_alarm 寄存器
    • SECONDS:以 BCD 碼的格式設置秒,範圍 0-59
  • Minutes_alarm 寄存器:以 BCD 碼的格式設置分鐘,範圍 0-59
  • Hours_alarm 寄存器
    • 12 小時格式下
      • AMPM 位:上午、下午格式
      • HOURS 位:以 BCD 碼的格式設置小時,範圍 1-12
    • 24 小時格式下

      • HOURS 位:以 BCD 碼的格式設置小時,範圍 0-24
      • Days_alarm 寄存器:以 BCD 碼的格式設置天,範圍 1-31
      • Weekdays_alarm 寄存器:以 BCD 碼的格式設置天,範圍 0-6


1.5 CLKOUT_Ctl 
寄存器 


  • TCR[1:0]:溫度測量周期
  • OTPR 位:OTP 刷新位
  • COF[2:0]:CLKOUT 頻率選擇,如下如所示:



1.6 
時間戳寄存器


PCF2131 RTC 晶片共有 4 個時間戳寄存器,由於 4 個時間戳寄存器除了地址不同外,其餘都相同,所以在這隻介紹一個即可。

  • Timestp_ctl1
    • TSM 位
    • TSOFF 位
    • SUBSEC_TIMESTP[4:0]:當 100TH_S_DIS = '1' 時,以 BCD 格式編碼的時間戳信息為 1/16 秒。當 100TH_S_DIS = '0' 時,以 BCD 格式編碼的時間戳信息為 1/20 秒。
  • Sec_timestp1 寄存器
    • SECONDS:以 BCD 碼的格式設置秒,範圍 0-59
  • Min_timestp1 寄存器:以 BCD 碼的格式設置分鐘,範圍 0-59
  • Hour_timestp1 寄存器
    • 12 小時格式下
      • AMPM 位:上午、下午格式
      • HOURS 位:以 BCD 碼的格式設置小時,範圍 1-12
    • 24 小時格式下
      • HOURS 位:以 BCD 碼的格式設置小時,範圍 0-24
      • Day_timestp1 寄存器:以  BCD 碼的格式設置天,範圍 1-31
      • Mon_timestp1 寄存器:以 BCD 碼的格式設置天,範圍 1-12
      • Year_timestp1 寄存器:以 BCD 碼的格式設置天,範圍 0-99


1.7 
中斷掩碼寄存器

 

  中斷掩碼寄存器 A 和 B,一個是配置引腳 A 中斷,另一個是配置引腳 B 中斷,兩者中斷源一樣。所以在此只介紹引腳 A 中斷掩碼寄存器。

  • INT_A_MASK1
    • MIA:分鐘中斷掩碼位
    • SIA:秒中斷掩碼位
    • WD_CDA:看門狗中掩碼斷
    • AIEA:鬧鐘中斷掩碼位
    • BIEA:電池切換中斷掩碼位
    • BLIEA:電池電量低中斷掩碼位
  • INT_A_MASK2
    • TSIEA1-TSIEA4:時間戳 1-時間戳 4 中斷掩碼位


1.8 
看門狗寄存器


  • Watchdg_tim_ctl
    • WD_CD 位:看門狗定時器位
    • TI_TP 位:秒或分鐘中斷時,產生信號位
    • TF[1:0] 位:看門狗計時器時鐘位
  • Watchdg_tim_ctl
    • WATCHDG_TIM_VAL[7:0]
    • VAL 值最小為 2
    • VAL 值最大值為 255




2.
寄存器的配置

2.1 時間戳中斷寄存器的配置


圖1,Control_4、Control_5寄存器圖

        如圖 1 所示,為Control_4、Control_5 寄存器圖。時間戳中斷的配置,是通過將 Control_4 的 TSF1 位,置 0,將 Control_5 的 TSIE1 位,置 1,實現的。Control_4 的 TSF1 位,置0,是通過將 TS1 引腳的電平實現。將 Control_5 的 TSIE1 位置 1,是通過程序 Set_INT_Flag_Type (TS1_Flag) 函數實現。



2.2 
中斷掩碼寄存器 INT_B_MASK2 配置


圖2,中斷掩碼寄存器圖

        如圖 2 所示,為中斷掩碼寄存器圖。配置時間戳在中斷引腳 B 上產生中斷,即把中斷掩碼寄存器 INT_B_MASK2 的 TSIE1B 位置 0,通過程序 Set_INT(INTB,Turn_ON,TSF1) 函數實現。



2.3 
硬體介紹


圖3,FC7300 BMS 方案 BMU 板



圖4,FC7300 BMS方案 BMU 原理圖

如圖 4 為 PCF2131  RTC 原理圖。IFS 引腳接 VSS,所以通訊方式為 SPI。TS1 為輸入引腳,可由 MCU 控置輸出高低電平。    



2.4
程序分析

2.4.1 main.c 程序    

       主函數:配置 UART 初始化配置。配置 SPI 初始化配置。配置時間戳中斷,初始化時間戳 TS1 引腳為高電平,當為低電平是啟用時間戳。延遲 4s。配置中斷引腳 B 產生引腳中斷,配置為下降沿觸發,配置中斷處理函數。配置時間戳 TS1 引腳為低電平,即啟用時間戳。

int_main(viod)

{

BSP_PORT_Init();   //UART引腳初始化

        BSP_FCUART_Init();   // UART 初始化配置

        PCF2131_SPI_int(500000);   // SPI 初始化配置,波特率為 500KHZ

        INTB_GPIO_Int();   //中斷引腳B初始化配置,設置成下降沿

        TS1_GPIO_Int();    //時間戳引腳 TS1 初始化配置,電平配置為高電平

        Set_INT_Flag_Type (TS1_Flag);  //使能時間戳中斷

        Systc_Delay_ms(4000);   //延遲 4s

        Set_INT(INTB,Turn_ON,TSF1);   //使能時間戳在中斷引腳 B 上的中斷

        GPIO_Toggle(PORT_B, PORT_PIN_4);  //將時間戳引腳 TS1電平設置為低電平,啟用時間戳

While(1)

{

   }

}

函數 INTB_GPIO_Int中斷引腳 B 初始化配置,使能下降沿觸發中斷,配置中斷處理函數。

void INTB_GPIO_Intt(void)

{

         PORT_InitType tInitStruct = {0};

         PORT_InterruptType tIntStruct = {0};

 

         tInitStruct.u32PortPins = PORT_PIN_14;

         tInitStruct.uPortPinMux.u32PortPinMode = PORTA_14_GPIO;

         tInitStruct.ePortGpioDir = PORT_GPIO_IN;

//     tInitStruct.bPullEn = 1;

//     tInitStruct.ePullSel=PORT_PULL_UP;

         PORT_InitPins(PORT_A, &tInitStruct);

 

         tIntStruct.u32PortPins = PORT_PIN_14;

         tIntStruct.ePortIsrMode = PORT_IRQ_FALLING;    // 下降沿觸發

         tIntStruct.pIsrNotify = EVB_INTB_IRQ_PROCESS;   //中斷處理函數

         PORT_InitInterrupt(PORT_A, &tIntStruct);  

         IntMgr_EnableInterrupt(PORTA_IRQn);

         IntMgr_SetPriority(PORTA_IRQn,2);

}

函數 Set_INT_Flag_Type設置時間戳中斷。

void Set_INT_Flag_Type(Set_Flg_Type Flg_Type )

{

        uint8_t Txbuff[2]={0};

        uint8_t Rxbuff[2]={0};

                 Txbuff[0]=0x80 |Control_5_Adrress;

                 PCF2131_SPI_TX_RX(Txbuff,1,Rxbuff,1);

                 Txbuff[0]=0x7F&Control_5_Adrress;

                 Txbuff[1]=SET_BIT(Rxbuff[0],7);

                 PCF2131_SPI_TX_RX(Txbuff,2,Rxbuff,0);

}





3
.實現

3.1 示波器中斷引腳 B 波形抓取

從圖5 所示,系統開始運行到中斷產生用時 4s。

圖5,示波器抓取中斷引腳 B 上的波形

3.2 串口助手列印

如圖6 所示,從系統開始運行到時間戳在中斷引腳 B 上產生中斷用時 4s。

圖6,中斷引腳 B 中斷處理函數列印圖




4.
總結

       本文主要對 PCF2131 RTC 晶片寄存器的介紹及實現。通過舉例配置時間戳中斷寄存器和中斷掩碼寄存器 INT_B_MASK2,實現時間戳從系統開始運行,經歷 4s 的時間,進入中斷引腳 B 的中斷處理函數中列印“TS1 INT is ok”。如有問題歡迎在下方評論區留言或者發郵件到 atu.sh@wpi-group.com。




5.參考文獻

(1)  PCF2131 data sheet Rev. 1.1

(2)  FC7300 BMS 方案 BMU 原理圖


歡迎在博文下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   
作者:Jim Zhang / 張傲


更多資訊,請掃碼關注我們!

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論