根据I2C协议调试DS3231,来来回回折腾了两天,有点崩溃。起初用IIC一直出错,后来用软件模拟,也是出错,最后还是用硬件IIC,调试发现用I2C_CheckEvent函数检测I2C的SR1和SR2寄存器时,总是返回ERROR,刚开始想着是不是MCU速度太快了,DS3231跟不上节奏反应不过来,就在I2C_GenerateSTART与I2C_CheckEvent之间加了个延时,发现这时I2C_CheckEvent的EV5过了,但是又卡在EV6,感觉不是延时的问题,还是DS3231有问题,去百度发现关于DS3231的文章不多,而且仅有的也没有解决这方面的问题的,只有一个篇幅较少的提到晶振的问题,想是不是DS3231起振有问题,先换个PIN试试,也不行,然后把电压从3.3换到5V,OK通过!
最后共享一下DS3231中文手册,很多时候还是要好好看看手册。
链接:https://pan.baidu.com/s/1O3uOxGkkrPurTE4nEkmx9w
提取码:1q2w