OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4838|回复: 6

请教大家一个I2C多机通讯的问题

[复制链接]

17

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2015-7-3
在线时间
68 小时
发表于 2015-11-16 15:30:58 | 显示全部楼层 |阅读模式
5金钱
主机就用原子的那个模拟主机的程序,从机是用了一个8位的PIC16F913单片机的硬件I2C从模式,从机发送数据给主机STM32,从机具体该怎么设置?

最佳答案

查看完整内容[请看2#楼]

回复【5楼】培风: --------------------------------- 在21IC论坛上再次看到你发的问题,再加上你尚未明白上面的回答,这里就再详细地说一下。我知道你是要从机发送矩阵按键的键值给主机 STM32发送给PIC从机地址,PIC从机在硬件上确认从机地址正确后就会产生应答信号,之后从机就可以发送键值给STM32了。这里主机也不需要发送数据地址,因为唯一的数据就是键值,主机只要一开启I2C通信,从机就知道需要将键值发送给主机。 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
发表于 2015-11-16 15:30:59 | 显示全部楼层
回复【5楼】培风:
---------------------------------
在21IC论坛上再次看到你发的问题,再加上你尚未明白上面的回答,这里就再详细地说一下。我知道你是要从机发送矩阵按键的键值给主机

STM32发送给PIC从机地址,PIC从机在硬件上确认从机地址正确后就会产生应答信号,之后从机就可以发送键值给STM32了。这里主机也不需要发送数据地址,因为唯一的数据就是键值,主机只要一开启I2C通信,从机就知道需要将键值发送给主机。

另外举个例子,如果PIC从机需要将键值,温度AD采样值,交流电流AD采样值发送给主机,再假设主机一次只能获取键值,温度AD采样值,交流电流AD采样值的其中一种数据。那么从机为了知道主机究竟想要哪种数据,就得要需要主机在发送完从机地址后,再多发送一个数据给从机做判断。这个时候通信过程就变成这样:

主机产生起始条件 -> 发送从机地址+W(写) -> 一个数据data(供从机判断出主机是需要什么数据) -> 主机重新产生起始条件-> 主机发送从机地址+R -> 从机发送主机需要的数据 -> 通信完后主机产生停止条件

那么主机上面的data这个数就是你所谓的“发送数据地址”了,和主机与EEPROM通过I2C通信过程一模一样,在与EEPROM通信时,这个数据就是你要读取一串数据的首地址。但这里称呼为数据,因为对于两个单片机之间的通信,除了从机地址外其他的都是数据 。

另外,如果主机真需要那么多不同的数据,其实在发送完从机地址+W后就可以直接接收完所有数据了。因为可以事先定义好这一串数据里哪个数据是分别代表键值、温度AD采样值、交流电流采样值的。上面之所以这么假设,只是为了让你明白从机地址和你所谓的“发送地址”的区别
回复

使用道具 举报

17

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2015-7-3
在线时间
68 小时
 楼主| 发表于 2015-11-16 15:33:08 | 显示全部楼层
从机是不是先发送从机的地址,还是发送接收地址啊,还是都发送啊,我被地址这弄糊涂了
回复

使用道具 举报

13

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
235
金钱
235
注册时间
2012-11-17
在线时间
18 小时
发表于 2015-11-16 21:51:03 | 显示全部楼层
回复【2楼】培风:
---------------------------------
只一个从机的话,主机发送(从机地址+R),如果地址正确,主机就可以接收从机的数据了;这我就用PIC和RL78试过
至于多从机,没试过,有空就试下,等待高人回答。
回复

使用道具 举报

5

主题

163

帖子

0

精华

高级会员

Rank: 4

积分
615
金钱
615
注册时间
2011-11-7
在线时间
180 小时
发表于 2015-11-16 22:40:45 | 显示全部楼层
多从机,每个从机的地址设置不一样就可以了,其他的和只有一个从机差不多,不过IIC在EFT测试的时候比较容易受干扰
回复

使用道具 举报

17

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2015-7-3
在线时间
68 小时
 楼主| 发表于 2015-11-17 08:20:42 | 显示全部楼层
回复【3楼】bj2008wyou:
---------------------------------
只有1个从机,我看芯片手册上从模式是发送7位接收地址+R再发送数据,是不是从机设置好从机地址就行了,不需要发送给主机,主机接收从机的数据是发送从机地址+R还要再发送接收地址吧?
回复

使用道具 举报

17

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
328
金钱
328
注册时间
2015-7-3
在线时间
68 小时
 楼主| 发表于 2015-11-20 09:17:17 | 显示全部楼层
回复【6楼】bj2008wyou:
---------------------------------
万分感谢!
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-18 07:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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