I2C problem na STM32Cube a STM32F429Discovery
Stano
stano.hw na gmail.com
Pátek Duben 4 13:56:57 CEST 2014
Zdravim konferenci
Vychadzam z STM32F429I-Discovery example. Skusal som pristupovat k I2C z
2 threadov, v jednom k touch controleru, v druhom k externemu senzoru.
Pouzivam funkciu IOE_ReadMultiple() co je vlastne wrapper HAL_I2C_Mem_Read()
Problem je ze sa to vie zablokovat a skonci na timeoute.
Dodefinoval som __HAL_LOCK() a __HAL_UNLOCK() na RTOS mutexy. To vsak
nepomohlo.
Nakoniec som dospel k rieseniu, funkciu HAL_I2C_Mem_Read() je potrebne
zamknut este pred podmienkou if(hi2c->State == HAL_I2C_STATE_READY)
A odrazu program nema problem, kazdy thread si pracuje so svojou periferiou.
Otazka je, bud som absolutne nepochopil vyznam zamkov a kniznica
nepredpoklada pouzitie z viacerych threadov naraz alebo je v kniznici
pomerne vazny bug. Problem je ze sa to netyka len jednej konkretnej
funkcie ale prinajmensom celej I2C kniznice a po letmom pohlade do
zdrojakov pravdepodobne aj inych periferii.
Pouzivam kniznice z balika STM32Cube_FW_F4_V1.1.0
Aj ked samotna kniznica ma v hlavicke V1.0.0
S pozdravom
Stano
Další informace o konferenci Hw-list