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.

[参考译文] MSPM0G3507:MSPM0G3507 IIC 问题

Guru**** 2614265 points
Other Parts Discussed in Thread: MSPM0G3507, MSPM0L1306

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1257880/mspm0g3507-mspm0g3507-iic-problem

器件型号:MSPM0G3507
主题中讨论的其他器件: MSPM0L1306

我正在使用 MSPM0G3507的 IIC 通信、参考为 i2c_tmp_LP_MSPM0G3507_freeftos_ticlang;参数设置为:

x0a uint8_t txBuffer [8]={0x0a、0x0B、0x03、0 x04、0 x05、 0 x06、0 x07、0 x08};

/*通用 I2C 事务设置*/

i2cTransaction.writeBuf = txBuffer;

i2cTransaction.writeCount = 1;

i2cTransaction.readBuf = rxBuffer;

i2cTransaction.ReadCount = sizeof (rxBuffer);

i2cTransaction。targetAddress=0x1E;

使用函数:I2C_transfer (i2c、&i2cTransaction);

不过、通过逻辑分析(如附图所示)、当 i2cTransaction .writeCount=1时、DATA 为0x00。 当  i2cTransaction.writeCount=3时、数据为0x0a、0x00、0xff。

我想正确的结果是:当 i2cTransaction.writeCount=1时、数据应为 0x0a。 当  i2cTransaction.writeCount=3时、数据应为 0x0a、0x0B、0x03

writeCount=1

writeCount=3

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我试过您的代码。 但是、我看到结果很好。  

    控制器软件:  

    目标软件: I2C_TARGET_rw_multibyte_fifo_interrupts_LP_MSPM0L1306_nortos_ticlang

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    现金先生/女士:

       我再试一次,结果 总是如此。

       您的器件是 MSPM0L1306、我的器件是 MSPM0G3507、是否可能由于器件不同而导致结果不同?

       顺便说一下、我需要使用 MSPM0G3507来读取和写入 EEPROM (24C02)、我需要使用哪个演示代码?

       谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用 MSPM0G3507作为控制器。 L1306用作目标。 它和你的一样。  

    对于 NO-RTOS、您可以检查此演示代码 i2c_controller_rw_multibyte_fifo_interrupts。

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已读取此代码、似乎 EEPROM 读取和写入操作的实现不容易实现或不容易实现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我在桶中进行了搜索、但没有一个非常适合 EEPROM 应用的示例。  

    您可能需要修改应用的示例代码。

    此致、

    现金豪

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个问题、器件地址的有效范围是0x00-0x7f、但 EEPROM 的地址是0xa0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    在 MSPM0 I2C 模块中、该地址长度为7位。 因此、有效范围应为0x00-0x7F。 但在某些情况下、它会添加 R/W 位并组合为8位长字节。 在本例中、如果 EEPROM 为0xa0。 您可以尝试向右移动一位0xa0 -> 0x50作为7位长的目标地址。  

    此致、

    现金豪