PCF2131 RTC 芯片功能的介紹及實現

關鍵字 :PCF2131RTC

簡介

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

       在本文中舉例說明,實現了對 PCF2131 RTC 晶片進行時間日期的設置和讀取,並通過串口助手列印出設置的時間日期。

 

1、 框圖介紹


圖 1,PCF2131框圖


如圖 1 所示,PCF2131 RTC  晶片主要有 SPI、中斷引腳 A/B、控制、時間日期配置、鬧鐘、時間戳、中斷引腳 A/B 掩碼、看門狗功等功能模塊組成。如下對其各模塊進行介紹:


1.1  SPI
模塊

與MCU通迅,具有獨立的數據輸入和輸出,最大速率為 6.5 Mbit/s。


1.2 
中斷引腳 A\B 模塊

在引腳 A 或 B 上,輸出一個頻率為 1HZ 的 PWM 信號                                                                                                                


1.3  
控制模塊

對晶片進行寫入配置或讀取命令的操作,來實現晶片相應功能的配置或相應狀態的讀取。


1.4  
時間日期配置模塊

以 BCD 格式配置 100th、秒、分鐘、小時、天、星期、月、年相應的寄存器,從而使 PCF2131 RTC 晶片從配置的時間日期開始計時。


1.5  
鬧鐘模塊

通過寫入鬧鐘寄存器相應的 BCD 格式值配置鬧鐘功能。


1.6  
時間戳模塊

通過寫入時間戳寄存器相應的 BCD 格式值可配置時間戳功能。


1.7  
中斷引腳 A\B 掩碼模塊

  ① 配置晶片的中斷方式:分鐘中斷、秒中斷、看門狗中斷、鬧鐘中斷、電池切換中斷、電池電量低中斷。

          ②寫入寄存器命令來選擇中斷引腳:A 或 B 引腳。


2、 特性

  • 提供閏年修正 時間戳功能提供年、月、日、星期、小時、分鐘、秒和 1/100 秒
  • 閏年的自動修正
  • 有 4 個時間戳功能
  • 提供可編程的看門狗
  • SPI 通訊速率最大 5 Mbit/s
  • 自動遞增的地址寄存器,內置的地址寄存器將在每次讀取或寫一個數據字節後自動遞增,直到寄存器 36 h。寄存器 36h 後,自動遞增將繞到 00h 地址,如下圖所示:
  • 高精度的計時功能,並有良好的低功耗功能



3.
時間日期的設置、讀取、列印

3.1  時間日期的設置、讀取、列印流程:

  • 時間日期的設置,通過 PCF2131_Set_Time() 函數實現。
  • 設置秒中斷,通過 SET_MI_SI_Intertuput(Set_SI,Pulse_Signal ) 函數實現。
  • 設置秒中斷在中斷引腳 A 上產生中斷,通過 Set_INT(INTA,Turn_ON,SI ) 函數實現。
  • 讀取時間日期並列印,通過在中斷引腳 A 的中斷處理函數 EVB_INTA_IRQ_PROCESS() 里,調用 PCF2131_Get_Time() 和 UART 列印函數實現。


3.2   
硬體介紹


圖 2,FC7300 BMS 方案 BMU 板


圖3,FC7300 BMS方案 BMU原理圖

如圖 3 所示,為 RTC 硬體電路。IFS 引腳接 VSS,所以 PCF2131 晶片選擇 SPI 通訊。

  
3.3程序解析

3.3.1 main.c程序

        主函數:初始化 UART 配置,初始化 SPI 配置。設置時間日期為:2023 年 11 月 1 日,星期一,6 時 6 分 6 秒。初始化中斷引腳 A,設置其在下降沿時產生一個頻率為 1HZ 的脈衝信號,配置中斷處理函數,讀取時間日期函數在中斷引腳 A 的中斷處理函數中進行讀取。

        int main(void)

{

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

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

PCF2131_SPI_int(500000);   //配置SPI波特率為500KHZ

        INTA_GPIO_Int();    //初始化中斷引腳 A,設置下降沿產中中斷,並進入中斷處理函數,讀取時間日期

        PCF2131_Set_Time();   //設置時間為2023年11月1日,星期一,6時6分6秒

SET_MI_SI_Intertuput(Set_SI,Pulse_Signal); //設置秒中斷,設置中斷引腳產生脈衝信號

        Set_INT(INTA,Turn_ON,SI );  //設置中斷引腳A 產生一個頻率為1HZ的脈衝信號

While(1)

{

}

}


函數 EVB_INTA_IRQ_PROCESS:中斷引腳 A 中斷處理函數,讀取時間日期。

void EVB_INTA_IRQ_PROCESS(void)

{

        PCF2131_Get_Time();

}


函數 PCF2131_Set_Time ① 設置 STOP 位為 1 ② 清除 CPR 預分頻 ③ 設置時間日期為 2023 年 11 月 1 日,星期 1, 6 時 6 分 6 秒 ④ 清除 STOP 位為 0。

void PCF2131_Set_Time(void)

{

        /*set stop bit to 1*/

        Set_Clear_Control1_STOP_Bit_Type(Set_STOP);

        /* Clear_CPR */

        SET_SoftRest_Type(SET_SoftRest_CPR);

        Set_date_time(T_ALL);

        /*clear stop bit */

        Set_Clear_Control1_STOP_Bit_Type(Clear_STOP);

}


函數 SET_MI_SI_Interrupu:設置秒中斷、設置中斷產生波形為脈衝波。

void SET_MI_SI_Interruput(Crl1_MI_SI_Type MI_SI_Type,WD_Signal_Type Signal_Type)

{

        /* SET SI to 1 */

        Set_Control1_MI_SI_Type(MI_SI_Type);

        /* SET a pulsed signal,TI_P=0: a permanent active signal,  TI_P=1: a pulsed signal  */

            // set TI_P=1: a pulsed signal //

        Set_WD(WD_CD_Disable,Signal_Type,WD_64_HZ);

}


函數 Set_INT設置中斷引腳 A 上產生秒中斷。

void Set_INT(INT_PIN_Type PIN_Type,INT_ON_OFF_Type ON_OFF_Type,INT_Type Interrupt_Type )

{

        uint8_t Txbuff[2]={0};

        uint8_t Rxbuff[1]={0};

        uint8_t Red_Txbuff_A[2]={0};

        uint8_t Red_Rxbuff_A[1]={0};

        uint8_t Interrupt_Type_Bit_n[10]={5,4,3,2,1,0,3,2,1,0};   //MI:Bit5,SI:Bit4,WD:Bit3,AF:Bit2,BF:Bit1,BLF:Bit0

                                                                                                    //TSF1:Bit3,TSF2:Bit2,TSF3:Bit1,TSF4:Bit0

        Red_Txbuff_A[0]=0x80|INT_A_MASK1_Adrress;

        Txbuff[0]=0x7F& INT_A_MASK1_Adrress;  //0x31 INT_A_MASK1 Register address

        PCF2131_SPI_TX_RX(Red_Txbuff_A,1,Red_Rxbuff_A,1);

Txbuff[1]=CLEAR_BIT(Red_Rxbuff_A[0],Interrupt_Type_Bit_n[Interrupt_Type]);//INT_A_ON_Buff[Interrupt_Type];

        PCF2131_SPI_TX_RX(Txbuff,2,Rxbuff,0);

}



4、 
實現

4.1 示波器抓取中斷引腳 A 波形

如圖 4 所示,中斷引腳 A 輸出 1HZ 脈衝波形,即 1S 讀一次時間日期。


圖 4,中斷引腳 A 輸出 1HZ 脈衝波形


4.2  
串口助手列印出讀取時間日期

如圖 5 所示,為串口助手列印出讀取時間日期結果為,2023 年 11 月 1 日,星期 1, 6 時 6 分 6 秒。


圖 5,串口列印出讀取的時間日期



5、  
總結

        綜上所述,本文主要介紹了 PCF2131 RTC 晶片的時間日期設置、鬧鐘、時間戳、看門狗等功能。通過舉例設置時間日期為,2023 年 11 月 1 日,星期一,6 時 6 分 6 秒,設置中斷引腳 A 產生秒中斷,並把讀取時間日期的函數放在中斷引腳 A 的中斷處理函數裡,從而實現 1 秒讀取一次時間日期並用串口列印出。以上是對 PCF2131  RTC 晶片功能的介紹及實現。如有問題歡迎在下方評論區留言或者發郵件到 atu.sh@wpi-group.com。



6、參考文獻

(1)  PCF2131 data sheet Rev. 1.1

(2)  FC7300 BMS 方案BMU 原理圖



歡迎在博文下方留言評論,我們會及時回復您的問題。如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com

作者:Jim Zhang / 張傲

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

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

評論