2017-09-25 12 views
1

私はSTM32F103マイクロコントローラを持っており、割り込みモードでI2Cバスを使ってLIDARとインターフェイスしたいと考えています。ポーリングモードで正常に動作しています。マスターモードのI2C LIDAR SF20から2バイトを読み取る

私が直面した問題は次のとおりです。 - 2バイトの読み取り後にバスが解放されませんでした。

STM32F103のI2Cバスから2バイトを読み取る方法を説明できる人はいますか?

答えて

0

この機能を使用して、I2Cバスを初期化することができます。

/* I2C1 init function */ 
static void MX_I2C1_Init(void) 
{ 

    hi2c1.Instance = I2C1; 
    hi2c1.Init.ClockSpeed = 400000; 
    hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; 
    hi2c1.Init.OwnAddress1 = 0; 
    hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; 
    hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; 
    hi2c1.Init.OwnAddress2 = 0; 
    hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; 
    hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; 
    if (HAL_I2C_Init(&hi2c1) != HAL_OK) 
    { 
    Error_Handler(); 
    } 

} 

次に、HAL_I2C_Mem_Readを呼び出して2バイトを読み取ることができます。

HAL_I2C_Mem_Read(&hi2c1,(uint16_t)(ADDRESS << 1),register_address,I2C_MEMADD_SIZE_8BIT,rxbuffer,buffer_size,100); 
関連する問題