完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
板上接了一块 FT24C32A 的E2PROM, 挂在在 I2C2, SCL-->PB10, SDA-->PB11, 写数据地址是16位,2字节
同样的代码在F4上读写正常,但是无法在 V307上读取正确的数据。 但是, 进入Debug模式,利用单步跳过的方式走代码,又能读取出正确的数据。 读和写的代码中都已经做了等待总线空闲处理,全速运行时能够走完,但是打印出的数据不对。 官方例程也无法正常打印,会卡在I2C的某个状态中。 把 'E' 写入, 再读出放入 ch2中。 打印出来的是方块,%d打出来的是-95。 Debug中,走到读出寄存器值时,已经正确读出来了。 最后正确打印出 'E'。 等待总线空闲程序,放在写字节函数的结尾、读字节函数的开头。 请问问题原因在哪里,另外还有一个奇怪的问题,在写和读函数中间加入多个 printf 函数,不会打印这些信息,调试代码会发现进入I2C总线忙碌状态。 不明白为什么在没有printf函数的情况下,能够走完程序,不影响总线,而加了多个printf函数,会影响I2C总线。 更奇怪的事,反复进出调试模式,只是点调试和停止调试这两个按钮,这些printf函数又都能打印出来,不明白为什么会这样。 |
|
相关推荐
1个回答
|
|
您好,若你使用官方例程也有问题,应该是卡死在EV6事件,主要是由于在判断EV6事件的时候,EEPROM此时还在写入数据,地址发送了过去,但并没有产生应答,可在判断EV6事件加一个延时,应该可以解决该问题,如下图。附件为测试例程,可测试一下。后续若有问题,可通过邮箱和我联系(lzs@wch.cn)
IIC_EEPROM.zip |
|
|
|
只有小组成员才能发言,加入小组>>
525 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2904 浏览 2 评论
2400 浏览 1 评论
872浏览 2评论
691浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
420浏览 1评论
534浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
816浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 07:05 , Processed in 1.090405 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号