[STM32F4] STM32F407硬件IIC读写AT24C02(转)

[复制链接]
777|3
 楼主| skyred 发表于 2022-1-17 16:22 | 显示全部楼层 |阅读模式
一直对i2c的配置和使用好奇,这次看到这个感觉很好,和大家分享一下。

编译环境:MDK5.18
库函数版本:V1.5.1
测试平台:原子探索者开发板

大多数人都说STM32的硬件IIC不稳定,等等,之前用官方的例程在103上面测试,不稳定,听说在F4上面好点,就弄了一下,喜欢白老鼠的朋友可以拿去测试一下

1、配置注意了(寄存器操作的朋友注意了)按照官方参考手册给的配置流程进行配置IIC相关的寄存器(我之前试过不按照官方这个,没成功,后续就用库函数来了)
3539161e5260cc14f9.png

2、大家注意看寄存器CR1的第7位,看手册说明
2512961e5262bd3da0.png

6093161e5263526cd2.png

官方也有相关经验手册供大家参考,大家请参考这个文档《时钟延展导致 I2C 通信不可靠》
所以,在初始化完成之后,我的代码中这位是置位的

3、在进行数据发送与读取过程,注意怎样清除相关的标志位,操作不能少了,否则意想不到的意外就发生了,操作流程在参考手册上也有(我用的是7位设备地址,至于10位的留给大家了)
286861e52666a244f.png
1080661e5267506ddf.png

9351261e5267f58169.png
314861e5268c4c5fd.png


4、特别注意发送操作与读取操作中EVx事件清标志位的方法
5、附件也上传几份官网的经验手册
6、奉上测试逻辑分析仪抓取的波形两份

3053461e526b61c34d.png

6332561e526beede16.png

这份代码在战舰V3开发板上面进行了一次测试,也读写正常,至于什么DMA发送与接收我就还没弄,过后打算试下用这个硬件做下IIC从模式看下行不行,同时大家也可以帮忙测试一下代码的稳定性和可靠性

在F407和F103上面进行移植,我这份代码做了自动适配的,只需要将相关的库函数和MDK中的define定义一下即可


原出处http://www.openedv.com/forum.php?mod=viewthread&tid=71743&highlight=%D3%B2%BC%FEIIC


我这里转的目的是,感觉帖子有些点很适合我,没有多余的废话,精简实用。


gouguoccc 发表于 2022-1-18 08:41 来自手机 | 显示全部楼层
嗯,这个很经典的应用。
豌豆爹 发表于 2022-1-18 09:06 来自手机 | 显示全部楼层
就喜欢这种没有多余的废话,精简实用的东西
 楼主| skyred 发表于 2022-1-19 13:39 | 显示全部楼层
豌豆爹 发表于 2022-1-18 09:06
就喜欢这种没有多余的废话,精简实用的东西

是的,我也是看着都是干货,才转的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

102

主题

740

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部