HAL I2C TXIS FLAG
HAL I2C TXIS FLAG
IO Expenderımla I2C bağlantısı kurmaya çalışırken HAL_I2C_Master_Transmit fonksiyonumun != HAL_OK döndürüyor. Fonksiyonumun driverinda TXIS bayrağının ayarlanamadığını bundan dolayı fonskiyonun işlevini yerine getirmediğini gördüm . Bu konuda nerede ve nasıl bir hata yaptığımı açıklayabilirseniz sevinirim.
Teşekkürler.
while (hi2c->XferCount > 0U) { /* Wait until TXIS flag is set */ if (I2C_WaitOnTXISFlagUntilTimeout(hi2c, Timeout, tickstart) != HAL_OK) { return HAL_ERROR; }
Merhabalar,
Sorunun TXIS bayraklarında olduğunu sistemi debuglayarak mı buldunuz? Debug sırasında timingleri kaçırıp TXISyi yakalayamamış olabilir. Bunun dışında IO expenderınızın addressini doğru yolladığınıza emin misiniz. Eğer 7 bitlik adresleme kullanılıyor ise bir bit shiftlemeniz gerekebilir. IO expenderin response verdiğini I2C scanner gibi bir uygulama ile deneyebilir misiniz? Sıkıntı IO expender tarafında oladabilir.
stm32 scanner: https://deepbluembedded.com/stm32-i2c-scanner-hal-code-example/
Aşağıdaki dökümantasyonda 16. sayfada txis ile ilgili bilgiyi inceleyebilirsiniz.
dökümantasyon: https://avys.omu.edu.tr/storage/app/public/idris.sancaktar/137331/Chapter_22_I2C_ARM_2.pdf
Haberlerinizi bekliyorum.
Bu sayfada TXIS bayrağını ve I2C kullanımında izlenecek yollar, debug yöntemleri hakkında güzel bir anlatım gerçekleştirilmiş.
http://pomad.fr/node/24
Öncelikle yardımınız için teşekkür ederim. Evet debug işlemi sırasında fonskiyonun ıcerısıne girerek stepover ile debug gerçekleştirdim. Adresleme işleminde bitshift işlemini uyguladım ve datasheet de belırtılen I2C address üzerinden haberleşmeye çalıştım. I2C scanner ı daha önce kullanmamıştım inceleyeceğim.:)