STM32F10x_模拟I2C读写EEPROM

这篇博客介绍了如何使用STM32F10x通过模拟I2C通信协议来读写EEPROM(如AT24Cxx)。作者强调了学习I2C通信的重要性,并提供了常见串行通信的概述。文中详细解释了I2C的开始和停止条件、数据位传输、应答位信息,并展示了不规范的I2C写数据函数示例。博客还包括了EEPROM的读写操作步骤,并提供了一个简洁版和一个综合版的源代码工程供读者下载学习。
摘要由CSDN通过智能技术生成

推荐

分享一个大神的人工智能教程。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang

 

Ⅰ、写在前面

说到IIC,大家都应该不会陌生,我们初学单片机的时候或多或少都知道或了解过,甚至使用I2C控制过器件。但是,有多少人真正去深入理解,或者深入研究过I2C通信协议呢?

 

1、我们有必要学习I2C通信吗?

I2C作为常见串行通信的其中一种,在嵌入式领域中占有很重要的地位。原因在于我们嵌入式开发的产品中有很多设备都是使用I2C进行通信的。我们开始学习单片机开发的时候最先接触的应该是使用I2C操作EEPROM(如AT24C08)通信,这也是典型的I2C通信例子。其实还有很多常见的I2C通信设备,如温度芯片、触摸芯片、时钟芯片等,当你工作今后或多或少都会遇到I2C通信的设备。所以,如果你有时间的话,请花一定时间去研究学习一下I2C通信协议,当你以后工作中需要用到I2C设备,而你没有了解过,那个时候再去了解,恐怕项目的进度会因此而受到影响。

 

2、常见串行通信有哪些,我们又要了解哪些?

常见的串行通信:USART、I2C、SPI、CAN、USB等;我们需要学习哪些?这个问题笔者的建议都要学(在时间、条允许的 情况下)。想要做嵌入式开发,这些通信方式是我们常见的,因此需要掌握。

由于做技术这一行,要学到东西太多,如果你的时间真的有限,那么简单一点的(USART、I2C、SPI)你必须要弄明白,不然你真的有点“水”。这种简单的通信方式应该在面试中是经常问及的问题,如果你是一位刚毕业的大学生,你最好把这些东西你需要弄明白了才去面试。

 

I2C的读写对时序要求很高,所以,每一个函数都应尽量标准才行,在你自己编写I2C驱动,或借鉴网上的需特别注意(在下面I2C读写函数,我会举例说网上几种常见的不标准的函数)。

本文是使用普通IO软件模拟I2C通信,实现EEPROM(AT24Cxx)串行通信读写数据的文章,将结合I2C通信的时序和软件来讲述这种通信是如何实现的。模拟I2C的好处是移植方便,关于硬件SPI,我计划在下一篇文章讲述(网上说的“ST官网提供的I2C操作EEPROM实例有问题”是事实,有个地方确实存在不足,你知道是哪里吗? 请提前思考一下,下一篇文章揭晓答案)。

 

提供“简洁版”和“综合版”两个版本的源代码工程供大家下载学习,简洁版内容容易理解一点(本文以此版本讲述),“综合版”相对复杂一点,包含的判断信息更多,感兴趣的朋友可以下载源代码测试。

 

 

关于本文的更多详情请往下看。

 

Ⅱ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

 

提供下载的软件工程是基于Keil(MDK-ARM) V5版本、STM32F103ZE芯片,但F1其他型号也适用(适用F1其他型号: 关注微信,回复“修改型号”)。

 

模拟I2C读写EEPROM简洁版(不切换SDA方向、不检测ACK位)实例源代码工程:

http://yunpan.cn/c6WawSRZLjJIa  访问密码

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongerHuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值