打印
[STM8]

STM8S103K使用I2C通信经常出错

[复制链接]
7984|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
103K作为从属, 另外一块CPU作为主控,

时钟频率大概200HZ

在103K这边经常会收到错误的地址

但使用逻辑分析仪看波形是正确的

可能是哪里出错了呢?
25
FAQ| | 2014-4-12 08:34 | 只看该作者
我也疑惑这个

使用特权

评论回复
24
yybj| | 2010-7-22 10:50 | 只看该作者
首先还是先要分析杂波是哪里产生的

使用特权

评论回复
23
kyoko| | 2010-7-22 09:48 | 只看该作者
我现在在使用STM8S时,也碰到了跟楼主一样的问题。情况如下:
1、一块板采用IO模拟I2C主机(芯片也是STM8S,但没有采用I2C模块),用示波器查看过波形,均正常。SCK频率在20~50kHz
2、另一块板采用STM8S的硬件I2C模块,作为从机
3、从机采用16MHz HSI,fMaster = 16MHz,fCPU = 8MHz,在此情况下,I2C通信大约有1%左右的出错。如果更改为fMaster = 16MHz,fCPU = 16MHZ,在此情况下,I2C通信大约在10%左右的出错。

用示波器观察过SCK,SDA波形,上升沿均小于0.5uS,下降沿小于0.2uS

最为不解的是,为何更改CPU的时钟频率,会导致I2C通信出错率提高?

使用特权

评论回复
22
roalychen|  楼主 | 2010-7-14 13:08 | 只看该作者
找不到问题,放弃I2C了

使用特权

评论回复
21
香水城| | 2010-7-1 11:44 | 只看该作者
重点检查2个板子的地线连接和电源部分。

使用特权

评论回复
20
ST_ARM| | 2010-7-1 11:25 | 只看该作者
楼主要检查你的STM32电路板,看看板子上是否有干扰。

使用特权

评论回复
19
roalychen|  楼主 | 2010-7-1 09:05 | 只看该作者
本帖最后由 roalychen 于 2010-7-1 09:45 编辑

瑞萨跟103K断开来测量波形, 量到的波形是干干净净的

而即使把103K设置成输入端口, 波形还是那样的杂波, 每个上升沿都有

使用特权

评论回复
18
ST_ARM| | 2010-6-30 16:44 | 只看该作者
主机是使用瑞萨的,瑞萨的输出信号有没有可能有问题?
11楼的杂波是从哪里来的?是STM8产生的,还是瑞萨的导致的?
楼主要好好查查一查。

使用特权

评论回复
17
roalychen|  楼主 | 2010-6-30 15:15 | 只看该作者
主/从机都用STM8S103K的话,出错几率是比较低的

波形也没有那些杂七杂八的东西

但是我主机是使用瑞萨的,就经常出错了

使用特权

评论回复
16
香水城| | 2010-6-28 14:32 | 只看该作者
STM8固件库中有2个STM8通过I2C互相通信的例子,一个STM8做主,另一个STM8做从。

使用特权

评论回复
15
roalychen|  楼主 | 2010-6-28 14:14 | 只看该作者
斑竹能不能提供个103K作为I2C从机的程序参考下?

使用特权

评论回复
14
香水城| | 2010-6-28 10:15 | 只看该作者
103K的I2C是按标准I2C去操作,没有特别之处。

使用特权

评论回复
13
roalychen|  楼主 | 2010-6-28 10:13 | 只看该作者
13# 香水城

是啊,都不知道怎么来的躁声, 把103K断开也就没有了
但是, 有1颗一直不出错的103K上面也是一样的嘈杂

另外问下斑竹, 103K的I2C是按标准I2C去操作就可以吗?还是有什么不同的地方?

使用特权

评论回复
12
香水城| | 2010-6-28 09:59 | 只看该作者
你的数据线怎么这么嘈杂?

使用特权

评论回复
11
roalychen|  楼主 | 2010-6-26 11:54 | 只看该作者
哎, 都没人理啊

STM8S的I2C模块是标准I2C吗??怎么调都不行啊~~~~

使用特权

评论回复
10
roalychen|  楼主 | 2010-6-25 11:03 | 只看该作者

时钟线下降沿


时钟线上升沿


数据线下降沿


数据线上升沿

数据线很不正常,加100p电容下地也还是一样
不知道该怎么弄

使用特权

评论回复
9
roalychen|  楼主 | 2010-6-24 15:07 | 只看该作者
本帖最后由 roalychen 于 2010-6-24 15:10 编辑

这些数据我看看怎么来验证

不过现在发现就是如果把I2C模块的输入时钟频率降低, 出错概率会变小,

比如直接把CLK_CKDIVR使用复位值, HSI就只有2M, 这样出错的机会就小很多

如果使用HSI为16M, 出错机会会多很多, 但我还是希望用16M的

这样能不能推测是哪里的问题呢?

使用特权

评论回复
8
香水城| | 2010-6-24 14:30 | 只看该作者
你最好看看那些时序是否满足STM8S103数据手册上的要求:

STM8S103_I2C_Timing.GIF (34.28 KB )

STM8S103_I2C_Timing.GIF

使用特权

评论回复
7
roalychen|  楼主 | 2010-6-24 14:20 | 只看该作者
7# 香水城

是这个理儿, 可是手边示波器只有一个通道能用

不过问题是为什么24C01一直不会错呢?

24C01跟103K的I2C有什么不同呢??

使用特权

评论回复
6
香水城| | 2010-6-24 13:27 | 只看该作者
逻辑分析仪不能看到信号的上升下降沿,应该用示波器看。

使用特权

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

本版积分规则

102

主题

227

帖子

0

粉丝