打印
[STM8]

我的IIC死翘翘了

[复制链接]
4221|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
做从IIC使用,Clock是400KHz,芯片用的是STM8S105K6,外部16MHz晶振,开始可以正常工作,过一段时间久死翘翘了(随机),具体表现为Clock一直为低电平了,个位大侠有没有碰到过类似的问题啊??偶使用的ST的库文件
沙发
lizhenyang7477|  楼主 | 2010-1-25 11:38 | 只看该作者
把程序也贴上吧,请个位大侠帮忙看看

Snap1.gif (3.36 KB )

Snap1.gif

Snap2.gif (7.46 KB )

Snap2.gif

Snap3.gif (8.17 KB )

Snap3.gif

使用特权

评论回复
板凳
sunmonth| | 2010-1-25 13:34 | 只看该作者
400khz也敢用,你丫胆子大啊

使用特权

评论回复
地板
IJK| | 2010-1-25 14:05 | 只看该作者
LS说得有理,STM8S105K6支持400k的从I2C吗?

使用特权

评论回复
5
lut1lut| | 2010-1-25 14:13 | 只看该作者
400KHz为什么不敢用?

STM8不支持400KHz么?

使用特权

评论回复
6
lizhenyang7477|  楼主 | 2010-1-25 14:37 | 只看该作者
标准IIC快速模式都是400KHz啊

Snap1.gif (9.52 KB )

Snap1.gif

使用特权

评论回复
7
lizhenyang7477|  楼主 | 2010-1-25 14:40 | 只看该作者
问题所在是他现在能工作能接收数据,可有时就突然死翘翘了,Clock一直为低电平,也恢复不了,只能重启了

使用特权

评论回复
8
香水城| | 2010-1-25 14:51 | 只看该作者
你有没有诊断一下,是什么原因导致“Clock一直为低电平”?

使用特权

评论回复
9
sunmonth| | 2010-1-25 15:14 | 只看该作者
呵呵,你要觉得400khz敢用,你就用吧,偶是不敢

使用特权

评论回复
10
yybj| | 2010-1-25 15:47 | 只看该作者
为什么不能用,可能会导致什么问题

使用特权

评论回复
11
lizhenyang7477|  楼主 | 2010-1-25 16:00 | 只看该作者
麻烦香水城说说看用什么方法诊断呢?单片机是还在跑,红外遥控那些还能正常工作

使用特权

评论回复
12
香水城| | 2010-1-25 16:18 | 只看该作者
麻烦香水城说说看用什么方法诊断呢?单片机是还在跑,红外遥控那些还能正常工作
lizhenyang7477 发表于 2010-1-25 16:00


关键是在Clock保持低电平不变化时,能够知道程序运行到哪里,这样就可以判断是什么原因造成这个问题,然后对症下药地解决。

有些示波器有这样的功能,可以在某个信号长时间保持不变时触发,再结合程序中输出一些调试信息,通过示波器或逻辑分析仪,即可诊断出具体的位置。

使用特权

评论回复
13
arm86| | 2010-1-25 23:28 | 只看该作者
主I2C程序的问题?clock可是它给的,从I2C难道会去拉低clock的电平?
看看主I2C带几个从器件吧,问题或许是某个从I2C把data线给拉低,总线就歇菜了。

使用特权

评论回复
14
lizhenyang7477|  楼主 | 2010-1-26 09:21 | 只看该作者
查过了,确实是偶的STM把Clock拉低的,断开就没事了

使用特权

评论回复
15
IJK| | 2010-1-26 09:35 | 只看该作者
查过了,确实是偶的STM把Clock拉低的,断开就没事了
lizhenyang7477 发表于 2010-1-26 09:21


可以这样:
检查STM8的标志位,发现不对就复位I2C模块。

使用特权

评论回复
16
algr| | 2010-1-26 10:19 | 只看该作者
俺也用400K

使用特权

评论回复
17
lizhenyang7477|  楼主 | 2010-1-26 10:30 | 只看该作者
16楼的兄弟,你用400k会不会有问题

使用特权

评论回复
18
lizhenyang7477|  楼主 | 2010-1-26 11:01 | 只看该作者
现在我把CPU频率都提到16Mhz了,貌似这种现象就少了,至少现在测试还没发现
难道会是因为CPU频率跟不上导致的吗,我的程序才那么一点点啊

使用特权

评论回复
19
香水城| | 2010-1-26 11:19 | 只看该作者
如果要使用400kHz的I2C,时钟频率应该是10MHz的倍数。如果不希望有这个限制,最好选用其它接近的速度,比如说390kHz等。

STM8S_I2C_CCRH.GIF (23.58 KB )

STM8S_I2C_CCRH.GIF

使用特权

评论回复
20
lizhenyang7477|  楼主 | 2010-1-26 12:46 | 只看该作者
呵呵还是香水城看的仔细啊
不过好像此寄存器针对的是Master mode吧,跟Slave mode有关系吗?

使用特权

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

本版积分规则

5

主题

22

帖子

0

粉丝