AC78013FCLA芯片: 硬件I2C作为slave dma模式通信异常的坑
本帖最后由 fanchenxinok 于 2022-7-5 13:20 编辑芯片是autochips的AC78013FCLA, 硬件I2C作为slave端和master通信 ,在系统上电的时候主机会发3个字节命令,从机回两个30个字节,这个过程重复执行三次。三次通信过程有1%的概率通信失败,主机收不到从机的ACK。原来波形会有点干扰,后面加了滤波电容,测试了波形也满足I2C保持时间的要求,但是还是有几率出现通信超时失败。现在只能怀疑芯片的I2C硬件有坑了。通信失败时打印的status0的状态经常是0x6c或0xed。 听说硬件IIC不好用? 是通信的速度太快了吗 这个硬件iic应该问题不大。 为什么不使用串口呢 这个收不到应答吗 saservice 发表于 2022-7-8 09:36
是通信的速度太快了吗
速度不到100K, 75K左右 bestwell 发表于 2022-7-8 16:43
这个收不到应答吗
发送的时候,从机端DMA发送完毕的中断没有触发,发送超时,主机端linux kernel会打印ACK error的log。应该是主机在读的时候发送从机地址没有得到从机的应答。 updownq 发表于 2022-7-8 15:37
这个硬件iic应该问题不大。
开启定时器监控I2C status0寄存器 时不时就会出现0x6c和0xed的异常状态,都没有进行通信 正常状态应该是0x08才对。说明硬件I2C的状态机很不稳定啊。 感觉硬件iic不好用呢 看看主程序有没有判断是否成功呢 这个iic地址如何判断的 硬件I2C做从机,如何快速相应? chenci2013 发表于 2022-7-9 20:32
这个iic地址如何判断的
主机也是硬件i2c 谢谢楼主分享避坑经验,哈哈。 哈哈,楼主淡定啊! pixhw 发表于 2022-7-9 13:13
看看主程序有没有判断是否成功呢
master端不是我们产品 没法分析 有没有人遇到同样问题的? 看来不敢轻易用硬件IIC啊! 我还是比较喜欢自己模拟iic