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.

[参考译文] MSP-EXP432P4111:I2C 通信不工作

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1022262/msp-exp432p4111-i2c-communication-not-working

器件型号:MSP-EXP432P4111

您好!  

我对 MSP432上的 I2C 通信协议的基本内容有一些疑问。 我正在 CCS 中运行一个用于基本主控模式写入函数的代码。 这是我目前的代码:

main.C

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <I2CComm.h>
#include "msp.h"
#include <stdio.h>
void delayMs(int t);
void main(void){
I2C1_init();
while (1){
I2C1_Write(0x21, 0x14, 0x08);
delayMs(1000);
}
}
void delayMs(int t) {
int i, j;
for (j = 0; j < t; j++)
for (i = 750; i > 0; i--); /* Delay */
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当我运行代码时、它会像代码中所示那样停留在中断标志 while 循环上。 如果我将该行替换为:

while (EUSCI_B0->CTLW0 & 2);   //等待直到发送停止位

它还会卡在该特定的 while 环路上。 我将示波器连接到引脚1.6和1.7、当代码运行时、我看不到任何变化(它在~0V 时是平坦的)。 我出了什么问题? 谢谢你

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

    您好 Hugo、

    将代码发布到论坛时、请单击"Insert"->"、使用语法格式器 代码"、以便可读。 我已经编辑过您的帖子以反映此更改。  

    另请查看以下有关 eUSCI 的应用手册、第5节介绍了 I2C。 标题为 MSP430、但 MSP432P4共享相同的 eUSCI 模块。 执行这些调试步骤可以帮助您缩小问题的范围。  

    www.ti.com/lit/slaa734 

    I2C 最常见的问题是总线上的 I2C 上拉值不正确。 这也可以解释为什么您只看到0V。