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)) |
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
评分
查看全部评分
看过了 没有东西 产生一个start信号后 直接就在EV5的循环中死掉了
请问下怎么排除查找问题 我现在就是排查不出来 求指教
标准库还是用软件I2C吧。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
建议官方更新一版标准库硬件I2C驱动
评分
查看全部评分
软件模拟写过了 现在就想试试这个硬件
stm32l1系列
不太会弄 直接去官网下载吗
不行 还是在ev5时候就卡着了
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;