Hallo zusammen,
ich möchte mit einem STM32L152RCT6 über I2C ein eeprom auslesen. Habe
aber immer mit dem 2. Byte Probleme.
Ich habe mit dem STM32CubeMX ein Projekt aufgesetzt und den I2C-Bus
configuriert. Ich nutze den I2C im Interrupt mode.
1 | /* I2C2 init function */
|
2 | void MX_I2C2_Init(void)
|
3 | {
|
4 | HAL_I2C_DeInit(&hi2c2);
|
5 |
|
6 | hi2c2.Instance = I2C2;
|
7 | hi2c2.Init.ClockSpeed = 100000;
|
8 | hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2;
|
9 | hi2c2.Init.OwnAddress1 = 0;
|
10 | hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
|
11 | hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLED;
|
12 | hi2c2.Init.OwnAddress2 = 0;
|
13 | hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLED;
|
14 | hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLED;
|
15 | HAL_I2C_Init(&hi2c2);
|
16 |
|
17 | }
|
So sieht die Ausleseroutine aus
1 | HAL_I2C_Mem_Read_IT(&hi2c2, 0x4B, Reg_Addr[0], Add_Length, Reg_MTCH6102, Size);
|
Alle ausgelesenen Bytes sind richtig nur das 2. nicht. Ich habe von
Total Phase noch ein I2C Usb Adapter, damit funktioniert es.
Ich komme im Moment nicht weiter kennt jemand vielleicht das Problem?