查看: 1276|回复: 0

[评测分享] 【ALINX和紫光同创PGL12G开发板】-RTC实时时钟 试用4

[复制链接]
  • TA的每日心情
    开心
    2020-7-25 10:37
  • 签到天数: 40 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2020-8-16 10:33:26 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 武器哈12 于 2020-8-16 10:37 编辑

        最近两周比较忙,没有更新试用贴,今天来做一下RTC实时时钟实验,这块开发板上带了一片DA1338芯片,原理图如下图所示:
        1.JPG
          DS1338采用IIC协议通信,具体读写时序如下图所示:
    2.JPG
    3.JPG
        通过分析 DS1338 读写时序,ds1338_i2c 模块用于读写单个 DS338 寄存器的数据,而数据的获取通过调用 I2C 总线模块 i2c_master_top;ds1338 模块的作用是用于设置或读取秒、分、时、周、日、月、年等寄寄存器的值;ds1338_test 模块完成时间的设置和读取;顶层 top 模块作用是调用 uart_send 模块把 RTC 的时间通过串口显示出来。

        ds1338_i2c 模块完成 DS1338 寄存器读写控制。

      
    信号名称
      
    方向
    说明
    clk
    in
    时钟输入
    rst
    in
    异步复位输入,高复位
    i2c_sda
    inout
    i2c 数据
    i2c_scl
    inout
    i2c 时钟
    cmd_read
    in
    读寄存器请求,发出请求时准备好地址
    cmd_write
    in
    写寄存器请求,发出请求时准备好地址和数据
    cmd_read_ack
    out
    读寄存器应答,应答时读取数据有效
    cmd_write_ack
    out
    写寄存器应答
    read_addr
    in
    读寄存器地址
    write_addr
    in
    写寄存器地址
    read_data
    out
    读出的数据
    write_data
    in
    写寄存器数据
    ds1338_i2c 端口
    ds1338 模块主要完成时间寄存器的读写控制,状态机状态较为简单。
    4.JPG
    ds1338 模块状态机




      
    信号名称
      
    方向
    说明
    clk
    in
    时钟输入
    rst
    in
    异步复位输入,高复位
    ds1338_i2c_sda
    inout
    ds1338 数据线
    ds1338_i2c_scl
    inout
    ds1338 时钟线
    write_time_req
    in
    DS1338 写时间请求,请求发出时,时间数据write_second 、 write_minute  、 write_hour 、  write_date、write_month、write_week、write_year 要
      
    有效
    write_time_ack
    out
    写时间请求应答
    write_second
    in
    写时间:秒,BCD 码,00-59
    write_minute
    in
    写时间:分,BCD 码,,00-59
    write_hour
    in
    写时间:时,BCD 码,,00-23
    write_date
    in
    写时间:日,BCD 码,,01-31
    write_month
    in
    写时间:月,BCD 码,,01-12
    write_week
    in
    写时间:周,BCD 码,,01-07
    write_year
    in
    写时间:年,BCD 码,,00-99
    read_time_req
    in
    读时间请求
    read_time_ack
    out
    读时间请求应答
    read_second
    out
    读时间:秒,BCD 码,00-59
    read_minute
    out
    读时间:分,BCD 码,,00-59
    read_hour
    out
    读时间:时,BCD 码,,00-23
    read_date
    out
    读时间:日,BCD 码,,01-31
    read_month
    out
    读时间:月,BCD 码,,01-12
    read_week
    out
    读时间:周,BCD 码,,01-07
    read_year
    out
    读时间:年,BCD 码,,00-99
    DS1338 模块端口
    DS1338_test 模块主要 CH 状态检测,CH 位于秒寄存器的 BIT7 位,上电后首先读取时间,判 断秒寄存器的 CH 状态,如果为高,表示 DS1338 暂停,状态机进入“S_WRITE_CH”,将 CH 写 0, 并将一个初始时间写入,然后循环不断的读取时间寄存器。


    5.JPG
    DS1338_test 状态机

      
    信号名称
      
    方向
    说明
    clk
    in
    时钟输入
    rst
    in
    异步复位输入,高复位
    ds1338_i2c_sda
    inout
    ds1338 数据线
    ds1338_i2c_scl
    inout
    ds1338 时钟线
    read_second
    out
    时间:秒,BCD 码,00-59
    read_minute
    out
    时间:分,BCD 码,00-59
    read_hour
    out
    时间:时,BCD 码,00-23
    read_date
    out
    时间:日,BCD 码,01-31
    read_month
    out
    时间:月,BCD 码,01-12
    read_week
    out
    时间:周,BCD 码,01-07
    read_year
    out
    时间:年,BCD 码,00-99
    DS1338_test 端口
        下载程序后观察结果:
        6.JPG

    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 11:37 , Processed in 0.111366 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.