0

我需要将 STM32L062 与 MC3413 加速度计通信,但只有当 uC 时钟设置为默认设置(16MHz HSI)并由 CubeMX 生成时,通信才有效。任何更改(例如将源更改为 ~4MHz MSI)都会导致从机不提供 ACK。我是初学者,我尝试了许多预分频器等组合,但我不知道出了什么问题。这是我的主循环代码:

while (1) {

    uint8_t config1;
    config1 = 0xC0;
    status[0]=HAL_I2C_Mem_Write(&hi2c1, 0x98, 0x07, 1, &config1, 1, 100); // 0xC0 konfiguruje akcelerometr w tryb standby

    config1 = 0x78;
    status[1]=HAL_I2C_Mem_Write(&hi2c1, 0x98, 0x08, 1, &config1, 1, 100); // 0x7A wlacza wykrywanie tapniec we wszystkich osiach i 256Hz sampling
    config1 = 0x05;
    status[2]=HAL_I2C_Mem_Write(&hi2c1, 0x98, 0x20, 1, &config1, 1, 100); // 0x05 powinno ustawic rozdzielczosc 14bit i zakres 2g

    config1 = 0xC1;
    status[3]=HAL_I2C_Mem_Write(&hi2c1, 0x98, 0x07, 1, &config1, 1, 100); // 0xC1 konfiguruje akcelerometr w tryb aktywny
    status[4]=HAL_I2C_Mem_Read(&hi2c1, 0x98, 0x11, 1, &polozenie_l, 1, 100);
    status[5]=HAL_I2C_Mem_Read(&hi2c1, 0x98, 0x12, 1, &polozenie_h, 1, 100);
    polozenie = ((polozenie_h << 8) | polozenie_l);
    
    HAL_Delay(100);

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}

https://i.stack.imgur.com/sgBnY.png

https://i.stack.imgur.com/itOLC.png

https://i.stack.imgur.com/4Y7Kp.png

https://i.stack.imgur.com/5PlLW.png

4

0 回答 0