前段时间在调试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驱动