完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用芯片:M452LG6AE
环境:通过I2C去读取电池管理芯片OZ9313,OZ9313支持SMBus。上拉电阻原为4.7K,因clock波形不好(tr时间长),后面改到1.2K。 故障现象: M452芯片启动后能够正常通信获取电池信息,但是过一段时间(几小时)后就读取不到芯片上的信息,调试代码发现I2C读取超时,示波器抓取波形为SDA一直为高电平,SCL一直有正常的clock波形(波形还挺好~), 更改代码尝试在通信失败后调用I2C_STOP(I2C0)(代码如下),会卡死在while循环中, static __INLINE void I2C_STOP(I2C_T *i2c) { (i2c)->CTL |= (I2C_CTL_SI_Msk | I2C_CTL_STO_Msk); while(i2c->CTL I2C_CTL_STO_Msk); } 更改代码在通信失败后定时重新初始化I2C中断,结果还是读取超时,获取不到信息。 |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
659浏览 3评论
574浏览 2评论
389浏览 1评论
409浏览 1评论
373浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 09:24 , Processed in 1.097003 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号