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:一个 I2C 功能问题。

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/932217/msp432e401y-one-question-of-i2c-function

器件型号:MSP432E401Y

您好、香榭丽舍

在我客户的用例中、当他发送 I2C 从地址并获得 NAK 时、他需要在发出停止条件之前保持 SDA 和 SCL 一段时间。

他使用函数 MAP_I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START)发出从器件地址并发现 I2C 模块将生成停止条件、这是否合理?

请提出您的想法、感谢您的帮助。

此致、

Luke

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

    您好、Luke、

    这是标准 I2C 协议的一部分、受器件支持。  您可以在技术参考手册的 I2C 部分19.3.1 I 2C 总线功能概述(https://www.ti.com/lit/pdf/slau723)中找到该说明

    Srinivas

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

    Srinivas、

    感谢您的回答。

    我知道、我的问题是当使用 MAP_I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START)启动 I2C 转换时、该函数调用不应设置 I2CMCS 寄存器的停止位、I2C 模块自动发送停止条件的原因是什么? 这是因为从器件发回一个 NAK 吗? 我们是否可以避免这个问题并将 SDA 和 SCL 保持在低电平一段时间、然后设置停止位来发出 I2C 停止条件?

    Luke

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

    您好、Luke、

    根据 I2CMCS 寄存器中 STOP 位的描述、如果您将其设置为0、它将不会生成 STOP。 您已经尝试过吗?

     map_I2CMasterControl()支持的默认选项可在 SDK 中的 i2c.c 中找到,网址为 。 我认为您希望实现的选项今天不受该函数的支持。 在调用 MAP_I2CMasterControl()之后,必须通过将 IC2MCS 寄存器中的 STOP 位显式设置为0来添加该功能。

    Srinivas

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

    您好 Srinivas、

    使用函 数 I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START)发送 I2C 从地址、 I2C_MASTER_CMD_BURST_SEND_START 的定义为0x03、只需设置 I2CMCS 寄存器的开始和运行位、它不应发送停止条件、因为我们不会设置停止位。

    I2C 模块似乎会自动发出 I2C 停止条件、并在检测到从器件 NACK 该地址时终止 I2C 通信、您能否帮助确认此问题?

    Luke

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

    您好 Srinivas、

    你有什么意见吗?

    此致、

    Luke