找回密码
 立即注册
楼主: FL_FL

请教I2C通信问题

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-2-14 11:35:50 | 显示全部楼层
本帖最后由 王昱顺 于 2024-2-14 11:41 编辑
FL_*** 发表于 2024-2-14 11:21
流程成功的关键在于:I2C主机模式下能否收到其它主机模式MCU广播的数据。 ...

STC的MCU主机模式无法接收其他主机数据。
只有在从机模式才能发送数据。
如果想要实现你所述的这种效果,可以关闭IIC状态,通过模拟IIC主机仲裁来使能当前设备使用主机还是从机模式。
具体实现可以是使用随机的延时函数(例如1ms~5ms)来避免主机抢总线,有一个主机抢到总线控制权后打开IIC主机模式,其余主机打开IIC从机模式等待接收注册信息

而且还有一个关键问题就是你查询IIC注册信息这一步,IIC从机只能被迫的接收通讯,如果从机都挂一起用广播地址,查询的时候会造成数据被与掉而出现错误数据。
更好的方式应该是每次主机抢到总线注册完成后计数并且广播通知其他没注册的从机自己这次使用的地址。其他从机变成主机注册的时候自行避开。
而注册成功的从机应该等待所有设备都注册完成后,一段时间IIC没有数据交流才自动切换进入从机地址。这样可以顺便得知所有的IIC注册设备列表
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5454

积分

版主

积分
5454
发表于 2024-2-14 11:42:46 | 显示全部楼层
FL_*** 发表于 2024-2-14 11:35
柜内模块数据交互用CAN有点浪费,设想的是柜内用I2C,柜外有线用CAN

这样的话还是需要自行实现一下IIC主机设备总线仲裁
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-03-02 13:13:00

2

主题

11

回帖

146

积分

注册会员

积分
146
发表于 2024-2-14 13:08:51 | 显示全部楼层
王*** 发表于 2024-2-14 11:42
这样的话还是需要自行实现一下IIC主机设备总线仲裁

初步考虑下图这种思路来做,不用总线仲裁。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-03-02 13:13:00

2

主题

11

回帖

146

积分

注册会员

积分
146
发表于 2024-2-14 13:09:19 | 显示全部楼层
新的注册流程
流程图1.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:419
  • 最近打卡:2025-05-02 06:28:49

24

主题

108

回帖

452

积分

中级会员

积分
452
发表于 2024-2-14 13:31:30 | 显示全部楼层
感谢分享,受教育了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-03-02 15:38:24

2

主题

22

回帖

86

积分

注册会员

积分
86
发表于 2024-2-26 17:01:12 | 显示全部楼层
请问大家接触过用STC8H8K64U与ESP32进行IIC通讯吗?
我尝试用ESP32作为IIC 主机,STC8H8K64U作为IIC从机。主机发送的数据  Wire.write(1);   ,从机能接收到,但是打印的结果是Read123=-10136
不清楚是哪里出现了问题,求教!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-03-02 15:38:24

2

主题

22

回帖

86

积分

注册会员

积分
86
发表于 2024-2-26 18:09:05 | 显示全部楼层
请问大家接触过用STC8H8K64U与ESP32进行IIC通讯吗?
我尝试用ESP32作为IIC 主机,STC8H8K64U作为IIC从机。主机发送的数据  Wire.write(1);   ,从机能接收到,但是打印的结果是Read123=-10136
不清楚是哪里出现了问题,求教!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2024-03-02 13:13:00

2

主题

11

回帖

146

积分

注册会员

积分
146
发表于 2024-3-2 11:16:14 | 显示全部楼层
HHJ*** 发表于 2024-2-26 18:09
请问大家接触过用STC8H8K64U与ESP32进行IIC通讯吗?
我尝试用ESP32作为IIC 主机,STC8H8K64U作为IIC从机。 ...

I2C能收到数据,通信应该没问题的,是不是数据的表现形式有问题,用16进制输出来看看。不行就降低数据发送的速率再试试。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2024-03-02 15:38:24

2

主题

22

回帖

86

积分

注册会员

积分
86
发表于 2024-3-2 15:31:11 | 显示全部楼层
本帖最后由 HHJuan 于 2024-3-2 15:32 编辑
FL_*** 发表于 2024-3-2 11:16
I2C能收到数据,通信应该没问题的,是不是数据的表现形式有问题,用16进制输出来看看。不行就降低数据发 ...

我这里有我遇到的问题和调试内容的说明,您方便的话,能帮我看一下吗?

https://www.stcaimcu.com/forum.php?mod=viewthread&tid=6938
STC8H8K64U与ESP32/Arduino的IIC通信问题

回复 支持 反对

使用道具 举报 送花

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

34

主题

2096

回帖

2206

积分

荣誉版主

积分
2206
发表于 2024-3-3 20:06:31 | 显示全部楼层
I2C总线也不是什么热插拔总线,自动分配从机地址有些弱需求的成分,不如从机模组设置一个拨码开关配置地址,成本高不了多少,但可靠性和可管理性增加很多。
睁开眼睛做场梦~~~
回复 支持 1 反对 0

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:46 , Processed in 0.144484 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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