完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用CubeMX生成的STM32G0B1工程,通过I2C读取EEPROM时,TXIS位一直保持0,导致无法发送从机地址。
调用的函数时:HAL_I2C_Mem_Read( hi2c1, EEPROM_ADDRESS | EEPROM_READ, address, I2C_MEMADD_SIZE_16BIT, pOutBuff, outBuffLen, 100); address为16位长度的。 根据手册,TXIS位发送中断状态位,在主发送模式时,当每个字节发送完成后,TXIS位才置1。那么I2C初始化完成后,TXIS位默认为0,在I2C_RequestMemoryRead()函数中先调用I2C_WaitOnTXISFlagUntilTimeout()检查TXIS位不是永远会失败吗? 该如何解决? |
|
相关推荐
1个回答
|
|
首先,您需要确保以下几点:
1. 确认您已正确初始化了I2C外设。检查您的CubeMX配置是否正确,并确保您已将引脚配置为I2C模式。 2. 根据您提供的代码,确认您所使用的地址是否正确。`EEPROM_ADDRESS`应为7位I2C从机地址。 3. 确认您的EEPROM设备是否正常工作。您可以尝试使用其他方法(如模拟I2C)读取EEPROM以验证其功能。 如果以上步骤都没有解决问题,您可以尝试以下方法来解决TXIS位一直保持为0的问题: 1. 检查时钟源配置是否正确。确保您的I2C时钟源配置正确,并且时钟频率与EEPROM设备的要求相匹配。 2. 调整I2C外设的时钟频率和超时时间。根据您的系统时钟频率和EEPROM设备的性能,您可能需要增加I2C的时钟频率或超时时间。 3. 确保在发送数据之前,I2C总线上没有其他设备正在使用。如果有其他设备在使用I2C总线,则可能会导致冲突和错误。 4. 检查I2C线路连接和电气特性。确保I2C线路连接正确,并且使用适当的上拉电阻。 如果以上方法仍然无法解决问题,您可能需要使用示波器或逻辑分析仪来监视I2C信号并排查故障。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1617 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1543 浏览 1 评论
977 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1595 浏览 2 评论
1863浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
644浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
515浏览 3评论
531浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
504浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:28 , Processed in 0.653819 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号