采用DISCOVERYF0调试IIC接口,对应24C02芯片。 在发送地址时,加了一个超时循环判断 //第一步发送START信号和器件固定地址 I2C_TransferHandling(I2C1,AT24C02_AD,1,I2C_Reload_Mode, I2C_Generate_Start_Write); //设置24C02地址,启动start信号传输 IIC_Timeout=AT24C02_DELAY_TIME; while(I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS) == RESET) //等待TXIS标志位 { if((IIC_Timeout--) == 0) return IIC_TIMEOUT_UserCallback(); //超出时间门限,仍未发送完毕,则进入回调函数 } 在发送地址后,I2C_GetFlagStatus(I2C1, I2C_FLAG_TXIS)返回值始终为RESET,进入内部看I2Cx->ISR等于0x00008001, 其中BUSY和TXE位为1,而TXIS始终为0, 求助! |
STM32F107+LWIP---如何检查tcp通讯断开?并重新连接
有没有用过数字式mems麦克风的,想问下SPI通讯的问题
stm32f103 CAN通讯多帧发送问题?
STM32F107作为USB主机模拟串口通讯不成功(采用PL2303芯片)
STM32F103C8 LIN通讯例程
求助,丐版J-Link通讯不上
ethernet可以与ethercat通讯吗?
LIS3DH SPI 通讯问题
STM32F373 CAN通讯问题CAN_FLAG_LEC
请教高手看看,STM32F1的多机通讯,地址匹配唤醒问题
RE:STM32F0的IIC通讯求助
回复:STM32F0的IIC通讯求助
GPIO_InitTypeDef GPIO_InitStructure;
I2C_InitTypeDef I2C_InitStructure;
/*-------------------初始化PB8和PB9--------------------------------*/
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); //使能I2C1时钟
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE); //使能SDA、SCL时钟,PB8和PB9
GPIO_PinAFConfig(GPIOB,GPIO_PinSource8,GPIO_AF_1); //设定复用通道
GPIO_PinAFConfig(GPIOB,GPIO_PinSource9,GPIO_AF_1);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; //GPB8-I2C1_SCL
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //GPIO Alternate function Mode
GPIO_InitStructure.GPIO_OType=GPIO_OType_OD; //open drain mode
GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //high speed模式
GPIO_Init(GPIOB,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9; //GPB9-I2C1_SDA
GPIO_Init(GPIOB,&GPIO_InitStructure);
/*--------------------IIC参数设置-----------------------------------*/
I2C_InitStructure.I2C_Timing=AT24C02_IIC_TIMING; //设置SCL和SDA时序关系
I2C_InitStructure.I2C_AnalogFilter=I2C_AnalogFilter_Enable; //使能模拟滤波
I2C_InitStructure.I2C_DigitalFilter=0;
I2C_InitStructure.I2C_Mode=I2C_Mode_I2C; //配置IIC模式
I2C_InitStructure.I2C_OwnAddress1=0;
I2C_InitStructure.I2C_Ack=I2C_Ack_Enable; //ack设置
I2C_InitStructure.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit;
I2C_Init(I2C1,&I2C_InitStructure);
I2C_Cmd(I2C1,ENABLE); //使能I2C1
RE:STM32F0的IIC通讯求助
回复:STM32F0的IIC通讯求助
参看这个可能会对你有帮助,https://www.stmcu.org.cn/module/forum/thread-604877-1-1.html
现在解决了吗
没解决,后来就用模拟的了