关于STM32F411RET HAL 库的IIC
最近在调STM32F411RET的硬件IIC2,复用PB9 PB10为IIC2,但是一直读不到模块寄存器的值,望大神指点,万分感谢IIC初始化如下:
void iic_Init(void)
{
//I2C_HandleTypeDef I2CxHandle;
I2CxHandle.Instance=I2C2;
I2CxHandle.Init.AddressingMode=I2C_ADDRESSINGMODE_7BIT;
I2CxHandle.Init.ClockSpeed=100000;
I2CxHandle.Init.DualAddressMode=I2C_DUALADDRESS_DISABLE;
I2CxHandle.Init.DutyCycle=I2C_DUTYCYCLE_2;
I2CxHandle.Init.GeneralCallMode=I2C_GENERALCALL_DISABLE;
I2CxHandle.Init.NoStretchMode=I2C_NOSTRETCH_DISABLE;
I2CxHandle.Init.OwnAddress1=0;//0x69;
I2CxHandle.Init.OwnAddress2=0;//0x68;
HAL_I2C_Init(&I2CxHandle);
}
MSP的初始化如下:
void HAL_I2C_MspInit(I2C_HandleTypeDef *hi2c)
{
GPIO_InitTypeDefGPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE();
__HAL_RCC_I2C2_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_InitStruct.Pin = GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_FAST;
GPIO_InitStruct.Alternate = GPIO_AF4_I2C2;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
读取模块的寄存器的值:模块的设备地址为0x34 ,0x3D为模块的寄存器
HAL_I2C_Mem_Read(&I2CxHandle, 0x34, 0x3D, I2C_MEMADD_SIZE_8BIT, &DATA, 1, 10);
不错顶一个 我记得好像是用 HAL_I2C_Master_Receive来读的吧。
页:
[1]