I2C_InitStruct.I2C_Mode = I2C_Mode_I2C; I2C_InitStruct.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStruct.I2C_OwnAddress1 = STM32_I2C_OWN_ADDR; I2C_InitStruct.I2C_Ack = I2C_Ack_Enable; I2C_InitStruct.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; // 初始化 I2C_Init(EEPROM_I2C...
I2C的引脚配置:/* Configure I2C1 pins: SCL and SDA */ GPIO_InitStructure.GPIO_Pin = GPIO_...
1:I2C_ClockSpeed设置的是I2C的传输速率 2:I2C_Mode设置的是I2C的使用模式,有I2C模式(I2C_Mode_I2C)和SMBus模式(I2C_Mode_SMBusDevice,I2C_Mode_SMBusHost)。 3:I2C_DutyCycle设置的是I2C的时钟线的占空比,可以设置高电平与时间之比为16:9(I2C_DutyCycle_16_9)或者2:1(I2C_DutyCycle_2)。 4:I2C_OwnA...
1:I2C_ClockSpeed设置的是I2C的传输速率 2:I2C_Mode设置的是I2C的使用模式,有I2C模式(I2C_Mode_I2C)和SMBus模式(I2C_Mode_SMBusDevice,I2C_Mode_SMBusHost)。 3:I2C_DutyCycle设置的是I2C的时钟线的占空比,可以设置高电平与时间之比为16:9(I2C_DutyCycle_16_9)或者2:1(I2C_DutyCycle_2)。 4:I2C_OwnA...
最近一段时间在做I2C通信协议,需要在两块STM32之间做I2C通信,定的是主机用IO口模拟,从机用的是STM32的硬件I2C,我的项目要求是需要主从机之间能够进行一串数据收发而不出错,实验时在主机方面,利用IO口模拟主机,只需要理解时序就够了,同时将速度能够控制在100K(标准
uint32_t I2C_ClockSpeed; /*!< Specifies the clock frequency. This parameter must be set to a value lower than 400kHz */ // IIC模式:可以有3种选择:I2C_Mode_I2C I2C_Mode_SMBusDevice I2C_Mode_SMBusHost uint16_t I2C_Mode; /*!< Specifies the I2C mode. ...
/*I2C配置*/ I2C_InitStructure.I2C_Mode=I2C_Mode_I2C;//配置为普通IIC模式 //I2C_InitStructure.I2C_DutyCycle=I2C_DutyCycle_2; //I2C_InitStructure.I2C_OwnAddress1=SlaveAddress; I2C_InitStructure.I2C_Ack=I2C_Ack_Enable;//使能自动应答 I2C_InitStructure.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7...
GPIO_Init(GPIOC,&GPIO_InitStructure);/*I2C Struct Initialize*/I2C_DeInit(I2C3); I2C_InitStructure.I2C_Mode=I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle=I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1=0x00; I2C_InitStructure.I2C_Ack=I2C_Ack_Enable; ...
不用搞这个了STM32的IIC通讯有个bug。因为ack信号时间很短暂,一旦错过了这个短暂的ACK信号,STM32就挂了。想用IIC的话,就用软件模拟吧。