rtc芯片测试软件,希望有做过stm32下RTC芯片R8025 AC的朋友看看
我的配置和时间设置程序如下,但测试时发现RTC的时钟不会从0-23循环,而是往24加,天数月数也不会变动,网上也没太多这方面资料,请做过的朋友指点下 :/**通过I2C配置8025 采用多次发送提高发送成功率*/void RX8025T_Init(void){uint8_t i;for (i=0; i<3; i++){if (TRUE == I2C_WriteByte(0x00,0x0d..
我的配置和时间设置程序如下,但测试时发现RTC的时钟不会从0-23循环,而是往24加,天数月数也不会变动,网上也没太多这方面资料,请做过的朋友指点下
:
/*
*通过I2C配置8025 采用多次发送提高发送成功率
*/
void RX8025T_Init(void)
{
uint8_t i;
for (i=0; i<3; i++)
{
if (TRUE == I2C_WriteByte(0x00,0x0d,I2C_RTC_write_ADDRESS))//扩展寄存器初始化
{
break;
}
}
for (i=0; i<3; i++)
{
if (TRUE == I2C_WriteByte(0x00,0x0e,I2C_RTC_write_ADDRESS))// 标志寄存器初始化
{
break;
}
}
for (i=0; i<3; i++)
{
if (TRUE == I2C_WriteByte(0x40,0x0f,I2C_RTC_write_ADDRESS))// 控制寄存器初始化
{
break;
}
}
}//end RX8025T_Init(void)
//判断是否掉过电,掉电则初始化
void RTC_Init(void)
{
uint8_t i, data_read;
for (i=0; i<3; i++)
{
if (TRUE == I2C_ReadByte(&data_read, 1, 0x0e,I2C_RTC_write_ADDRESS))
{
break;
}
}
if (0x02 == (data_read & 0x02)) //判断是否掉过电,掉电则初始化
{
RX8025T_Init();
}
}
void RTC_Write_Time(void)
{
uint8_t i;
RTC_TimeData[6] = HEX_To_BCD(RTC_TimeData[6]<100?RTC_TimeData[6]:0);//年 设置数字不能大于理论值
RTC_TimeData[5] = HEX_To_BCD(RTC_TimeData[5]<13?RTC_TimeData[5]:0); //月
RTC_TimeData[4] = HEX_To_BCD(RTC_TimeData[4]<32?RTC_TimeData[4]:0); //日
RTC_TimeData[3] = 0x01;//星期 设为 sunday 不做要求
RTC_TimeData[2] = HEX_To_BCD(RTC_TimeData[2]<24?RTC_TimeData[2]:0); //时
RTC_TimeData[1] = HEX_To_BCD(RTC_TimeData[1]<60?RTC_TimeData[1]:0); //分
RTC_TimeData[0] = HEX_To_BCD(RTC_TimeData[0]<60?RTC_TimeData[0]:0); //秒
RTC_Init();
//写入时间设置
for (i=0; i<3; i++)
{
if (TRUE == I2C_BufferWrite(RTC_TimeData, 16, 0x00, I2C_RTC_write_ADDRESS))
{
break;
}
}
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)