OrangePi Lite 外部硬件时钟同步系统时间
linux /
2019年04月10日 14时57分 /
7865人浏览
DS1307串行实时时钟是一种低功耗,完整的二进制编码的十进制(BCD)时钟/日历加56位字节的NV SRAM。地址和数据通过IIC串行传输,双向总线。
时钟/日历提供秒、分、时、日、星期、月和年的信息。月的最后一天自动调整月的日数少于31天,包括闰年的修正。时钟运行24小时或者12小时格式与AM/PM指标
引脚说明:
名称 描述
SDA I2C SDA
SCL I2C SCL
5V 电源5V
GND 地
注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。
1.根据引脚,把外部时钟接入OrangePi Lite 开发版
2.安装检测工具
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
modprobe i2c-dev
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
加载之后再检测
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 代表系统已经识别。
#此时/dev/下出现 rtc1
#设置硬件时间
hwclock -w -f /dev/rtc1
#读取硬件时间
hwclock -r -f /dev/rtc1
#系统时间同步硬件时间
hwclock -s -f /dev/rtc1
4.设置开机时间同步
#设置开机同步
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