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

645件の閲覧回数
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 返答(返信)

613件の閲覧回数
gusarambula
NXP TechSupport
NXP TechSupport

Hello  @Harisha 

Would you please share which accelerometer you are using?

Regards,
Gustavo

0 件の賞賛
返信

594件の閲覧回数
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%BB%B6%E5%90%8D%3A%20RT1040%20LPI2C3%20%E2%80%93%20%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%8B%E3%82%89WHO_AM_I%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%E9%9A%9B%E3%81%AEFIFO%E3%82%A8%E3%83%A9%E3%83%BC%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2152793%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81%20%3CSTRONG%3ELPI2C3%3C%2FSTRONG%3E%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%20(%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20%3D%200x18%20%E3%83%99%E3%83%BC%E3%82%B9)%20%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9%E3%81%99%E3%82%8B%3CSTRONG%3Ei.MX%20RT1040%20EVK%3C%2FSTRONG%3E%E3%81%AB%E5%8F%96%E3%82%8A%E7%B5%84%E3%82%93%E3%81%A7%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E7%A7%81%E3%81%AE%E7%9B%AE%E6%A8%99%E3%81%AF%E3%80%81%20%3CSTRONG%3EWHO_AM_I%3C%2FSTRONG%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20(%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20%3D%200x13)%20%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%81%A3%E3%81%A6%E3%80%81%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%8C%E5%BF%9C%E7%AD%94%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E7%A7%81%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E6%89%8B%E9%A0%86%3A%3C%2FSTRONG%3E%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3E%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%200x18%20%E3%81%A7%20LPI2C_MasterStart()%20%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%80%81%E3%82%A4%E3%83%B3%E3%83%86%E3%83%B3%E3%83%88%E3%82%92%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C_MasterGetFifoCounts()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%3CSTRONG%3ETX%20FIFO%20%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%20%3D%200%3C%2FSTRONG%3E%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%BE%E3%81%A7%E5%BE%85%E6%A9%9F%E3%81%97%E3%80%81TX%20FIFO%20%E3%81%8C%E7%A9%BA%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%81%8B%E3%82%89%E3%81%AE%3CSTRONG%3E%E7%A2%BA%E8%AA%8D%E5%BF%9C%E7%AD%94%3C%2FSTRONG%3E%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%20%E2%80%94%20ACK%20%E3%81%8C%E5%8F%97%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C_MasterSend()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20WHO_AM_I%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20(0x13)%20%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3EACK%20%E3%82%92%E5%86%8D%E5%BA%A6%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%20-%20%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%E3%81%8C%20ACK%20%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3E%3CSTRONG%3E%E5%95%8F%E9%A1%8C%EF%BC%9A%3C%2FSTRONG%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%9F%E5%BE%8C%E3%80%81%20%3CSTRONG%3ETX%20FIFO%20%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%20%3D%201%3C%2FSTRONG%3E%20(%E7%A9%BA%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84)%20%E3%81%A8%E3%81%AA%E3%82%8A%E3%80%81%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%2F%E3%83%90%E3%82%A4%E3%83%88%E3%81%8C%E3%83%90%E3%82%B9%E4%B8%8A%E3%81%A7%E9%80%81%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%82%92%E6%84%8F%E5%91%B3%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C_MasterGetStatusFlags()%20%E3%81%A7%3CSTRONG%3EFIFO%20%E3%82%A8%E3%83%A9%E3%83%BC%20%E3%83%95%E3%83%A9%E3%82%B0%3C%2FSTRONG%3E%E3%81%8C%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%81%9D%E3%82%8C%E4%BB%A5%E9%99%8D%E3%81%AF%E3%83%87%E3%83%BC%E3%82%BF%E8%BB%A2%E9%80%81%E3%81%AF%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20LPI2C_MasterStart(EXAMPLE_I2C_MASTER%E3%80%810x18%E3%80%81kLPI2C_Write)%3B%3CBR%20%2F%3E%20if%20(%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%3D%20kStatus_Success)%20%7B%3CBR%20%2F%3E%20LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%E3%80%81NULL%E3%80%81%26amp%3BtxCount)%3B%3CBR%20%2F%3E%20(txCount)%20%E3%81%AE%E9%96%93%20%7B%3CBR%20%2F%3E%20LPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%E3%80%81NULL%E3%80%81%26amp%3BtxCount)%3B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3CP%3Eif%20(LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER)%20%26amp%3B%20kLPI2C_MasterNackDetectFlag)%20%7B%3CBR%20%2F%3E%20kStatus_LPI2C_Nak%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3CP%3Euint8_t%20%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%20%3D%200x13%3B%3CBR%20%2F%3E%20reVal%20%3D%20LPI2C_MasterSend(EXAMPLE_I2C_MASTER%E3%80%81%26amp%3BregAddr%E3%80%811)%3B%3CBR%20%2F%3E%20if%20(reVal%20!%3D%20kStatus_Success)%20%7B%3CBR%20%2F%3E%20-1%20%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3CP%3ELPI2C_MasterGetFifoCounts(EXAMPLE_I2C_MASTER%E3%80%81NULL%E3%80%81%26amp%3BtxCount)%3B%3CBR%20%2F%3E%20printf(%22TX%20FIFO%20%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%3A%20%25d%5Cr%5Cn%22%2C%20txCount)%3B%3C%2FP%3E%3CP%3Euint32_t%20%E3%83%95%E3%83%A9%E3%82%B0%20%3D%20LPI2C_MasterGetStatusFlags(EXAMPLE_I2C_MASTER)%3B%3CBR%20%2F%3E%20printf(%22%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%200x%2508X%5Cr%5Cn%22%2C%20%E3%83%95%E3%83%A9%E3%82%B0)%3B%3CBR%20%2F%3E%20%7D%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%3CSTRONG%3E%E8%B3%AA%E5%95%8F%EF%BC%9A%3C%2FSTRONG%3E%3CBR%20%2F%3E%20%3CSTRONG%3EFIFO%20%E3%82%A8%E3%83%A9%E3%83%BC%20%E3%83%95%E3%83%A9%E3%82%B0%3C%2FSTRONG%3E%E3%81%8C%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%80%81LPI2C_MasterSend()%20%E5%BE%8C%E3%81%AB%20TX%20FIFO%20%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%8C%201%20%E3%81%AE%E3%81%BE%E3%81%BE%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F%3CBR%20%2F%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%20%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%E3%80%81LPI2C3%20TX%20FIFO%20%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E8%A8%AD%E5%AE%9A%E3%81%AB%E7%89%B9%E5%88%A5%E3%81%AA%E6%A7%8B%E6%88%90%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E8%BF%BD%E5%8A%A0%E6%83%85%E5%A0%B1%3A%3C%2FSTRONG%3E%3C%2FP%3E%3CUL%3E%3CLI%3E%3CP%3EMCUXpresso%20SDK%20%E3%81%AE%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%20LPI2C%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELPI2C3%20%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%81%A8%E3%83%94%E3%83%B3%20MUX%20%E3%81%AF%E3%81%99%E3%81%A7%E3%81%AB%E6%A7%8B%E6%88%90%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ESTART%20%E6%9D%A1%E4%BB%B6%E4%B8%AD%E3%81%AB%E3%82%B9%E3%83%AC%E3%83%BC%E3%83%96%20ACK%20%E3%81%8C%E6%AD%A3%E3%81%97%E3%81%8F%E5%8F%97%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%9D%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%A2%E3%83%BC%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%20(%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%2FDMA%20%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93)%E3%80%82%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%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%E3%81%A8%E5%88%B6%E5%BE%A1%EF%BC%88I3C%20%7C%20I2C%20%7C%20SPI%20%7C%20FlexCAN%20%7C%20%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%8D%E3%83%83%E3%83%88%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%E7%A7%81%E3%81%AFFXLS8974CFR3%E4%B8%89%E8%BB%B8%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%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%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%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%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%82%B0%E3%82%B9%E3%82%BF%E3%83%9C%3C%2FP%3E%3C%2FLINGO-BODY%3E