zl程序教程

您现在的位置是:首页 >  系统

当前栏目

嵌入式linux开发,rtc时钟探测报错:rtc-ds1307: probe of 1-0068 failed with error -5

LinuxFailed嵌入式开发 报错 Error of with
2023-09-14 09:09:34 时间

嵌入式linux开发中,采用时钟芯片ds1307作为RTC。

一、问题描述。

采用ds1307做为rtc,内核无法探测到时钟。内核打印如下:

rtc-ds1307: probe of 1-0068 failed with error -5

二、问题分析。

采用CR1220钮扣电池给芯片Vbat引脚供电,VCC使用3.3V供电。而ds1307的Vbat引脚不用,必须接地;VCC电压须大于1.25倍的Vbat。VCC=3.3V,Vbat=3.0V,3V*1.25=3.75V。以下摘自芯片手册:

DS1307工作于从设备状态.跟随在”启动条件”之后,主设备提供一从设备寻址字节和要存取的寄存器地址,寄存器就可以被连续地存取直到”停止条件”到来.当VCC低于1.25 x VBAT时,芯片就会中止目前的存取并复位设备地址计数器.这时,向芯片发出的任何信号将被拒绝,以免发生存取错误.当VCC低于VBAT时,芯片就会切换到电池备份模式.当VCC恢复到大于VBAT +0.2V时,芯片就会由VCC供电.当VCC大于1.25 xVBAT时,存取就可以正常进行.

VCC, GND –直流电源供电管脚.当VCC由+5V正常供电时,芯片可以被正常的存取.当VCC低于1.25 x VBAT并且3V电池已连到芯片时,读写被禁止.但时钟保持功能不受影响.当VCC低于VBAT时,RAM和时钟保持器就切换到3V电池供电.

VBAT –3V锂电池或其他电源供电输入.电池电压必须保持在2.0—3.5V之间以确保正确的操作.一个48 mAhr的锂电池可以在主电源不供电的情况下使DS1307保持数据在10年以上.

三、解决方案。

让Vbat引脚接地,成功探测到,内核打印如下:

[    2.713407] rtc-ds1307 1-0068: rtc core: registered ds1307 as rtc0
[    2.719879] rtc-ds1307 1-0068: 56 bytes nvram

因处理器io电压和时钟保持问题,我进行了芯片更换。