你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
nj786c 提问时间:2019-10-4 18:33 /
硬件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");  

  ............以下程序先省略了
}
收藏 评论1 发布时间:2019-10-4 18:33

举报

1个回答
butterflyspring 回答时间:2019-10-8 15:05:43
外设库里有例程,跑一下例程吧。另外I2C注意连接的设备

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版