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 上的端口 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 和所有有用的驱动程序和设计块。
感谢您的帮助!