打印
[STM8]

STM8S105K4硬件IIC卡死在发送起始信号,怎么破?

[复制链接]
1132|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
nj786c|  楼主 | 2019-10-4 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
硬件IIC调试SHT30的
一开始卡在等待总线空闲,后查贴,①设置了option byte AFR6 ②在初始化里加了复位I2C->CR2 |= 0x80;等待总线空闲问题解决。
紧接着发送起始信号,通过串口打印信息发现 等待发送完成卡住了。没有发送启动信号,难道是硬件bug?还是有什么没设置到位的地方?
关键位置已用红字标识。求解救!
void I2C_Init(void)
{
   CLK->PCKENR1|=0x01;//使能IIC时钟
  I2C->CR1=0;   
  I2C->FREQR=16;//设置时钟为16m
  I2C->CCRL=0x50;//100khz的IIC速度
  I2C->CCRH=0x00;
  I2C->TRISER=0x11;//250ns上升时间
  /* Enable I2C */
  I2C->CR1 |= I2C_CR1_PE;  
  I2C->CR2 |= 0x80;//复位一下 用于去除busy
}
void Driver_I2CSend(u8 Address,u8 *DataBuff,u16 DataLen)
{         
  volatile u8 temp;//防止被优化而产生警告
  u16 time;  

  while(I2C->SR3&0x02)//等待总线空闲        
  printf("n1-------------!\n");//调试一开始卡在这,在初始化里加了   I2C->CR2 |= 0x80;这个位置就过了。  


  I2C->CR2 |= 0x01;//发送起始信号

  while((I2C->SR1&0x01)==0)//等待起始信号发送完毕,现在就卡在这了,卡了两天了求大神解救!
  printf("n2-----hhhh---------\n");  

  ............以下程序先省略了
}

使用特权

评论回复
沙发
598330983| | 2019-10-5 11:53 | 只看该作者
你换个外设试试。是不是你这个外设有问题。

使用特权

评论回复
板凳
598330983| | 2019-10-5 11:53 | 只看该作者
你试试官方的例子里的操作。如果还是这样,可以考虑外部器件的电路是不是有问题。

使用特权

评论回复
地板
nj786c|  楼主 | 2019-10-5 12:39 | 只看该作者
外设和电路连接没有问题,因为用模拟IIC是可以的

使用特权

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

本版积分规则

5

主题

19

帖子

0

粉丝