完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近刚买了块金牛的开发板,用的STM32F107VC的MPU,在网上搜了半天找了些资料,但测试过程中发现通信不太稳定,在自己的板子上调试了几天,修改了几个地方,现在通过i2c读写,24CL02正常,且稳定。
下面整理些在开发中需要注意的问题,供初学者参考,并附上软件包。供大家研究。 代码是参照网上一位朋友的,在细节部分做了修改,在此表示感谢。 STM32 I2C开发注意问题,非中断方式 1.GPIO端口配置阶段,需要首先使能I2C时钟,然后再配置端口工作方式,否则无效,配置SDA、SCL端口为开漏输出模式,注意与ARM不同的是即使使能IO的特殊功能,仍然需要手动设置GPIO的工作方式; 2.对于I2C器件的读写,由于时序的原因,有的时候读写状态寄存器时会有问题,不像51那样可以自己控制时序与数据,操作起来比较方便,在查询和清除状态寄存器时同样要注意时序问题,否则可能不能正确捕捉到。比如在查询i2c总线是否被占用时,发送完地址数据需要延时一点时间,否则不能捕捉到ADDR置位信号。具体参看程序代码; 3.模拟I2C读写时,如果一次读取多个字节,总是传输不稳定,经过反复测试,将多字节操作全部由单字节操作实现,经实践发现通信比较稳定; 4.STM的数据手册写得确实不怎么样,对于在i2c通信过程中,产生的状态信息说明很不清楚,不要按照数据手册上的去研究通信过程中各个状态寄存器的单个或组合值,直接看它提供的库文件,它已经把各个状态时的状态寄存器组合值定义好了,拿过来直接用吧。 5.切记,在通信过程中,不是每一个状态仅置位一个状态位,而是多个状态位,否则你怎么搞都搞不通的。 以上是我在开发过程中的一点心得,希望对大家有帮助,也希望有心的人可以对驱动加以改进,大家共同研究。 另外说明: 代码中除了i2c,还有lcd的代码,lcd的代码是开发板带的,如果不用直接注释掉就可以了。 用stm32f107最好用mdk3.8以上的版本,另外如果要用到这个芯片的一些外围接口,最好安装RL-ARM库,因为现在对stm32的支持比较少,开发板上的例程很多都是用的stm的RL-ARM中的库文件。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1641 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1562 浏览 1 评论
990 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
691 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1610 浏览 2 评论
1869浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
655浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
525浏览 3评论
541浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
514浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 14:13 , Processed in 0.932750 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号