STM32 USB相关知识扫盲(我在高职教STM32I2C通信之读写EEPROM)
STM32 USB相关知识扫盲(我在高职教STM32I2C通信之读写EEPROM)这个综合实验的主程序见代码清单8,大家可以结合上面的实验效果和代码中的注释信息来阅读。这个实验涉及了UART串口通信、EEPROM读写操作、LCD1602液晶显示,前面都通过专门的章节分别讲过了,现在我们要把它们综合在一个实验里,就比较考验融会贯通和举一反三的能力了。写个点亮小灯好简单,但是我们想真正学好单片机和嵌入式,必须得学会这种综合程序的应用,实现多个模块同时参与工作。本节的实验例程,有点类似广告屏。上电后,液晶屏的第一行显示固定标题(内容自定),第二行显示EEPROM从0x20地址开始的16个字符,即第2、3两页里的内容。我们可以通过串口通信来改变EEPROM这两页的数据(不超过16个字符),并且下次上电的时候,液晶屏直接会显示更新过的内容。此外,如果向串口发送的消息是“RESET”,则写入一串代表复位的信息。具体效果如图12所示,同时也给出了演示视频。图12 综合实验效果
大家好,我是老耿,高职青椒一枚,一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次,同行应该都懂的,老师在课堂上教学几乎是没什么成就感的。正是如此,才有了借助头条平台寻求认同感和成就感的想法。在这里,我准备陆续把自己花了很多心思设计的教学课件分享出来,如果您正是一名单片机爱好者或是一名同行,欢迎点赞 关注,各位的支持是本人持续输出的动力,多谢多谢!#30天学会STM32##STM32单片机##单片机#
前面我们详细分析了I2C通信的协议和规范,并编写了驱动程序。接下来我们就该使用这些驱动函数,与开发板上的I2C器件进行通信了。本章我们关注开发板上的AT24C02芯片,它是一个采用了EEPROM工艺的存储器,读写操作通过I2C接口完成。因此从现在开始,I2C这类通用的协议与AT24C02这个具体的存储器就要合体了。不过,大家一定要分清楚,I2C是一种通信协议,有着严密的通信时序逻辑要求,而AT24C02是一个器件,只是这个器件采用了I2C协议的接口与STM32单片机相连而已,二者并没有必然的联系,存储器芯片可以用其它接口,I2C也可以用在其它很多器件上。
【学习目标】
- 了解常用存储器的类型及其特征
- 加深对I2C通信时序的理解
- 领悟I2C驱动与应用的分层理念和相互关联
本章关注如何调用前面编写的I2C驱动程序来完成对AT24C02存储器的读写,为了不让篇幅太长,本章打算分四个部分来讲解,本文是第四部分。
五、EEPROM/串口收发/液晶显示的综合实验5.1 任务描述本节的实验例程,有点类似广告屏。上电后,液晶屏的第一行显示固定标题(内容自定),第二行显示EEPROM从0x20地址开始的16个字符,即第2、3两页里的内容。我们可以通过串口通信来改变EEPROM这两页的数据(不超过16个字符),并且下次上电的时候,液晶屏直接会显示更新过的内容。此外,如果向串口发送的消息是“RESET”,则写入一串代表复位的信息。具体效果如图12所示,同时也给出了演示视频。
图12 综合实验效果
这个实验涉及了UART串口通信、EEPROM读写操作、LCD1602液晶显示,前面都通过专门的章节分别讲过了,现在我们要把它们综合在一个实验里,就比较考验融会贯通和举一反三的能力了。写个点亮小灯好简单,但是我们想真正学好单片机和嵌入式,必须得学会这种综合程序的应用,实现多个模块同时参与工作。
5.2 源码剖析这个综合实验的主程序见代码清单8,大家可以结合上面的实验效果和代码中的注释信息来阅读。
代码清单8 综合实验主程序源码
我们在主函数之前(第31~39行)补充了一个比较函数Memory_Cmp(),用来判断两个字符串是否一致,因为我们的需求里有对“RESET”这个特殊字符串的功能要求。此外,把串口接收的消息保存下来的代码(第61~72行)已经在“串口通信”那章里详细分析过了,想了解具体原理的朋友可翻看本人以前发布的“我在高职教STM32——串口通信(四)(五)”两篇文章。接着,就是根据消息的内容和长度做不同的处理,处理完再把16个字符写入EEPROM指定的两页里。
至此,有关EEPROM的编程实践就全部讲解完了,希望同学们能认真的结合I2C的工作时序和驱动程序,把工程代码一行一行编写起来,最终巩固下来。如果你有兴趣,还可以在我们综合实验的基础上再增加LED、按键和定时器,完成一个功能更全的项目,比如简易密码锁等。
(第四部分完,共四部分)