TSHE 发表于 2024-8-20 21:54:24

I2C通讯数据接收不全问题,如何解决

本帖最后由 DebugLab 于 2024-8-21 00:17 编辑

使用8H8K64U单片机做从机和32F407ZE做主句进行通信,
1.8H依靠串口3中断和时序封装好的函数分别获取两种传感器数据,且串口中断获取数据的优先级低于I2C中断通信优先级
2.从8H自制的串口发出来数据是全的,
3.但通过I2C穿过来的数据却是不全,
4.S*M32通过定时器按规律发指令获取数据


如何解决这个问题


TSHE 发表于 2024-8-20 21:57:51

上面两张代码是32的,下面那张是51的主函数

晓飛飛 发表于 2024-8-21 08:13:37

调整一下数据沟通机制,比如这次请求上次的数据,每次读I2C都是读上次已经采集好的传感器数据,然后启动下次采集,采集好的数据填充到发送buffer等待下次读I2C,I2C从机中断程序里面要精简,避免占用过多时钟周期。

TSHE 发表于 2024-8-21 20:23:40

晓飛飛 发表于 2024-8-21 08:13
调整一下数据沟通机制,比如这次请求上次的数据,每次读I2C都是读上次已经采集好的传感器数据,然后启动下 ...

谢谢你的意见,我直接在获取上了做了改动,用了while循环,假如获取的数据为空继续获取直到获取到数据才会对下一位数据进行获取{:lol:}

21cnsound 发表于 2024-8-21 21:07:30

解决了就好。

不过,建议lz以后再问问题时注意标点符号和断句、错别字,否则读起来还是很吃力{:4_167:}
页: [1]
查看完整版本: I2C通讯数据接收不全问题,如何解决