|
本帖最后由 redworlf007 于 2024-5-20 19:26 编辑
RT 请教STM32F407的硬件I2C有bug么? 用的标准库。
void Start_ADS1115(void)
{
I2C_GenerateSTART(I2C1,ENABLE);//产生起始信号
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//等待起始信号发送
I2C_Send7bitAddress(I2C1,0x90,I2C_Direction_Transmitter);//发送器件地址和方向
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//等待Ack
I2C_SendData(I2C1,0x00);//选中ADS1115的配置寄存器
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待发送完成
I2C_SendData(I2C1, 0xD5);//发送配置信息高8位
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待发送完成
I2C_SendData(I2C1, 0x83);//发送配置信息低8位
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待发送完成
I2C_GenerateSTOP(I2C1,ENABLE);//产生停止信号
I2C_GenerateSTART(I2C1,ENABLE);//产生起始信号
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//等待起始信号发送
I2C_Send7bitAddress(I2C1,0x90,I2C_Direction_Transmitter);//发送器件地址和方向
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));//等待Ack
I2C_SendData(I2C1,0x01);//选中ADS1115的转换寄存器
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED));//等待发送完成
I2C_GenerateSTOP(I2C1,ENABLE);//产生停止信号
}
到while 这些地方就卡住了。。。大家用hal库,搞的i2c有问题么?谢谢。
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|