路人甲

路人甲

0个粉丝

3

问答

0

专栏

0

资料

路人甲  发布于  2013-04-26 14:19:40
采纳率 0%
3个问答
5564

i2c总线读写外部RTC时钟

 
本帖最后由 路人甲 于 2013-4-26 14:21 编辑

       在做一个修改系统时间的程序时,我发现系统修改后的系统时间会在十多秒后自动根据RTC时钟更新。只有修改了RTC时钟才能达到修改系统时间的目的。
       开发板上的外部RTC时钟芯片是DS1307。通过i2c总线试着读取DS1307寄存器,得到了正确的时间信息,也能正确的写入时间信息。
       于是通过gpio-i2c模块读写DS1307,达到了修改系统时间的目的。
     注意DS1307中的数据是用BCD码保存的。[code]void ReadRtc(unsigned char * buf)
{
        int i=0;
        int fd = -1;
        int ret;
        int value;
        int cur_addr;
        int reg_value;
        fd = open("/dev/gpioi2c", 0);
       
        if(fd < 0)
        {
                printf("open gpio_i2c dev error\n");
        }

        for (cur_addr=REG_ADDR_SEC; cur_addr     {
        value = ((DEVICE_ADDR&0xff)<<24) | ((cur_addr&0xff)<<16);   
        ret = ioctl(fd, GPIO_I2C_READ, &value);            
        reg_value = value&0xff;
        //printf("0x%x 0x%x\n", cur_addr, reg_value);
        buf = reg_value;
                i++;
    }
        for(i=0;i<7;i++)
        {
                buf = BCD2HEX(buf);
                //if(i==3) to be fixed 12/24 model
        }

[/code]注意DS1307中的数据是用BCD码保存的。
我来回答
回答4个
时间排序
认可量排序

ebaina_

0个粉丝

82

问答

40

专栏

0

资料

ebaina_ 2013-04-26 14:36:00
认可0
:):):) 欢迎继续发布经验帖子

rafael_wl

0个粉丝

12

问答

0

专栏

7

资料

rafael_wl 2013-12-10 19:54:12
认可0
我也是调试海思的IIC 配置DS1307 RTC卡主了,LZ调出来了么? 我的的现象是 配置下去时钟不走,读出数据也不正确。

falloutmx

1个粉丝

15

问答

0

专栏

0

资料

falloutmx 2013-12-11 09:15:12
认可0
先验证I2C读写没问题

明月照我心

0个粉丝

0

问答

0

专栏

0

资料

明月照我心 2014-04-02 13:39:51
认可0
学习了,感谢LZ分享。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区