查看: 238|回复: 21
收起左侧

[总线接口] 关于两块单片机的I2C通讯

[复制链接]
     

1

主题

5

帖子

15

积分

实习生

 楼主| 发表于 2017-8-10 23:14 | 显示全部楼层 |返回版面||阅读模式
本帖最后由 fffqqqh 于 2017-8-10 23:19 编辑

由于种种原因,现在有一块51的单片机和一块STM8S的单片机需要用模拟的I2C来进行通讯。
简单说下工作模式:51通过按键让STM8S开关机,然后STM8S传送数据到51上,51通过STM8S发过来的数据来点亮LED灯。
所以,现在打算用51来做主机,STM8S做从机。
请问,这样的情况用模拟的I2C怎么通讯啊?
在这里恳求各位大牛帮帮忙,想想法子

2

主题

43

帖子

130

积分

中级技术员

发表于 2017-8-11 09:16 | 显示全部楼层 |返回版面
STM8 有硬件IIC,开硬件IIC就好
     

70

主题

488

帖子

1468

积分

助理工程师

发表于 2017-8-11 13:44 | 显示全部楼层 |返回版面
本帖最后由 qinlu123 于 2017-8-11 13:45 编辑

模拟主机好办,模拟从机就费劲了。个人观点,模拟IIC从机还不如模拟UART呢。
     

13

主题

581

帖子

1810

积分

版主

发表于 2017-8-11 13:46 | 显示全部楼层 |返回版面
从机难...
     

1

主题

5

帖子

15

积分

实习生

 楼主| 发表于 2017-8-12 23:29 | 显示全部楼层 |返回版面
flove00 发表于 2017-8-11 09:16
STM8 有硬件IIC,开硬件IIC就好

现在只剩下 UART口可用,打算配置成普通的IO口
     

1

主题

5

帖子

15

积分

实习生

 楼主| 发表于 2017-8-12 23:30 | 显示全部楼层 |返回版面
qinlu123 发表于 2017-8-11 13:44
模拟主机好办,模拟从机就费劲了。个人观点,模拟IIC从机还不如模拟UART呢。 ...

用UART的过程中出现数据丢失的情况。。。所以才被迫用I2c
     

70

主题

488

帖子

1468

积分

助理工程师

发表于 2017-8-13 06:51 | 显示全部楼层 |返回版面
fffqqqh 发表于 2017-8-12 23:30
用UART的过程中出现数据丢失的情况。。。所以才被迫用I2c

UART丢数就找到丢数的原因,UART作为一个成熟的接口难道会随便丢数的吗?再说了UART会丢数难道IIC就不会吗?
      

16

主题

362

帖子

1384

积分

助理工程师

发表于 2017-8-13 12:22 | 显示全部楼层 |返回版面
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断的方式接收时钟.
51的另外一个口发送串行数据.

如果不需要双向通信, 用一个IO口做脉宽调制通信就好,可以省掉时钟线.
10年以上嵌入式系统软/硬件开发.
MCU-DSP-ARM,汇编-C-linux.
博客: jerrywu75.blog.163.com
     

0

主题

48

帖子

162

积分

中级技术员

发表于 2017-8-13 18:13 | 显示全部楼层 |返回版面
JerryWu75 发表于 2017-8-13 12:22
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断 ...

“做个简单的CLK/DAT串行通信”2线同步串行口就是I2C,想像SPI那样的话至少3线,片选没办法省略的,即便只有一个从机。
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-13 22:34 | 显示全部楼层 |返回版面
qinlu123 发表于 2017-8-11 13:44
模拟主机好办,模拟从机就费劲了。个人观点,模拟IIC从机还不如模拟UART呢。 ...

如果是单纯的2个CPU通信为什么模拟I2C从机就难呢,主机和从机不能共用一套I2C模拟代码吗?
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-13 22:36 | 显示全部楼层 |返回版面
xbwpc 发表于 2017-8-13 18:13
“做个简单的CLK/DAT串行通信”2线同步串行口就是I2C,想像SPI那样的话至少3线,片选没办法省略的,即便 ...

为什么片选没办法省略呢? 利用GPIO模拟SPI的话,为什么跟片选有关呢?
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-13 22:37 | 显示全部楼层 |返回版面
xbwpc 发表于 2017-8-13 18:13
“做个简单的CLK/DAT串行通信”2线同步串行口就是I2C,想像SPI那样的话至少3线,片选没办法省略的,即便 ...

SPI不能只用2根线吗? STM32就有2线模式,一个数据线,一根时钟线
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-13 22:38 | 显示全部楼层 |返回版面
JerryWu75 发表于 2017-8-13 12:22
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断 ...

     

1

主题

5

帖子

15

积分

实习生

 楼主| 发表于 2017-8-13 22:58 | 显示全部楼层 |返回版面
qinlu123 发表于 2017-8-13 06:51
UART丢数就找到丢数的原因,UART作为一个成熟的接口难道会随便丢数的吗?再说了UART会丢数难道IIC就不会 ...

你好,方便加下你Q吗?有些关于UART和I2C的问题想请教下您
     

70

主题

488

帖子

1468

积分

助理工程师

发表于 2017-8-14 08:47 | 显示全部楼层 |返回版面
fffqqqh 发表于 2017-8-13 22:58
你好,方便加下你Q吗?有些关于UART和I2C的问题想请教下您

兄弟听我的,别创新了,老老实实地用UART没错。还有你应该把项目细节发上来,这样论坛里的大神们才能给你出主意。就别加我QQ了,我只是半瓶醋而已。
      

63

主题

1495

帖子

5169

积分

版主

发表于 2017-8-14 15:56 | 显示全部楼层 |返回版面
主机可以使用模拟IIC,从机接收数据最好使用硬件IIC,大体思路是,从机收到主机发送的数据,触发硬件中断,执行相应的程序,
qq:641208111;技术交流群:377640799
大学电子竞赛预热赛开赛啦~千元大奖等你来拿火热进行中!!点击参加活动
欢迎加个人QQ:641208111一起交流合作
     

0

主题

48

帖子

162

积分

中级技术员

发表于 2017-8-14 20:50 | 显示全部楼层 |返回版面
feelhyq 发表于 2017-8-13 22:37
SPI不能只用2根线吗? STM32就有2线模式,一个数据线,一根时钟线

没有片选就没有字节同步,从机拿到一堆1和0但是不知道从哪到哪算一字节,除非在数据上做serdes编码,而做编码和解码的成本就很高了。
     

0

主题

48

帖子

162

积分

中级技术员

发表于 2017-8-14 20:52 | 显示全部楼层 |返回版面
feelhyq 发表于 2017-8-13 22:37
SPI不能只用2根线吗? STM32就有2线模式,一个数据线,一根时钟线

SPI外设省略NSS的条件是在外部用GPIO自行控制片选,并不是可以省略片选的意思。
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-14 22:08 | 显示全部楼层 |返回版面
xbwpc 发表于 2017-8-14 20:50
没有片选就没有字节同步,从机拿到一堆1和0但是不知道从哪到哪算一字节,除非在数据上做serdes编码,而做 ...

I2C也没有片选,他可以做到同步噢,同步是依靠时钟的
     

4

主题

768

帖子

2342

积分

初级工程师

发表于 2017-8-14 22:09 | 显示全部楼层 |返回版面
本帖最后由 feelhyq 于 2017-8-14 22:27 编辑
xbwpc 发表于 2017-8-14 20:52
SPI外设省略NSS的条件是在外部用GPIO自行控制片选,并不是可以省略片选的意思。 ...

SPI不要片选(不管是硬件控制片选还是GPIO控制)也可以正常在单片机通信的
*滑动验证:
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

关闭

热门推荐上一条 /1 下一条

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