回答

收藏

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

#板卡评测 #板卡评测 2784 人阅读 | 0 人回复 | 2020-08-16

本帖最后由 武器哈12 于 2020-8-16 10:37 编辑

    最近两周比较忙,没有更新试用贴,今天来做一下RTC实时时钟实验,这块开发板上带了一片DA1338芯片,原理图如下图所示:
   

      DS1338采用IIC协议通信,具体读写时序如下图所示:


    通过分析 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 模块主要完成时间寄存器的读写控制,状态机状态较为简单。

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, 并将一个初始时间写入,然后循环不断的读取时间寄存器。


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 端口
    下载程序后观察结果:
   

分享到:
回复

使用道具 举报

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

本版积分规则

关闭

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