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.

[参考译文] 回复:MSP432P401R:如何在 I2C 中接收一个字节

Guru**** 2603845 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/649250/re-msp432p401r-how-to-rx-one-byte-in-i2c

我尝试过它、在 EUSCIB0_IRQHandler 中为 EUSCI_B_I2C_CLOCK _LOW_TIMEOUT_INTERRUPT 设置一个断点、但不会发生任何情况。

我有一个不同的问题、在主机接收模式下接收一个字节的最佳方式是什么? 所有中断方法都用于接收示例中的两个以上字节。

我尝试使用 map_I2C_masterReceiveSingeByte(),它运行正常,除了从器件的 NACK 之外,它将永远处于 while 循环中。 如果我通过 EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_TXSTT 发送 START 和 STOP;EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_TXSTP; 则 MAP_I2C_masterReceiveSingle()返回值将从 i2c 总线具有一个字节延迟。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我将您的话题分开、因为问题的后续内容涉及另一个主题。

    对于单字节 Rx 操作、正确的过程是同时设置 STT 和 STP 位。
    请尝试以下步骤:
    //同时设置起始位和停止位
    EUSCI_B0->CTLW0 |= EUSCI_B_CTLW0_TXSTT + EUSCI_B_CTLW0_TXSTP;
    //为 RX 或轮询启用中断以读取 RXBUF

    希望这对您有所帮助!
    -Priya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我一起使用中断、它起作用。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在主控模式下、如果我想发送一个字节、并且重复 START 以读回一个字节、那么我该怎么做。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Phillip、
    感谢您积极参与论坛!
    我认为您的问题也发布在不同的独特主题中。 因此、我将关闭此主题并在唯一主题中进行跟进。


    一般而言-为了帮助我们更有效地管理论坛帖子-在单个主题中分组相关问题或在独特主题中提问跟进。


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