内存bug
大家有遇到这样的情况吗iic的中断开启的时候总线有干扰之类的会导致内存中一个0x100的数变成0x00
这个用什么芯片,主机还是从机,硬件I2C还是模拟I2C。问题描述太少,不好回复。 eric2013 发表于 2023-11-30 08:54
这个用什么芯片,主机还是从机,硬件I2C还是模拟I2C。问题描述太少,不好回复。
硬件iic 芯片是一国产的仿的stm32f103的,做从机。开了时钟拉伸,有概率出现address应答后,scl拉低的现象,发现是长度突然变成0,没查到有内存溢出堆栈不够之类的现象。而且现象只出现在地址应答后,应该不是内存溢出之类的。 yuanzhongda 发表于 2023-11-30 10:11
硬件iic 芯片是一国产的仿的stm32f103的,做从机。开了时钟拉伸,有概率出现address应答后,scl拉低的现 ...
因为从机是发送256字节,用的中断方式,如果内存覆盖逸出之类的,在数据传输过程中应该也有这个现象,但是故障复现是只是在address应答之后 遇到过类似的,但是在强干扰情况下。建议与主机侧一起单步调试下 I2c主要用模拟的,硬件的测试过103和国产的在工业环境下总是会出问题 yuanzhongda 发表于 2023-11-30 10:11
硬件iic 芯片是一国产的仿的stm32f103的,做从机。开了时钟拉伸,有概率出现address应答后,scl拉低的现 ...
主机要求支持时钟拉伸? 庄永 发表于 2023-11-30 19:24
主机要求支持时钟拉伸?
从机要分地址处理不同事物,所以还是开着吧,不开可能处理不过来 emwin 发表于 2023-11-30 13:04
遇到过类似的,但是在强干扰情况下。建议与主机侧一起单步调试下
单步不太行,因为不好复现,复现一次挺久的 yuanzhongda 发表于 2023-12-1 08:37
从机要分地址处理不同事物,所以还是开着吧,不开可能处理不过来
有可能是时钟拉伸支持不好,自己用软件实现一个试试。另外
1、你做从机拉低时钟,要保证主机也支持时钟拉伸,会等你
2、IO是不是已经配置成开漏了
页:
[1]