Subject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Subject: RT1040 LPI2C3 – FIFO error while reading WHO_AM_I register from accelerometer

563 次查看
Harisha
Contributor I

Hello,

I am working on the i.MX RT1040 EVK using LPI2C3 to interface with an accelerometer (slave address = 0x18 base).
My goal is to read the WHO_AM_I register (address = 0x13) to check if the accelerometer is responding.

Steps I am following:

  1. Call LPI2C_MasterStart() with slave address 0x18 and write intent.

  2. Wait until TX FIFO count = 0 using LPI2C_MasterGetFifoCounts() to ensure TX FIFO is empty.

  3. Check for acknowledge from the slave — ACK is received.

  4. Send the WHO_AM_I register address (0x13) using LPI2C_MasterSend().

  5. Check ACK again — slave sends ACK.

Problem:

  • After sending the register address, TX FIFO count = 1 (not empty), meaning the transaction/byte is not being sent on the bus.

  • FIFO error flag is set in LPI2C_MasterGetStatusFlags().

  • No data transfer happens after that.

  • status = LPI2C_MasterStart(EXAMPLE_I2C_MASTER, 0x18, kLPI2C_Write);
    if (status == kStatus_Success) {
    LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &txCount);
    while (txCount) {
    LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &txCount);
    }

    if (LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER) & kLPI2C_MasterNackDetectFlag) {
    return kStatus_LPI2C_Nak;
    }

    uint8_t regAddr = 0x13;
    reVal = LPI2C_MasterSend(EXAMPLE_I2C_MASTER, &regAddr, 1);
    if (reVal != kStatus_Success) {
    return -1;
    }

    LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER, NULL, &txCount);
    printf("TX FIFO Count: %d\r\n", txCount);

    uint32_t flags = LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER);
    printf("Status = 0x%08X\r\n", flags);
    }

  • Question:
    Why is the FIFO error flag set, and why does TX FIFO count remain 1 after LPI2C_MasterSend()?
    Is there any specific configuration needed for LPI2C3 TX FIFO flush or clock settings before sending register data?

    Additional Info:

    • Using default LPI2C driver from MCUXpresso SDK.

    • LPI2C3 clock and pin mux are already configured.

    • Slave ACK is received correctly during START condition.

    • Using polling mode (not interrupt/DMA).

    Thanks in advance!

0 项奖励
回复
2 回复数

531 次查看
gusarambula
NXP TechSupport
NXP TechSupport

Hello  @Harisha 

Would you please share which accelerometer you are using?

Regards,
Gustavo

0 项奖励
回复

512 次查看
Harisha
Contributor I
i am using FXLS8974CFR3 triaxial accelerometer
0 项奖励
回复
%3CLINGO-SUB%20id%3D%22lingo-sub-2152793%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E4%B8%BB%E9%A2%98RT1040%20LPI2C3%20-%20%E4%BB%8E%E5%8A%A0%E9%80%9F%E5%BA%A6%E8%AE%A1%E8%AF%BB%E5%8F%96%20WHO_AM_I%20%E5%AF%84%E5%AD%98%E5%99%A8%E6%97%B6%E5%8F%91%E7%94%9F%20FIFO%20%E9%94%99%E8%AF%AF%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2152793%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3C%2FP%3E%3CP%3E%E6%88%91%E6%AD%A3%E5%9C%A8%3CSTRONG%3Ei.MX%20RT1040%20EVK%3C%2FSTRONG%3E%E4%B8%8A%E4%BD%BF%E7%94%A8%3CSTRONG%3ELPI2C3%3C%2FSTRONG%3E%E8%BF%9E%E6%8E%A5%E5%8A%A0%E9%80%9F%E5%BA%A6%E8%AE%A1%EF%BC%88%E4%BB%8E%E5%9C%B0%E5%9D%80%20%3D%200x18%20base%EF%BC%89%E3%80%82%3CBR%20%2F%3E%E6%88%91%E7%9A%84%E7%9B%AE%E6%A0%87%E6%98%AF%E8%AF%BB%E5%8F%96%3CSTRONG%3EWHO_AM_I%3C%2FSTRONG%3E%E5%AF%84%E5%AD%98%E5%99%A8%EF%BC%88%E5%9C%B0%E5%9D%80%20%3D%200x13%EF%BC%89%EF%BC%8C%E6%A3%80%E6%9F%A5%E5%8A%A0%E9%80%9F%E5%BA%A6%E8%AE%A1%E6%98%AF%E5%90%A6%E6%9C%89%E5%93%8D%E5%BA%94%E3%80%82%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E6%88%91%E9%81%B5%E5%BE%AA%E7%9A%84%E6%AD%A5%E9%AA%A4%3C%2FSTRONG%3E%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3E%E4%BD%BF%E7%94%A8%E4%BB%8E%E6%9C%BA%E5%9C%B0%E5%9D%80%200x18%20%E8%B0%83%E7%94%A8%20LPI2C_MasterStart()%EF%BC%8C%E5%B9%B6%E5%86%99%E5%85%A5%E6%84%8F%E5%9B%BE%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E4%BD%BF%E7%94%A8%20LPI2C_MasterGetFifoCounts()%20%E7%AD%89%E5%BE%85%E7%9B%B4%E5%88%B0%20TX%20FIFO%3CSTRONG%3E%E8%AE%A1%E6%95%B0%20%3D%200%3C%2FSTRONG%3E%EF%BC%8C%E4%BB%A5%E7%A1%AE%E4%BF%9D%20TX%20FIFO%20%E4%B8%BA%E7%A9%BA%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E6%A3%80%E6%9F%A5%E4%BB%8E%E5%B1%9E%E8%AE%BE%E5%A4%87%E7%9A%84%3CSTRONG%3E%E7%A1%AE%E8%AE%A4%3C%2FSTRONG%3E-%20%E5%B7%B2%E6%94%B6%E5%88%B0%20ACK%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E4%BD%BF%E7%94%A8%20LPI2C_MasterSend()%20%E5%8F%91%E9%80%81%20WHO_AM_I%20%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%EF%BC%880x13%EF%BC%89%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E5%86%8D%E6%AC%A1%E6%A3%80%E6%9F%A5%20ACK%20-%20%E4%BB%8E%E7%AB%99%E5%8F%91%E9%80%81%20ACK%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%3CSTRONG%3E%E9%97%AE%E9%A2%98%3C%2FSTRONG%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3E%E5%8F%91%E9%80%81%E5%AF%84%E5%AD%98%E5%99%A8%E5%9C%B0%E5%9D%80%E5%90%8E%EF%BC%8C%3CSTRONG%3ETX%20FIFO%20%E8%AE%A1%E6%95%B0%20%3D%201%3C%2FSTRONG%3E%EF%BC%88%E9%9D%9E%E7%A9%BA%EF%BC%89%EF%BC%8C%E8%BF%99%E6%84%8F%E5%91%B3%E7%9D%80%E4%BA%A4%E6%98%93%2F%E5%AD%97%E8%8A%82%E6%9C%AA%E5%9C%A8%E6%80%BB%E7%BA%BF%E4%B8%8A%E5%8F%91%E9%80%81%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C_MasterGetStatusFlags()%20%E4%B8%AD%E8%AE%BE%E7%BD%AE%E4%BA%86%3CSTRONG%3EFIFO%20%E9%94%99%E8%AF%AF%E6%A0%87%E5%BF%97%3C%2FSTRONG%3E%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E4%B9%8B%E5%90%8E%E4%B8%8D%E4%BC%9A%E8%BF%9B%E8%A1%8C%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3Estatus%20%3D%20LPI2C_MasterStart(EXAMPLE_I2C_MASTER%2C%200x18%2C%20kLPI2C_Write)%3B%3CBR%20%2F%3Eif%20(status%20%3D%3D%20kStatus_Success)%20%7B%3CBR%20%2F%3ELPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%2C%20NULL%2C%26amp%3BtxCount)%EF%BC%9B%3CBR%20%2F%3Ewhile%20(txCount)%20%7B%3CBR%20%2F%3ELPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%2C%20NULL%2C%26amp%3BtxCount)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3Eif%20(LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER)%26amp%3B%20kLPI2C_MasterNackDetectFlag)%20%7B%3CBR%20%2F%3Ereturn%20kStatus_LPI2C_Nak%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3Euint8_t%20regAddr%20%3D%200x13%3B%3CBR%20%2F%3EreVal%20%3D%20LPI2C_MasterSend(EXAMPLE_I2C_MASTER%2C%26amp%3BregAddr%2C%201)%3B%3CBR%20%2F%3Eif%20(reVal%20!%3D%20kStatus_Success)%20%7B%3CBR%20%2F%3Ereturn%20-1%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3ELPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%2C%20NULL%2C%26amp%3BtxCount)%3B%3CBR%20%2F%3Eprintf(%22TX%20FIFO%20Count%3A%25d%5Cr%5Cn%22%2C%20txCount)%EF%BC%9B%3C%2FP%3E%3CP%3Euint32_t%20flags%20%3D%20LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER)%3B%3CBR%20%2F%3Eprintf(%22Status%20%3D%200x%2508X%5Cr%5Cn%22%2C%20flags)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSTRONG%3E%E9%97%AE%3A%3C%2FSTRONG%3E%3CBR%20%2F%3E%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E8%AE%BE%E7%BD%AE%3CSTRONG%3EFIFO%20%E9%94%99%E8%AF%AF%E6%A0%87%E5%BF%97%3C%2FSTRONG%3E%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%20LPI2C_MasterSend()%20%E4%B9%8B%E5%90%8E%20TX%20FIFO%20%E8%AE%A1%E6%95%B0%E4%BB%8D%E4%B8%BA%201%EF%BC%9F%3CBR%20%2F%3E%E5%9C%A8%E5%8F%91%E9%80%81%E5%AF%84%E5%AD%98%E5%99%A8%E6%95%B0%E6%8D%AE%E4%B9%8B%E5%89%8D%EF%BC%8CLPI2C3%20TX%20FIFO%20%E5%88%B7%E6%96%B0%E6%88%96%E6%97%B6%E9%92%9F%E8%AE%BE%E7%BD%AE%E6%98%AF%E5%90%A6%E9%9C%80%E8%A6%81%E4%BB%BB%E4%BD%95%E7%89%B9%E5%AE%9A%E9%85%8D%E7%BD%AE%EF%BC%9F%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E5%85%B6%E4%BB%96%E4%BF%A1%E6%81%AF%3C%2FSTRONG%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3E%E4%BD%BF%E7%94%A8%20MCUXpresso%20SDK%20%E4%B8%AD%E7%9A%84%E9%BB%98%E8%AE%A4%20LPI2C%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C3%20%E6%97%B6%E9%92%9F%E5%92%8C%E5%BC%95%E8%84%9A%E5%A4%8D%E7%94%A8%E5%99%A8%E5%B7%B2%E7%BB%8F%E9%85%8D%E7%BD%AE%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E5%9C%A8%20START%EF%BC%88%E5%BC%80%E5%A7%8B%EF%BC%89%E6%9D%A1%E4%BB%B6%E4%B8%8B%E6%AD%A3%E7%A1%AE%E6%8E%A5%E6%94%B6%E4%BB%8E%E7%AB%99%20ACK%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E4%BD%BF%E7%94%A8%E8%BD%AE%E8%AF%A2%E6%A8%A1%E5%BC%8F%EF%BC%88%E4%B8%8D%E6%98%AF%E4%B8%AD%E6%96%AD%2FDMA%EF%BC%89%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E6%8F%90%E5%89%8D%E6%84%9F%E8%B0%A2%EF%BC%81%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2152793%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E9%80%9A%E4%BF%A1%26amp%3B%20%E6%8E%A7%E5%88%B6%EF%BC%88I3C%20%7C%20I2C%20%7C%20SPI%20%7C%20FlexCAN%20%7C%20%E4%BB%A5%E5%A4%AA%E7%BD%91%20%7C%20FlexIO%EF%BC%89%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2153052%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Subject%3A%20RT1040%20LPI2C3%20%E2%80%93%20FIFO%20error%20while%20reading%20WHO_AM_I%20register%20from%20accelerometer%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2153052%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20FXLS8974CFR3%20%E4%B8%89%E8%BD%B4%E5%8A%A0%E9%80%9F%E5%BA%A6%E8%AE%A1%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2152932%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Subject%3A%20RT1040%20LPI2C3%20%E2%80%93%20FIFO%20error%20while%20reading%20WHO_AM_I%20register%20from%20accelerometer%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2152932%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E4%BD%A0%E5%A5%BD%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F253824%22%20target%3D%22_blank%22%3E%40Harisha%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E8%AF%B7%E5%91%8A%E8%AF%89%E6%88%91%E4%BB%AC%E6%82%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%E5%93%AA%E7%A7%8D%E5%8A%A0%E9%80%9F%E5%BA%A6%E8%AE%A1%EF%BC%9F%3C%2FP%3E%0A%3CP%3E%E6%95%AC%E4%B8%8A%EF%BC%8C%3CBR%20%2F%3EGustavo%3C%2FP%3E%3C%2FLINGO-BODY%3E