基于 FC7300 平台之 PCF2131 RTC 芯片寄存器的介绍及实现

简介

        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次,发文人进小黑屋喔~

评论