0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于fpga的ds1337读写控制

FPGA研究院 来源:数字站 2024-07-17 11:33 次阅读

01分析

前文对ds1337的功能做了详细讲解,FPGA控制不需要使用中断功能,并且默认晶体振荡器处于工作状态。所以在ds1337处于工作状态后,先对日历相关寄存器进行初始化,然后每隔一段时间读取日历寄存器的数据,通过ILA抓取初始化和读出的数据,查看ds1337芯片是否正常工作,最后把分秒的时间通过两个数码管显示。

ds1337芯片的原理图如下所示,通过I2C总线进行通信

wKgaomaXO7WAU12kAAIlgG2Ol5o416.jpg

图1 ds1337原理图

4位数码管采用两片74hc595芯片进行驱动,该芯片的驱动数码管的原理可以在前面的一篇文章中查看。

wKgaomaXO7WAZaIvAANylHMiM68002.jpg

图2 数码管原理图

顶层模块的框图如下所示,包含一个ds1337的读写控制模块ds1337_drive,I2C接口驱动模块iic_drive,另外两个模块用于驱动数码管显示分和秒的数据。

此处I2C采用连续地址读写方式,由于只需要对日历寄存器进行读写,所以只需要读写前七个寄存器的数据即可。上电后对连续的7个地址数据进行初始化,然后每隔500ms读取一次前面七个寄存器的数据。

由于前面设计I2C驱动模块时,对于多字节数据,会先发高位,所以秒寄存器的数据会在高字节,年寄存器的数据会在最低的字节中。后面数码管显示秒和分的数据,也是对读取的高两个字节的数据进行显示。

wKgaomaXO7WAYbDcAACMjT6Ag_w205.jpg

图3 顶层框图

其实上述框图中I2C的驱动模块,数码管的驱动模块在前文都已经提供且详细讲解了,本文只是调用这些通用模块,根据原理图稍作修改即可。这些模块的代码本文就不讲解了,需要了解的可查看前文,需要代码的可以在工程中进行查看。

ds1337读写控制模块也很简单,只需要上电后先对ds1337进行初始化,初始化具体数值采用参数化设置。然后在I2C驱动模块空闲500ms后读取日历寄存器的数据。对应代码如下所示:

02上板调试

由于此处并没有ds1337芯片的仿真模型,可以使用eeprom的I2C仿真模型替代。由于是多字节读写,前文eeprom的仿真模型对多字节数据的仿真也不支持,所以本文就不对工程进行仿真,直接使用ILA在线调试工具抓取I2C读写时序,来判断ds1337是否读写成功。

说到这里,其实对于ILA使用不熟练的同学,可以观察一下我对ILA的例化,顶层的ILA就可以抓取所有底层模块中的信号,并且不需要把底层模块信号从端口引出,就是利用”.”这个符号实现的。

由于ds1337的寄存器中的数据采用BCD码进行编码,则ILA抓取的数据使用十六进制进行显示,可以直接认为是对应的十进制数据。

顶层初始化设置的ds1337初始时间为2年3月15日星期天11时37分42秒,使用ILA抓取初始化波形如下所示:

wKgZomaXO7WAdjlXAAE8V54zz_I772.jpg

图4 抓取初始化时序

将初始化的开始信号放大,结果如下图所示,需要初始化的数据为56’h42371100150302,表示2年3月15日星期天11时37分42秒,由于先写高位数据,所以秒在高字节,年在低字节数据。

wKgZomaXO7WANpx8AADApElhwEE341.jpg

图5 放大初始化数据

I2C初始化写时序如下图所示,黄色信号表示I2C双向数据信号,红色信号表示I2C的时钟信号,而天蓝色表示该模块的I2C数据输出,紫红色信号表示I2C的数据输出使能信号,低电平表示从机应答,高电平表示主机输出信号。

首先输出起始位之后,输出器件地址,然后再输出寄存器地址0,之后就写入7字节的数据,数据写完之后发送停止位,初始化写入完成。

wKgZomaXO7WAewsaAAD2zPY2rqc474.jpg

图6 I2C写时序放大

ds1337初始化之后,就会按每秒计时运行,然后抓取读ds1337芯片日历寄存器的波形,结果如下所示。粉色信号就是抓取的I2C读取信号rdata,抓取的数据为56’h57371100150302,表示2年3月15日星期天11时37分57秒,由于经过了一段时间,所以读取的数据相对初始值已经过了几秒了。

wKgZomaXO7WAQlNPAAExeG8U1lg838.jpg

图7 I2C读时序

就不对时序进行分析了,前文读写eeprom的时候已经对I2C时序进行了详细分析,在经过一段时间,抓取读取时序如下所示,读取的数据为56’h113811001503 02,表示2年3月15日星期天11时38分11秒。

wKgaomaXO7WAKUGTAAE-HS8hTMI725.jpg

图8 I2C读时序

最后数码管的显示如下所示,初始化的时为37分42秒,之后就一直运行。

本文工程就是对ds1337的功能做了验证,也是对I2C模块的连续读写能力再次进行测试,功能均正常。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21663

    浏览量

    601670
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119977
  • 数码管
    +关注

    关注

    32

    文章

    1874

    浏览量

    90921
  • 晶体振荡器
    +关注

    关注

    9

    文章

    615

    浏览量

    29042
  • DS1337
    +关注

    关注

    0

    文章

    4

    浏览量

    6375

原文标题:基于fpga的ds1337读写控制

文章出处:【微信号:FPGA研究院,微信公众号:FPGA研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    DS1337/DS1337C pdf datasheet (

    The DS1337 serial real-time clock is a low-powerclock/calendar with two programmable
    发表于 08-10 10:38 36次下载

    DS1337 时钟芯片在 C8051F 上的实现

    DS1337串行实时时钟芯片是一种低功耗、全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出。其地址和数据可通过I2C总线串行传输,能提供秒、分、时、日、星期、月和年等信息。
    发表于 12-30 16:13 3887次阅读

    DS1337S+T&R 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337S+T&R相关产品参数、数据手册,更有DS1337S+T&R的引脚图、接线图、封装手册、中文资料、英文资料,DS1337S+T&R真值表,
    发表于 11-18 19:28
    <b class='flag-5'>DS1337</b>S+T&R 时钟/定时 - 实时时钟

    DS1337U+ 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337U+相关产品参数、数据手册,更有DS1337U+的引脚图、接线图、封装手册、中文资料、英文资料,DS1337U+真值表,DS1337
    发表于 11-18 20:09
    <b class='flag-5'>DS1337</b>U+ 时钟/定时 - 实时时钟

    DS1337S+ 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337S+相关产品参数、数据手册,更有DS1337S+的引脚图、接线图、封装手册、中文资料、英文资料,DS1337S+真值表,DS1337
    发表于 11-18 20:09
    <b class='flag-5'>DS1337</b>S+ 时钟/定时 - 实时时钟

    DS1337+ 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337+相关产品参数、数据手册,更有DS1337+的引脚图、接线图、封装手册、中文资料、英文资料,DS1337+真值表,DS1337+
    发表于 11-18 20:10
    <b class='flag-5'>DS1337</b>+ 时钟/定时 - 实时时钟

    DS1337C# 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337C#相关产品参数、数据手册,更有DS1337C#的引脚图、接线图、封装手册、中文资料、英文资料,DS1337C#真值表,DS1337
    发表于 11-18 20:17
    <b class='flag-5'>DS1337</b>C# 时钟/定时 - 实时时钟

    DS1337 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337相关产品参数、数据手册,更有DS1337的引脚图、接线图、封装手册、中文资料、英文资料,DS1337真值表,DS1337管脚等资
    发表于 11-18 20:55
    <b class='flag-5'>DS1337</b> 时钟/定时 - 实时时钟

    DS1337U 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337U相关产品参数、数据手册,更有DS1337U的引脚图、接线图、封装手册、中文资料、英文资料,DS1337U真值表,DS1337U
    发表于 11-18 20:56
    <b class='flag-5'>DS1337</b>U 时钟/定时 - 实时时钟

    DS1337S 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337S相关产品参数、数据手册,更有DS1337S的引脚图、接线图、封装手册、中文资料、英文资料,DS1337S真值表,DS1337S
    发表于 11-18 20:56
    <b class='flag-5'>DS1337</b>S 时钟/定时 - 实时时钟

    DS1337C#T&R 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337C#T&R相关产品参数、数据手册,更有DS1337C#T&R的引脚图、接线图、封装手册、中文资料、英文资料,DS1337C#T&R真值表,
    发表于 11-18 21:16
    <b class='flag-5'>DS1337</b>C#T&R 时钟/定时 - 实时时钟

    DS1337S/T&R 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337S/T&R相关产品参数、数据手册,更有DS1337S/T&R的引脚图、接线图、封装手册、中文资料、英文资料,DS1337S/T&R真值表,
    发表于 11-21 22:49
    <b class='flag-5'>DS1337</b>S/T&R 时钟/定时 - 实时时钟

    DS1337U/T&R 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337U/T&R相关产品参数、数据手册,更有DS1337U/T&R的引脚图、接线图、封装手册、中文资料、英文资料,DS1337U/T&R真值表,
    发表于 11-21 22:49
    <b class='flag-5'>DS1337</b>U/T&R 时钟/定时 - 实时时钟

    DS1337S+C01 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337S+C01相关产品参数、数据手册,更有DS1337S+C01的引脚图、接线图、封装手册、中文资料、英文资料,DS1337S+C01真值表,
    发表于 11-22 19:26
    <b class='flag-5'>DS1337</b>S+C01 时钟/定时 - 实时时钟

    DS1337U+T&R 时钟/定时 - 实时时钟

    电子发烧友网为你提供Maxim(Maxim)DS1337U+T&R相关产品参数、数据手册,更有DS1337U+T&R的引脚图、接线图、封装手册、中文资料、英文资料,DS1337U+T&R真值表,
    发表于 11-24 20:11
    <b class='flag-5'>DS1337</b>U+T&R 时钟/定时 - 实时时钟