打印

该死的stm8 iic

[复制链接]
4036|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
solo777|  楼主 | 2013-7-24 21:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用硬件iic,中断方式。

在发送slave地址完成后判断地址发送完成。

使用了I2C->SR1寄存器。

可是那个寄存器怎么都不能访问

我把sr1寄存器复制到临时变量t1.

在t1那里设置断点。
我明明看着。I2C->SR1=02;
可是执行完,
t1=I2C->SR1;
后,t1,竟然是0.

我真要抓狂了!!!!!!!!测试了无数次。明明sfr区域查看的I2C->SR1=02;可是执行复制,永远不能得到数据。
沙发
solo777|  楼主 | 2013-7-24 21:18 | 只看该作者
汇编是
    00871B    C65217         LD        A, I2C_SR1
    00871E    C70404         LD        t1, A

就这么简单。我查看A 寄存器是0;

使用特权

评论回复
板凳
solo777|  楼主 | 2013-7-24 22:53 | 只看该作者
找到问题了。

AN3281的tim4 时钟设置那里错误。

使用特权

评论回复
地板
拿起书本| | 2013-7-25 16:08 | 只看该作者
IIC确实不好用呀,这也是本人的本人的硬伤,进来学习一下,感谢分享

使用特权

评论回复
5
zeluo| | 2013-7-25 19:10 | 只看该作者
这一块   模拟确实比较吃力   楼主   兄弟帮你顶一个   看看别人的意见   先顶一个

使用特权

评论回复
6
tqy涂清云| | 2013-10-17 14:31 | 只看该作者
#include "stm8s105k6t6.h"

void Init_IIC(void )
{
         
        CLK_PCKENR1 |= 0x01;
        I2C_FREQR |= 0x10;         //输入外设时钟频率为16MHz
        I2C_CR1   |= 0x01;         //禁止I2C外设
        I2C_CCRH  &= ~0xcf;
        I2C_CCRL  &= ~0xff;        
        I2C_TRISER = 0x11;
        I2C_CCRL   = 0x10;
        I2C_CCRH   = 0x00;      
        I2C_CR1   |= 0x01;        //开启I2C外设
        I2C_CR2   |= 0x04;        //当前接收字节返回应答
        I2C_CR2   &= ~0x08;
        I2C_OARL   = 0x86;       //自身地址
        I2C_OARH   = 0x40;
              
}


我的IIC这样初始化  确启动不了。在IAR里面编译的。请楼主指教下啊

使用特权

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

本版积分规则

83

主题

375

帖子

2

粉丝