HAL I2C TXIS FLAG

Çözüldü147 görüntülenmeSTM32 MCUs#ı2c #TXISFLAG stm32

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;
      }

ommersimsek En iyi cevap olarak seçildi Haziran 29, 2022
0

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.

ommersimsek Yeni yorum gönderildi Haziran 29, 2022

Ö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.:)

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

0