完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件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"); ............以下程序先省略了 } |
|
相关推荐
2个回答
|
|
外设库里有例程,跑一下例程吧。另外I2C注意连接的设备
|
|
|
|
出现这种情况可能有以下几种原因:
1. 硬件连接问题:检查硬件连接是否正确,包括SDA和SCL引脚是否接触良好,是否存在短路或者断路等问题。 2. 软件配置问题:确保正确配置I2C相关的寄存器。根据你提供的代码,初始化部分已经设置了时钟频率和速度,但可能还有其他相关寄存器没有配置正确。 3. 中断问题:如果使用了中断方式进行I2C通信,可能存在中断优先级配置不正确的问题。请确保中断优先级设置正确,避免可能的冲突。 4. 软件逻辑错误:检查代码逻辑是否正确,例如检查是否在I2C传输完成之后及时清除标志位。 5. 硬件问题:如果以上所有方法都检查确定没有问题,那可能是硬件问题。可能存在I2C总线波特率设置错误、时钟源选择错误、引脚驱动能力不足等问题。需要检查硬件设计是否符合规范,并尽可能排除硬件问题。 综上所述,建议逐步排查以上可能原因,先检查硬件连接和软件配置,然后逐步进行调试和优化。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1649 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1566 浏览 1 评论
994 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
693 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1613 浏览 2 评论
1872浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
656浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
526浏览 3评论
543浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
515浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 17:11 , Processed in 0.893086 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号