staticvoidMX_I2C1_Init(void){hi2c1.Instance=I2C1;// 配置I2C1hi2c1.Init.ClockSpeed=100000;// 时钟频率:100khi2c1.Init.DutyCycle=I2C_DUTYCYCLE_2;//占空比:1/2hi2c1.Init.OwnAddress1=0x80;// 本机地址:0x80(若作为从设备则是从机地址)hi2c1.Init.AddressingMode=I2C_ADDRESSINGMODE_7BIT;// ...
I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; I2C_InitStructure.I2C_OwnAddress1 = I2CSLAVE_ADDR; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable; I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = I2C1_CLOCK_...
选择I2C的使用方式,有I2C模式(I2C_Mode_I2C )和SMBus主、从模式(I2C_Mode_SMBusHost、 I2C_Mode_SMBusDevice ) 。I2C不需要在此处区分主从模式,直接设置I2C_Mode_I2C即可。 • I2C_DutyCycle 设置I2C的SCL线时钟的占空比。该配置有两个选择,分别为低电平时间比高电平时间为2: 1 ( I2C_DutyCycle_2)和16...
I2C_InitStruct.I2C_ClockSpeed = EEPROM_I2C_BAUDRATE; 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_Ac...
I2C_InitStructure.I2C_DutyCycle =I2C_DutyCycle_2;//时钟占空比,只有进入到快速状态时才有用 100kHZ -40kHZ。小于100kHZ占空比是1:1I2C_InitStructure.I2C_AcknowledgeAddress =I2C_AcknowledgeAddress_7bit ;//STM32作为从机,可以相应几位的地址。I2C_InitStructure.I2C_OwnAddress1 =0x00;...
// IIC模式:可以有3种选择:I2C_Mode_I2C I2C_Mode_SMBusDevice I2C_Mode_SMBusHost uint16_t I2C_Mode; /*!< Specifies the I2C mode. This parameter can be a value of @ref I2C_mode */ // 占空比 I2C_DutyCycle_2 I2C_DutyCycle_16_9 ...
I2C通讯协议(Inter-Integrated Circuit,读作I平方C、I方C) 是由Phiilps公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要USART、CAN等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路间的通讯。 1. 物理层 (感谢野火的PPT,一部分内容参考了野火)如下图所示即为I2C的物理层: ...
在i2c.c文件下可以看到I2C初始化函数 void MX_I2C2_Init(void){ hi2c2.Instance = I2C2; hi2c2.Init.ClockSpeed = 100000; hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c2.Init.DualAddressMode = I2C_DUAL...
void I2C_Init(void) { I2C_InitTypeDef I2C_InitStructure; // 使能I2C时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); // 配置I2C I2C_InitStructure.I2C_Mode = I2C_Mode_I2C; I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2; ...