yaowei 发表于 2015-10-17 17:18:17

关于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);

pwdzsj 发表于 2015-10-18 16:33:28

不错顶一个

党国特派员 发表于 2015-10-19 09:18:37

我记得好像是用 HAL_I2C_Master_Receive来读的吧。
页: [1]
查看完整版本: 关于STM32F411RET HAL 库的IIC