
如果你是硬件做好了,出了这个问题,那你首先需要检查你的sclk和i/o有没有接反。如果这个没有问题,那么你需要悔衡行着重检查下你的DS1302芯片的VCC2脚的对地电压(4脚是GND,1脚是VCC2)如果这个电压在4.6V以下,那么你的DS1302很可能拦腔不能正常工作,虽然在DS1302的介绍资料上这个芯片的工作电压是2.0~5.5V,但是实测发现4.6V以下碧哗这块芯片是无法正常工作的,我跟LZ遇到的也是相同的情况,最后使用稳压电源供给DS1302 VCC2 4.7V的电压以后,该芯片正常工作,调回到4.6以下后,又不正常了,可见这块芯片对电压的要求非常高,希望LZ能够使用正常!
有一种情况:
你读取的数没有错误棚哪,85转换成十六进制为0x55,DS1302的寄存器里的数如岁字为BCD码,因为你没有将其转换成正常数字,所链橡码以出现错误val=((read_data>>4)*10+(read_data&0x0f));
OK?
接10K上拉电阻即可解决。
你的SCK和IO上有没有接上拉电阻?