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:MSP432 I2C:轮询发送中断标志和启动条件标志。

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/647185/ccs-msp432p401r-msp432-i2c-poll-for-transmit-interrupt-flag-and-start-condition-flag

器件型号:MSP432P401R

工具/软件:Code Composer Studio

大家好:

当我在 MSP432红色开发板上运行 I2C 演示程序时遇到问题。

演示程序为:i2c_mast_rw_rw_riped_start-master_code

当我的程序执行以下语句时、它会进入无限等待。

/*发送开始和发送缓冲区的第一个字节。 *
MAP_I2C_masterSendMultiByteStart (EUSCI_B0_BASE、TXData[0]); 

我通过单步调试发现、当执行以下语句时、我进入死区周期

//轮询发送中断标志和启动条件标志。
while (BITBAND_peri (EUSCI_B_CMSIS (模态)->CTLW0、
EUSCI_B_CTLW0_TXSTT_OFS)
||!BITBAND_peri (EUSCI_B_CMSIS (模态)->IFG、
EUSCI_B_IFG_TXIFG0_OFS)); 

我查看了演示程序的说明

/*********
* MSP432 I2C - EUSCI_B0 I2C 主器件 TX 字节到 MSP432从器件-重复启动
*
说明:此演示通过 I2C 总线连接两个 MSP432。 主
设备*发送到从设备。 这是主代码。 它持续
*传输一组数据、并演示如何实现 I2C
*主发送器、发送多个字节、后跟重复起始
*和读取多个字节。
这是从传感器等 I2C 从器件读取寄存器值的常见操作。
写入的 I2C 的*事务如下所示:
*
______________________________
*|开始| |开始| | |
*| 0x48Addr | 0x04 | 0x48Addr |<10 Byte Read>| Stop |
*| W | | R | | |
*|_________________ _________________ _________________ _________________________________ _________________ |
*
* ACLK = n/a、MCLK = HSMCLK = SMCLK = BRCLK =默认 DCO =~3.0MHz
*
/|\/|\
* MSP432P401 10k 10k MSP432P401
* 从器件 || Master
* -------- |||---
* | P1.6/UCB0SDA|<-|--+-|P1.6/UCB0SDA |
* | || | |
* | || | |
* | P1.7/UCB.S.|<!---- >|P1.7/UCB.S. |
* | | | |
*
(小部分 / 

说明表明需要两个 MSP432开发板来完成演示、SCL SDA 需要10K 的拉电阻。

我刚刚使用了一个开发板、SCL SDA 处于暂停状态以运行演示程序。  这是否会导致程序出现问题?

如果这不是原因,另一个原因是什么?  因为我用这个参考来与我在芯片上生产的电源芯片通信、但是它没有成功。 我无法使用示波器来捕获任何数据

SCLK SDA 波形。

非常感谢!

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

    Alex、

    您说的

    [引用 user="Alex824">我刚刚使用了一个开发板、SCL SDA 处于暂停状态以运行演示程序。  这是否会导致程序出现问题?

    您是否意味着您仅使用一个开发板?

    此示例基于其是两块电路板、一个主板和一个从属板的前提。 如果您没有第二个板运行示例代码的从器件部分、那么您将始终停留在它轮询 SendmasterMultiByteStart 函数内的发送中断/启动条件标志的位置。 特别是由于您没有任何设备可以接收来自或来自或传输到的 ACK、因此代码将会挂起。  

    此外、请确保使用正确的电阻器。  

    请阅读第 24节以了解有关 I2C 的更多信息。  www.ti.com/.../slau356g.pdf