找回密码
 立即注册
查看: 418|回复: 4

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

[复制链接]

4

主题

10

回帖

46

积分

新手上路

积分
46
发表于 2024-8-20 21:54:24 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-8-21 00:17 编辑

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


如何解决这个问题

STM32甲醛获取

STM32甲醛获取

STM32温度获取

STM32温度获取

STC8H获取数据并转发

STC8H获取数据并转发



回复

使用道具 举报 送花

4

主题

10

回帖

46

积分

新手上路

积分
46
发表于 2024-8-20 21:57:51 | 显示全部楼层
上面两张代码是32的,下面那张是51的主函数
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-8-21 08:13:37 | 显示全部楼层
调整一下数据沟通机制,比如这次请求上次的数据,每次读I2C都是读上次已经采集好的传感器数据,然后启动下次采集,采集好的数据填充到发送buffer等待下次读I2C,I2C从机中断程序里面要精简,避免占用过多时钟周期。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

4

主题

10

回帖

46

积分

新手上路

积分
46
发表于 2024-8-21 20:23:40 | 显示全部楼层
晓*** 发表于 2024-8-21 08:13
调整一下数据沟通机制,比如这次请求上次的数据,每次读I2C都是读上次已经采集好的传感器数据,然后启动下 ...

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:452
  • 最近打卡:2025-05-01 06:20:50
已绑定手机

13

主题

1257

回帖

2971

积分

金牌会员

积分
2971
发表于 2024-8-21 21:07:30 | 显示全部楼层
解决了就好。

不过,建议lz以后再问问题时注意标点符号和断句、错别字,否则读起来还是很吃力
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:05 , Processed in 0.139862 second(s), 76 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表