This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSPM0L1116: I2C.CFIFOSR.TXFIFOCNT is reset as 4 not 8

Part Number: MSPM0L1116

From TRM, the reset value of this register should be 8.

After I reset I2C peripheral, I read this register value is 4, not 8.

 

The code I reset the I2C peripheral:

/*! Enable I2C power*/      
#define I2C_EnablePower(I2Cx)                                 SET_BIT(I2Cx->GPRCM.PWREN, I2C_PWREN_KEY_UNLOCK_W | I2C_PWREN_ENABLE_ENABLE)
/*! I2C peripheral reset*/      
#define I2C_PeripheralReset(I2Cx)                              I2Cx->GPRCM.RSTCTL =\
                                                               (I2C_RSTCTL_KEY_UNLOCK_W | I2C_RSTCTL_RESETSTKYCLR_CLR |\
                                                               I2C_RSTCTL_RESETASSERT_ASSERT)

    I2C_PeripheralReset(I2C0);
    I2C_EnablePower(I2C0);

The register I read after reset:

image.png

 

  • Hi Yiren,

    Yes, I also find the same scenario as you stated here. During my test, I find the I2C FIFO only has 4 depth.

    Let me check internally and feedback to you.

    B.R.

    Sal

  • Oh, I have same feeling, I'm not able to send I2C data one time more then 4 bytes :(

  • Hi Yiren,

    Sorry for the inconvenience.

    I am checking with internal team to see if it is a typo in datasheet or a bug.

    B.R.

    Sal

  • As near as I can tell, this is the only way to know (aside from using the debugger as you have):

    C:\ti\mspm0_sdk_2_09_00_01\source\ti\devices\msp\m0p>grep I2C_SYS_FENTRIES *.h
    mspm0c1105_c1106.h:#define I2C_SYS_FENTRIES                              (4)       /* !< Parameter for number of FIFO entries */
    mspm0c110x.h:#define I2C_SYS_FENTRIES                              (4)       /* !< Number of FIFO entries */
    mspm0g110x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g150x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g151x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g310x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g350x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g351x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0g352x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0h321x.h:#define I2C_SYS_FENTRIES                              (4)       /* !< Number of FIFO entries */
    mspm0l110x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0l111x.h:#define I2C_SYS_FENTRIES                              (4)       /* !< Number of FIFO entries */
    mspm0l122x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0l130x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0l134x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */
    mspm0l222x.h:#define I2C_SYS_FENTRIES                              (8)       /* !< Number of FIFO entries */

  • Hi Yiren,

    I have checked with internal team, the spec is designed with 4-entry depth.

    I have reported it to document team to do an update in next MSPM0L111x datasheet release on I2C details chapter.

    Thanks for your feedback.

    B.R.

    Sal