打印
[STM8]

急,悬赏求STM8硬件IIC双机通信程序,,,

[复制链接]
2466|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sy971586331|  楼主 | 2014-1-25 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在搞STM8,,卡在硬件IIC一个多星期了,网上也搜不到相关的资料,库里有个双机通信的例程,看了一天也没看明白,下到单片机里运行也不对,直接在while (I2C_GetFlagStatus(I2C_FLAG_BUSBUSY));  //等待总线空闲    这里就卡了,从机也没进过中断,
我的想法是,两块STM8S003通过IIC通信,串口给单片机A发送一个数据,单片机A通过硬件IIC把数据发送给单片机B,单片机B接收到数据后通过串口把数据发送给PC,同样,串口给单片机B发送一个数据,单片机B通过硬件IIC把数据发送给单片机A,单片机A接收到数据后通过串口把数据发送给PC,
急求高手帮忙,
沙发
airwill| | 2014-1-25 20:25 | 只看该作者
首先, 库里的例程是可以用的, 只是你的问题不在这个地方.
双机通信往往麻烦在协议上, 如果想简单一些, 可以考虑一主机, 一从机的方式. 可以避免总线仲裁和数据分配.
这个东西急不得, 定下心来慢慢地弄明白了 I2C 总线才能做好通行程序, 免得以后遇到 BUG 无处下手.
另外, 推荐个设备, 逻辑分析仪可以捕获总线上的数据和状态, 很便宜的, 对调试帮助很大, 不妨可以关心一下.

使用特权

评论回复
板凳
dirtwillfly| | 2014-1-25 20:47 | 只看该作者
建议了楼主提供原理图和代码,大家帮你找找问题

使用特权

评论回复
地板
dingsujie| | 2014-1-27 09:54 | 只看该作者
楼主,上拉加了没?用I2C需要加上拉的。

使用特权

评论回复
5
明月小厨| | 2014-1-27 21:24 | 只看该作者
本帖最后由 明月小厨 于 2014-1-27 21:39 编辑

不用费劲了,我给出正解。STM32F1XXX和STM8SXXX等的I2C的确不怎么样;会整死人。
理由如下:
1)主要问题是ACK信号,相关的一坨标志量都和ACK的检测有关,一旦ACK检测出错就卡死了;自动化程度非常高,但容错性几乎是零;
2)ACK的检测正好是STM最脆弱的环节;据说有人观察过ACK的信号,很短暂。
3)如果你的软件正常,交换一些数据是可以的,但一直很稳定地运行,要看你的工作环境了,也许这二个器件非常近,麻烦会少些;
结论:尽可能不要用I2C双机通讯;
一旦出现异常会怎么样?
最严重的情况下,程序要重新下载。活见鬼,OPTION字节的相关内容不知道被偷偷地改掉了;
最常见的表现,总线忙!——其实是某个端口的状态被改掉了,已经不是I2C的状态了,一直处于低电平状态;重新上电后,能否恢复要看你的运气了。
你还敢用STM8的I2C吗?

我试了试,发一个字节的数据,可以,如果连续发送,就立即**了,双机距离约50cm;低速通讯。

使用特权

评论回复
6
明月小厨| | 2014-1-27 21:33 | 只看该作者
本帖最后由 明月小厨 于 2014-1-27 21:40 编辑

ACK信号是万恶之源!
没解决好,只好用IO端口模拟I2C,然后通讯,一切正常;

使用特权

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

本版积分规则

12

主题

77

帖子

1

粉丝