用硬件i2c调试 求助
void i2c1config(void){
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
I2C_InitTypeDef I2C_InitStructure;
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode= GPIO_Mode_AF;
GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStruct.GPIO_PuPd= GPIO_PuPd_UP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_40MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
GPIO_PinAFConfig(GPIOB,GPIO_Pin_8,GPIO_AF_I2C1);
GPIO_PinAFConfig(GPIOB,GPIO_Pin_9,GPIO_AF_I2C1);
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = 400000;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_OwnAddress1 = 0xd0;
I2C_Init(I2C1,&I2C_InitStructure);
I2C_Cmd(I2C1, ENABLE);
}
//****************main*******************
I2C_AcknowledgeConfig(I2C1,ENABLE);
I2C_GenerateSTART(I2C1,ENABLE);
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//在这里死了
请帮忙看下 是不是我的配置问题还可能是什么问题造成的死在while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT))
用cubemx吧,标准库硬件I2C很难正确驱动起来的。
标准库还是用软件I2C吧。 用的什么主控呀,怎么会有40Mhz的IO频率的 循环错误或者卡死的可能性只有代码写错和硬件连接问题
建议官方更新一版标准库硬件I2C驱动 楼主,先用示波器看一下I2C总线是否有数据传输。
while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C2, ENABLE);
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)); //EV5
I2C_Send7bitAddress(I2C2, EEAddress, I2C_Direction_Transmitter);
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); //EV6
I2C_SendData(I2C2, Addr);
while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BTF) == RESET);//EV8
I2C_GenerateSTART(I2C2, ENABLE);
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)); //EV5
I2C_Send7bitAddress(I2C2, EEAddress, I2C_Direction_Receiver);
while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//EV6 jjbboox 发表于 2018-9-4 17:07
用cubemx吧,标准库硬件I2C很难正确驱动起来的。
标准库还是用软件I2C吧。
软件模拟写过了 现在就想试试这个硬件 huangyanga 发表于 2018-9-4 20:15
用的什么主控呀,怎么会有40Mhz的IO频率的
stm32l1系列 feixiang20 发表于 2018-9-4 23:23
循环错误或者卡死的可能性只有代码写错和硬件连接问题
请问下怎么排除查找问题我现在就是排查不出来 求指教 jyl518-283289 发表于 2018-9-5 08:14
建议官方更新一版标准库硬件I2C驱动
不太会弄 直接去官网下载吗
页:
[1]
2