just do it

OrangePi Lite 外部硬件时钟同步系统时间

DS1307串行实时时钟是一种低功耗,完整的二进制编码的十进制(BCD)时钟/日历加56位字节的NV SRAM。地址和数据通过IIC串行传输,双向总线。
时钟/日历提供秒、分、时、日、星期、月和年的信息。月的最后一天自动调整月的日数少于31天,包括闰年的修正。时钟运行24小时或者12小时格式与AM/PM指标

引脚说明:
名称 描述
SDA I2C SDA
SCL I2C SCL
5V 电源5V
GND 地
注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。

1.根据引脚,把外部时钟接入OrangePi Lite 开发版
《OrangePi Lite  外部硬件时钟同步系统时间》
《OrangePi Lite  外部硬件时钟同步系统时间》
2.安装检测工具

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo apt-get update
sudo apt-get install i2c-tools python-smbus
sudo reboot
#重启后
sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

0x68为 ds1307 地址
检看 DS1307的数据手册,发现DS1307的7位地址的确是0x68。注意,如果忘了为时钟模块安装纽扣电池这里可能读取不到。

3.加载ds1307

1
2
modprobe i2c-dev
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device

加载之后再检测

1
2
3
4
5
6
7
8
9
10
 sudo i2cdetect -y 0
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- UU -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

此时UU 代表系统已经识别。

1
2
3
4
5
6
7
#此时/dev/下出现 rtc1
#设置硬件时间
hwclock -w -f /dev/rtc1
#读取硬件时间
hwclock -r -f /dev/rtc1
#系统时间同步硬件时间
hwclock -s -f /dev/rtc1

4.设置开机时间同步

1
2
3
4
5
6
7
#设置开机同步
vim /etc/rc.local 
#将以下内容加入“exit 0”行之前
modprobe i2c-dev
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
hwclock -r -f /dev/rtc1
hwclock -s -f /dev/rtc1
点赞