发新帖我要提问
12
返回列表
打印
[STM8]

stm8 调试硬件I2C心得

[复制链接]
楼主: bigwudan
手机看帖
扫描二维码
随时随地手机跟帖
21
rogerllg| | 2016-4-28 09:06 | 只看该作者 回帖奖励 |倒序浏览
while(!(I2C->SR1 & 0x01));  //等待START发送完

我用的是STM8105K6T6,但就一直卡在这了,,选项字节也选了,上拉了是正常的~

使用特权

评论回复
22
wzt19910506| | 2016-11-28 13:52 | 只看该作者
本帖最后由 wzt19910506 于 2016-11-28 13:59 编辑

stm8 I2c是有点问题,我这里也测试出来,有时候busy位会一直置位。可以注意一下:
详细看我写的一个帖子:http://www.eemaker.com/stm8s-i2c-busy.html

使用特权

评论回复
23
木子不二| | 2017-2-10 17:01 | 只看该作者
wzt19910506 发表于 2016-11-28 13:52
stm8 I2c是有点问题,我这里也测试出来,有时候busy位会一直置位。可以注意一下:
详细看我写的一个帖子:ht ...

我这里用i2c的时候发地址过去总是应答失败 是什么原因呢,
//起始信号
        I2C_Start();                 
  while(I2C_SR1_SB != 1);   //读SR1寄存器,清除SB标志位
  temp = I2C_SR1;
  
  //发送从器件地址
  I2C_DR  = 0x00 ;              //发送从器件地址  最低位0 表示写操作       
  while((I2C_SR1&0x02) != 1);   //地址已被发送                                卡在这里
  temp = I2C_SR1;
  temp = I2C_SR3;             //清除标志位
  
  //发送从器件 存储地址
  while(I2C_SR1&0X80 ==0);   //等待发送寄存器空
  I2C_DR = address;
  while(I2C_SR1&0X04 ==0);   //等待发送完成
   
  //发送数据/
  while(I2C_SR1&0X80 ==0);   //等待发送寄存器空
  I2C_DR   = data;
  while(I2C_SR1&0X04 ==0);   //等待发送完成
  temp = I2C_SR1;             //清零BIF位

使用特权

评论回复
24
huangcunxiake| | 2017-2-13 19:06 | 只看该作者
在调试过程中,最好不要打开I2C寄存器看

使用特权

评论回复
25
beyond696| | 2017-4-19 18:02 | 只看该作者
wzt19910506 发表于 2016-11-28 13:52
stm8 I2c是有点问题,我这里也测试出来,有时候busy位会一直置位。可以注意一下:
详细看我写的一个帖子:ht ...

你的程序将软件复位置位之后没看到清除它,你确定这样操作没问题?

使用特权

评论回复
26
程宇123456| | 2017-6-19 10:14 | 只看该作者
你好  请问你的stm8的I2C调试问题:
卡在while(!(I2C->SR1 & 0x01));  //等待START发送完
这个问题是怎么解决的?
我要遇到这个问题 一直解决不了  
@rogerllg

使用特权

评论回复
评论
781354052 2019-3-5 09:46 回复TA
兄弟解决了吗?我也卡在这里了 
27
rogerllg| | 2017-7-21 20:31 | 只看该作者
程宇123456 发表于 2017-6-19 10:14
你好  请问你的stm8的I2C调试问题:
卡在while(!(I2C->SR1 & 0x01));  //等待START发送完
这个问题是怎么 ...

最后用模拟I2C了~

使用特权

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

本版积分规则