打印
[STM8]

两个STM8S芯片间的I2C

[复制链接]
3045|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hithms|  楼主 | 2013-11-4 20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
试着用官网中的I2C通讯的例程,来实现两块stm8s-discovery间的通讯,但没成功,调试跟踪发现:在主机往从机写数据时,主机发送地址数据后,从机没有应答不知道是什么原因。哪位大侠跑过这几个例程并成功的,能不能分享下经验。先谢谢了!

硬件是这么连的,应该没什么问题。
沙发
linfeng24| | 2013-11-4 22:57 | 只看该作者
没用过哦,楼主细心调试分析官方程序,应该可以出来的。因为原理就摆在那里,不难。

使用特权

评论回复
板凳
hithms|  楼主 | 2013-11-5 11:39 | 只看该作者
例程中用的芯片是STM8S206MB,我的stm8-discovery板中是STM8S105C6,除了在工程中选择对应的芯片外,还需要改什么地方?

使用特权

评论回复
地板
cailantu| | 2013-11-5 11:45 | 只看该作者
stm8s.h中的宏定义要注意一下

使用特权

评论回复
5
hithms|  楼主 | 2013-11-5 15:48 | 只看该作者
是不是I2C不适合较长距离的传输?本来打算在两个PCB板件的传输的,距离大概几十厘米。

使用特权

评论回复
6
s_f_tan| | 2013-11-5 16:53 | 只看该作者
你要抓下线路上的波形是否失真了

使用特权

评论回复
7
拿起书本| | 2013-11-5 17:08 | 只看该作者
参考一下 I2C通信协议来做,或者网上下载I2C模拟的例程看一下。

使用特权

评论回复
8
puchuang| | 2013-11-5 20:36 | 只看该作者
测一下波形  看看  是不是设置的问题   波形是否正确

使用特权

评论回复
9
feilusia| | 2013-11-5 20:42 | 只看该作者
改模拟吧,也很简单。

使用特权

评论回复
10
nienianhong| | 2013-12-5 09:42 | 只看该作者

使用特权

评论回复
11
yangganglone| | 2013-12-5 12:31 | 只看该作者
师兄,我现在也在做这个啊,能否一起交流下,我也是发了地址后,从机没ack返回,我扣扣971947289

使用特权

评论回复
12
zeluo| | 2013-12-5 12:40 | 只看该作者
没有玩过这一快     楼主   帮你顶一个    看看有没有高手可以出手解决一下呢

使用特权

评论回复
13
明月小厨| | 2013-12-6 18:08 | 只看该作者
我接下来也要处理这个,I2C的主从机通讯;

但会有什么困难?我还没细想.
1)发起始信号;
......检测标志位,并清除;
2)发地址H;
......检测标志位,并清除;
3)发地址L;
......
4)发数据......
.........
发停止位;

I2C比较麻烦的是状态标志位;很丰富,很烦人;SR1,SR2,SR3;
搞不好会死机;(读状态的程序多半都是一根筋的死循环).例测从机的应答.如果从机不应答,主要就死掉了;

如果用中断处理,要从一堆乱麻似的中断标志中理清线索也不容易;一旦错一点点,同上,程序的线程就卡住了;

如果加入错误恢复,好象又显得太婆婆妈妈的;IIC的程序处理起来是比较烦人;
比SPI烦人很多.


使用特权

评论回复
14
明月小厨| | 2013-12-6 18:14 | 只看该作者
如果用IO端口模拟能行,用IIC模块也应该可以成功;(至少主控一方是这样的);
相关的信号一个接一个发送;全部完成发STOP收工;
要注意的就是应答.可以默认不检测应答;以防死机;

使用特权

评论回复
15
puchuang| | 2013-12-6 18:26 | 只看该作者
不是很懂行   看看别人的指点吧   楼主

使用特权

评论回复
16
你猜你猜| | 2014-12-29 10:04 | 只看该作者
楼主能否可以将程序上传?

使用特权

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

本版积分规则

个人签名:淡定

14

主题

179

帖子

3

粉丝