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.

[参考译文] CCS/MSP432P401R:如何在没有数据的情况下生成I2C主中继启动条件?

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/664005/ccs-msp432p401r-how-to-generate-i2c-master-repeat-start-condition-without-data

部件号:MSP432P401R

工具/软件:Code Composer Studio

我们的其中一个传感器需要这样的波形才能访问其寄存器:

它是"写入"开始,后跟"读取"开始"。 之间没有数据。 我尝试生成以下代码。 不管用。 听起来好像它会自动在之间插入一些FF.  

EUSCI_B1->CTLW0 |= EUSCI_B_CTLW0_TR;// I2C TX
EUSCI_B1->CTLW0 |= EUSCI_B_CTLW0_TXSTT;//启动条件


while (EUSSCI_B1->CTLW0 & EUSCI_B_CTLW0_TXSTT);

EUSCI_B1->CTLW0 =(EUSI_B1->CTLW0 &(~EUSI_B_CTLW0_TR))| EUSCI_B_CTLW0_TXSTT;// I2C RX

如何执行此操作?

谢谢!

汉斯

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

    由于不需要第二个地址阶段,因此不需要使用重复启动来执行此操作。 请查看 TI资源管理器中的i2c_master_w_multibyte-master_code示例,了解如何使用这些API:

    • MAP_I2C_masterSendMultiByteStart()
    • MAP_I2C_masterSendMultiByteNext()
    • MAP_I2C_masterSendMultiByteStop()

    此致,

     Bob L.

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

    我必须使用重复的开始来阅读此注册表:

    如果我直接读取这个I2C地址,我将得到另一个寄存器(温度值)。

    读取此寄存器的唯一方法是:

    1.发送I2C写入,但不发送数据。 如果有数据,它将覆盖寄存器。

    2.重复开始,更改为I2C读取。 现在,我看到的是寄存器值。

    传感器信息如下: http://www.quartzdyne.com/pdfs/DigitalTransProg.pdf,第16页

    您回复的只是将几个字节传输到从属(传感器),在我的情况下,它将覆盖寄存器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    从您的图表中,我解释了地址阶段A后面的所有3个字节的读取命令(在这种情况下,我的上述响应应该使用"masterReceiveMultiByte()" API。 因此,“读取状态”是MCU写入的命令,而不是MCU读取的状态。
    我得仔细研究一下这个问题。 如果您只是重复开始新事务,您将获得另一个地址阶段,而不是此处显示的内容。
    此致,
    Bob L.
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    "Read Status"(读取状态)是主控制器(MCU)发出的带有"address 1001 A2 A1 1"(地址1001 A2 A1 1)的重复开始读取(R/W=1)。

    第一个地址字节后面的“S”表示一个“开始”位。

    总之, 在所附图片中有两个"S"- START,三个"a"- ACK和一个"p"- STOP。