打印
[总线接口]

关于两块单片机的I2C通讯

[复制链接]
3062|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fffqqqh|  楼主 | 2017-8-10 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 fffqqqh 于 2017-8-10 23:19 编辑

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

相关帖子

沙发
flove00| | 2017-8-11 09:16 | 只看该作者
STM8 有硬件IIC,开硬件IIC就好

使用特权

评论回复
板凳
qinlu123| | 2017-8-11 13:44 | 只看该作者
本帖最后由 qinlu123 于 2017-8-11 13:45 编辑

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

使用特权

评论回复
地板
gujiamao12345| | 2017-8-11 13:46 | 只看该作者
从机难...

使用特权

评论回复
5
fffqqqh|  楼主 | 2017-8-12 23:29 | 只看该作者
flove00 发表于 2017-8-11 09:16
STM8 有硬件IIC,开硬件IIC就好

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

使用特权

评论回复
6
fffqqqh|  楼主 | 2017-8-12 23:30 | 只看该作者
qinlu123 发表于 2017-8-11 13:44
模拟主机好办,模拟从机就费劲了。个人观点,模拟IIC从机还不如模拟UART呢。 ...

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

使用特权

评论回复
7
qinlu123| | 2017-8-13 06:51 | 只看该作者
fffqqqh 发表于 2017-8-12 23:30
用UART的过程中出现数据丢失的情况。。。所以才被迫用I2c

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

使用特权

评论回复
8
JerryWu75| | 2017-8-13 12:22 | 只看该作者
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断的方式接收时钟.
51的另外一个口发送串行数据.

如果不需要双向通信, 用一个IO口做脉宽调制通信就好,可以省掉时钟线.

使用特权

评论回复
9
xbwpc| | 2017-8-13 18:13 | 只看该作者
JerryWu75 发表于 2017-8-13 12:22
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断 ...

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

使用特权

评论回复
10
feelhyq| | 2017-8-13 22:34 | 只看该作者
qinlu123 发表于 2017-8-11 13:44
模拟主机好办,模拟从机就费劲了。个人观点,模拟IIC从机还不如模拟UART呢。 ...

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

使用特权

评论回复
11
feelhyq| | 2017-8-13 22:36 | 只看该作者
xbwpc 发表于 2017-8-13 18:13
“做个简单的CLK/DAT串行通信”2线同步串行口就是I2C,想像SPI那样的话至少3线,片选没办法省略的,即便 ...

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

使用特权

评论回复
12
feelhyq| | 2017-8-13 22:37 | 只看该作者
xbwpc 发表于 2017-8-13 18:13
“做个简单的CLK/DAT串行通信”2线同步串行口就是I2C,想像SPI那样的话至少3线,片选没办法省略的,即便 ...

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

使用特权

评论回复
13
feelhyq| | 2017-8-13 22:38 | 只看该作者
JerryWu75 发表于 2017-8-13 12:22
你这个没有必要搞I2C协议,做个简单的CLK/DAT串行通信就可以了, 一个51的一个IO口发送时钟, STM的IO口以中断 ...

使用特权

评论回复
14
fffqqqh|  楼主 | 2017-8-13 22:58 | 只看该作者
qinlu123 发表于 2017-8-13 06:51
UART丢数就找到丢数的原因,UART作为一个成熟的接口难道会随便丢数的吗?再说了UART会丢数难道IIC就不会 ...

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

使用特权

评论回复
15
qinlu123| | 2017-8-14 08:47 | 只看该作者
fffqqqh 发表于 2017-8-13 22:58
你好,方便加下你Q吗?有些关于UART和I2C的问题想请教下您

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

使用特权

评论回复
16
山东电子小菜鸟| | 2017-8-14 15:56 | 只看该作者
主机可以使用模拟IIC,从机接收数据最好使用硬件IIC,大体思路是,从机收到主机发送的数据,触发硬件中断,执行相应的程序,

使用特权

评论回复
17
xbwpc| | 2017-8-14 20:50 | 只看该作者
feelhyq 发表于 2017-8-13 22:37
SPI不能只用2根线吗? STM32就有2线模式,一个数据线,一根时钟线

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

使用特权

评论回复
18
xbwpc| | 2017-8-14 20:52 | 只看该作者
feelhyq 发表于 2017-8-13 22:37
SPI不能只用2根线吗? STM32就有2线模式,一个数据线,一根时钟线

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

使用特权

评论回复
19
feelhyq| | 2017-8-14 22:08 | 只看该作者
xbwpc 发表于 2017-8-14 20:50
没有片选就没有字节同步,从机拿到一堆1和0但是不知道从哪到哪算一字节,除非在数据上做serdes编码,而做 ...

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

使用特权

评论回复
20
feelhyq| | 2017-8-14 22:09 | 只看该作者
本帖最后由 feelhyq 于 2017-8-14 22:27 编辑
xbwpc 发表于 2017-8-14 20:52
SPI外设省略NSS的条件是在外部用GPIO自行控制片选,并不是可以省略片选的意思。 ...

SPI不要片选(不管是硬件控制片选还是GPIO控制)也可以正常在单片机通信的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝