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.

[参考译文] MSP432E401Y:I2C8 MDR 寄存器未更改

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1447047/msp432e401y-i2c8-mdr-register-not-changing

器件型号:MSP432E401Y

工具与软件:

您好!

我一直在尝试使用 MSP432E401Y 上的端口 D (GPIOD)来使用第8个 I2C 端口(I2C8)、但我无法对 MDR (I2CMDR @0x400B8008)寄存器进行任何更改。  

我逐步浏览了所有表达式、并使用了技术手册中的多个示例、未做任何更改。  

我已经检查了硅树脂错误、它没有提到任何有关此特定问题的信息。  

谢谢你

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

    您好!

    [报价用户 id="633727" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1447047/msp432e401y-msp-low-power-microcontroller-forum "]我一直尝试使用 MSP432E401Y 上的端口 D (GPIOD)使用第8个 I2C 端口(I2C8)、我无法对 MDR (I2CMDR @0x400B8008)寄存器进行任何更改。  [报价]

    您是说在您写入 MDR 后、总线上没有事务发生、或者如果您从 MDR 寄存器读取、则没有数据吗?

    这种情况是否也仅发生在 I2C8或其他 I2C 上?

    请注意、MDR 是用于写入和读取的寄存器。 您无法读回您写入的内容。 当您读取时、MDR 反映了 在移位寄存器上接收到的数据。 我强烈建议您使用逻辑分析仪或示波器来查看总线上接收到的数据。  

    另请注意、根据在 MCS 中是否启用了突发位、MDR 寄存器将被忽略、您需要从 I2CFIFODATA 寄存器读取数据。  

    最后、不确定您为什么会绕过 SDK。 您在不使用提供的驱动程序的情况下以 DRM (直接寄存器操作)方式进行编码。 MSP432E SDK 为 driverlib 提供执行 I2C 读取/写入事务的函数。 这些驱动程序已经过验证。 使用它将极大地节省您大量的时间。 此外、还提供了一些示例、这些示例可以帮助您率先入门。 无论出于何种原因必须创建您自己的 I2C 驱动程序、我强烈建议您参考 I2C 驱动程序源代码的 SDK、该代码可在 C:\ti\simplelink_msp432e4_sdk_4_20_00_12\source\ti\devices\msp432e4\driverlib\i2c.c 文件中找到。  

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

    我发现问题在于未设置的中断屏蔽位。 根据我的发现、如果没有设置特定超时条件(I2C_MIMR_CLKIM)、此过程就无法开始。 现在看来,这是一个很好的例子 。

    我同意关于不为该项目使用驱动程序库的意见。 但是、我刚刚继承了这个项目、不打算在我自己的任何设计上执行此操作。 裸机编程绝对是一项徒劳的工作。 这只是为了帮助设计完成生产线。 我通常使用 code composer 和所有有用的驱动程序和设计块。
    感谢您的帮助!