嵌入式开发——rtc时钟调试笔记

前段时间在调试AM335X的rtc时钟功能,一开始是使用芯片内部的rtc时钟模块,后来发现功耗有点高,转而使用rtc时钟芯片,型号为ds1672.。现在把两者的调试要点记录下来,方便后续的查阅。

注:使用的linux内核版本为4.4.32

芯片内部RTC:

查看官方的说明文档:http://processors.wiki.ti.com/index.php/AM335x_Schematic_Checklist#RTCrtc的模式应为RTC-only mode,引脚接法如下:
VDDS_RTC--------Always on RTC 1.8 V power supply(接电池转换后的1.8V,持续供电VDD1V8_RTC)
CAP_VDD_RTC--------1 uF decoupling capacitor to VSS(接1uF电容到地)
RTC_KALDO_ENn--------VSS(接10k电阻到地)
RTC_PWRONRSTn--------1.8 V RTC power on reset(接电池转换后的1.8V,保证不复位,VDD1V8_RTC)
PMIC_POWER_EN--------PMIC power enable input(接板子转换后的1.8V,VDD1V8)
EXT_WAKEUP--------1.8 V wakeup event signal(接电池转换后的1.8V,一直是唤醒状态,VDD1V8_RTC)

内核的配置需选上CONFIG_RTC_DRV_OMAP这一栏,设备树下增加一个新的节点:

&rtc {
    system-power-controller;
    clocks = <&clk_32768_ck>;
    clock-names = "ext-clk", "int-clk";
    status = "okay";
};

 

使用外部的时钟芯片(ds1672):

查看内核的driver目录,可以发现系统已经适配了ds1672这个i2c时钟芯片,我们这里只要配置正确了,就能正常使用它了。

配置方法如下:

1.去除设备树的rtc节点,在i2c0节点下增加ds1672子节点:

ds1672: rtc@68 {
    compatible = "ds1672";
    reg = <0x68>;    
};

2.内核配置引入<*>   Dallas/Maxim DS1672
去掉omap-rtc驱动

你可能感兴趣的:(嵌入式开发)