打印
[STM8]

STM8 IIC时钟救急

[复制链接]
5179|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zouhaolin|  楼主 | 2009-12-29 11:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的STM8S207  IIC挂 M41T0M6时钟芯片,

在有干扰的情况下,IIC会读不了,,死掉了,却无法恢复,用的是STM8官方库

请问各位大侠,有什么高招可以解决.^^

急!!!!
沙发
zhaoxinzxzx| | 2009-12-29 11:26 | 只看该作者
加入超时等待,超时后根据错误的状态作处理

使用特权

评论回复
板凳
zouhaolin|  楼主 | 2009-12-29 15:57 | 只看该作者
谢谢老兄,试试看, 可是我直接初始化I2C接口怎么不行呢

使用特权

评论回复
地板
zouhaolin|  楼主 | 2009-12-29 16:02 | 只看该作者
问题还没有解决问题,,好像不行啊

使用特权

评论回复
5
zouhaolin|  楼主 | 2009-12-29 16:03 | 只看该作者
if(I2C_GetITStatus(I2C_ITPENDINGBIT_ACKNOWLEDGEFAILURE) == SET)  //应答错误
        {
       
                I2C_ClearITPendingBit(I2C_ITPENDINGBIT_ACKNOWLEDGEFAILURE);
                I2C_GenerateSTOP(ENABLE);
        }
       
        if(I2C_GetITStatus(I2C_ITPENDINGBIT_ARBITRATIONLOSS) == SET)  //仲裁失败
        I2C_ClearITPendingBit(I2C_ITPENDINGBIT_ARBITRATIONLOSS);
       
        if(I2C_GetITStatus(I2C_ITPENDINGBIT_BUSERROR) == SET)  //总线错误
        {
                I2C_ClearITPendingBit(I2C_ITPENDINGBIT_BUSERROR);
                I2C_GenerateSTOP(ENABLE);
        }

这样处理超时

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
会会 + 1 很给力!
6
zouhaolin|  楼主 | 2009-12-29 18:05 | 只看该作者
时至现在,问题只解决了一半,,有时候能成功恢复,有时候就死翘翘了

使用特权

评论回复
7
司徒老鹰| | 2009-12-30 00:16 | 只看该作者
有时好有时不好?奇怪了

使用特权

评论回复
8
tantao820629| | 2010-2-22 19:52 | 只看该作者
期待中!!

使用特权

评论回复
9
有意思| | 2010-3-5 23:25 | 只看该作者
我用IIC连接RSC5372时钟芯片工作很正常,也是库函数,应用层见附件

rtc.rar

4.09 KB

使用特权

评论回复
10
LSLDAY| | 2017-5-8 09:37 | 只看该作者
楼主  你还没有   M41T0M6 的驱动程序吗

使用特权

评论回复
11
LSLDAY| | 2017-5-8 09:37 | 只看该作者

楼主  你还有   M41T0M6 的驱动程序吗 我调了好几天了

使用特权

评论回复
12
tranhunga| | 2017-5-10 16:16 | 只看该作者
加入超时等待,超时后根据错误的状态作处理

使用特权

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

本版积分规则

2

主题

12

帖子

1

粉丝