本帖最后由 XKP 于 2014-8-26 16:34 编辑
做了一块CB2的扩展板,见帖子:http://forum.cubietech.com/forum.php?mod=viewthread&tid=3185&extra=page%3D1里面有电路图,可以下载。
扩展板上有一个硬件RTC,下面为我自己的操作来读取时间数据
我使用的是cubain镜像,下载地址:http://cn.cubian.org/downloads/
安装以下工具: apt-get install i2c-tools 对于i2c-tools工具的使用可以在网上查询一下,很多资料 因为RTC是使用DS1307,使用的I2C总线
一、I2C设备查询 若总线上挂载I2C从设备,可通过i2cdetect扫描某个I2C总线上的所有设备。可通过控制台输入i2cdetect -y 1,结果如下所示。 如果接线正确一般会出现(看68就好了) 1. 0 1 2 3 4 5 6 7 8 9 a b c d e f 2. 00: -- -- -- -- -- -- -- -- -- ---- -- -- 3. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 4. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 5. 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 6. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 7. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 8. 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 9. 70: -- -- -- -- -- -- -- --
说明1:-y为一个可选参数,如果有-y参数的存在则会有一个用户交互过程,意思是希望用户停止使用该I2C总线。如果写入该参数,则没有这个交互过程,一般该参数在脚本中使用。 说明2:此处I2C总线共挂载一个设备——DS1307,从机地址0x68为DS1307
二、寄存器内容导出 通过i2cdump指令可导出I2C设备中的所有寄存器内容,例如输入i2cdump -y 1 0x68,可获得以下内容:
root@Cubian:/home/cubie#i2cdump -y 1 0x68 No size specified (usingbyte-data access) 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef 00: 14 31 16 04 14 08 14 03 8984 1a 20 02 00 00 04 ?1????????? ?..? 10: 09 08 88 00 2a 20 0c 4a 0081 30 02 10 00 05 00 ???.* ?J.?0??.?. 20: 00 08 4a 02 0a 28 48 88 0000 02 88 00 00 12 00 .?J??(H?..??..?. 30: 0a 01 48 04 c0 00 02 10 2000 11 04 a0 40 00 20 ??H??.?? .???@. 40: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ 50: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ 60: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ 70: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ 80: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ 90: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ a0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ b0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ c0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ d0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ e0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ f0: 00 00 00 00 00 00 00 00 0000 00 00 00 00 00 00 ................ root@Cubian:/home/cubie#
主要看前面的00~06地址的数据,对应的含义请下载DS1307的数据手册查看(这个我已经修改了,要是新的芯片,00地址上的数据为0x80,原因:00h 地址的第 7 位为器件时钟允许位(CH),此位为 1 则芯片未开始工作,即时钟未走时,所以在上电时单片机要先读出秒,并判断位 7(CH)是否为1,如为 1 要把该位清零写入秒寄存器(地址为 0 ), 并把其他的时间单元设定为默认值。 如果上电复位时读出的秒的最高位 CH 为 0,说明时钟已工作(前已对 CH清 0,且停电 后有备用电池),此时不能重写时间单元)
三、寄存器内容写入 如果向I2C设备中写入某字节,可输入指令i2cset -y 1 0x68 0x00 0x01 -y 代表曲线用户交互过程,直接执行指令 1 代表I2C总线编号 0x68 代表I2C设备地址,0x68为DS1307的地址 0x00 代表存储器地址 0x01 代表存储器地址中的具体内容
通过这个指令可以设置DS1307的时间数据
此扩展板上的RTC使用了超级电容为RTC供电保持数据,CB断电后RTC的时间数据也不会错误
这块扩展板我已做出一些,望大家支持,后期我还会继续深入开发
我还做了块继电器扩展板板型与CB1和CB2安装位相同,可以很容易安装到一起
继电器扩展板的链接:http://item.taobao.com/item.htm?spm=686.1000925.1000774.13.plrlo1&id=40680088523
|