DS1307串行实时时钟是一种低功耗,完整的二进制编码的十进制(BCD)时钟/日历加56位字节的NV SRAM。地址和数据通过IIC串行传输,双向总线。
时钟/日历提供秒、分、时、日、星期、月和年的信息。月的最后一天自动调整月的日数少于31天,包括闰年的修正。时钟运行24小时或者12小时格式与AM/PM指标
引脚说明:
名称 描述
SDA I2C SDA
SCL I2C SCL
5V 电源5V
GND 地
注意:此模块并不支持热插拔,启动系统前需要确保硬件连接正确。
1.根据引脚,把外部时钟接入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 |