最近用了 NXP 的 RTC 芯片 PCF85063
总结一下使用的感受:
1、数据手册中个寄存器的描述已经描述得很清楚,要看清楚数据手册
2、如果通信不成功,检查一下硬件和时序,我没有遇到这个问题。一写就回应了,还是比较顺利的
3、它的时间存储格式是按 BCD 码的格式来存储的。如果需要使用,还需要转换成十六进制之后才能使用,时间 年的范围:0~99,这一个需要注意
4、每一个时间对应一个寄存器,但是八位中不是每一个位都全部用到,比如 日 中的 6、7 位就没有用到,小时格式分 12 小时制和 24 小时制,需要自己设置
5、它的寄存器地址是可以自动累加的,不需要自己改变寄存器地址往里写,比如说写时间,直接从 0x04 开始写,一口气写 7 个字节,就自动对上了秒分钟时钟日星期几月份年份
2021-07-19 更新
1、时间要从1月1日开始计数,是没有0月0日的切记
附上 BCD 码和十六进制转换部分的代码
/*****************************************************************
function name: DecimalToBCD()
function: Translate decimal to bcd
para:
*****************************************************************/
unsigned char DecimalToBCD(unsigned char data)
{
unsigned char high = 0;
while(data >= 10)
{
high++;
data -= 10;
}
return((high<<4)|data);
}
/*****************************************************************
function name: BCDToDecimal()
function: Translate BCD to decimal
para:
*****************************************************************/
unsigned char BCDToDecimal(unsigned char data)
{
unsigned char tenweight,oneweight,result;
oneweight = data&0x0f;
tenweight = (data&0xf0)>>4;
result = tenweight*10 + oneweight*1;
return result;
}