打印
[STM8]

stm8l i2c addr问题

[复制链接]
4059|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wojiademao|  楼主 | 2011-3-16 23:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STM8L I2C通讯,起始位能正常发送,能读取SB标志位,但发送器件地址后,在寄存器上能看到ADDR和TXE都置位了(表明已发送成功并收到正确应答),但去读这个标志时,只能读到TXE为1,ADDR为0了,不知道为什么?请大虾帮忙,谢谢!
沙发
香水城| | 2011-3-17 18:15 | 只看该作者
要看你怎么读了?

请看STM8参考手册,先后读出SR1和SR3寄存器后,ADDR位被自动清除。你在调试器上看到时,调试器已经执行了读出操作,这样当然随后你的程序就读不到了。

使用特权

评论回复
板凳
wojiademao|  楼主 | 2011-3-17 23:20 | 只看该作者
谢谢香主!
    再请教一个问题:I2C在通信时,这时BUSY=1,如果我这时不发停止位想停止通信,就用了swrst复位I2C,然后再初始化I2C,再通信,不知道这种方式是否推荐?(我试过这种方式,但感觉起始位会发送不成功)

使用特权

评论回复
地板
香水城| | 2011-3-18 10:30 | 只看该作者
不推荐

使用特权

评论回复
5
hsbjb| | 2011-3-18 11:08 | 只看该作者
不推荐楼主用这种方式

使用特权

评论回复
6
wojiademao|  楼主 | 2011-3-18 14:07 | 只看该作者
那如果busy一直为1,那只能通过复位MCU来解决问题了?
swrst功能不是没啥作用了?
谢谢!

使用特权

评论回复
7
香水城| | 2011-3-18 14:27 | 只看该作者
busy一直为1的原因很多,如果是外部I2C设备造成,你复位MCU也没有用。

使用特权

评论回复
8
yang521sq| | 2013-6-11 22:27 | 只看该作者
23.

使用特权

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

本版积分规则

2

主题

27

帖子

1

粉丝