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.

[参考译文] MSP430G2553:MSP430G2553-I2C-配置开漏

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/774589/msp430g2553-msp430g2553-i2c--configuring-open-drain

器件型号:MSP430G2553

我是 MSP Launchpad 的初学者。

我正在使用 I2C 传输单字节数据、只需检查信号(起始位、从地址...) 进行测量。 现在、我还没有连接从设备。 在示波器中看到来自 Launchpad 的 SCL 和 SDA 引脚的信号时出现问题。 当一个字节被传输时、它在整个过程中显示为高电平。

我已经检查了在 while 环路内切换 SCL 位(位6)、只是检查上升时间是否大于下降时间、但两者都是相同的。 似乎 I2C 未被激活。

我已将10k 上拉电阻器放置到 SCL 和 SDA 引脚。

开漏配置是否有任何问题,如果有,如何解决?

这是代码

#include 
unsigned char TXData;

void main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止 WDT
P1SEL |= BIT6 + BIT7; //将 I2C 引脚分配给 USCI_B0
P1SEL2|= BIT6 + BIT7; //将 I2C 引脚分配给 USCI_B0
P1REN |= BIT6 + BIT7;
P1OUT |= BIT6 + BIT7;
P1DIR |= BIT0;
UCB0CTL1 |= UCSWRST; //启用 SW 复位
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C 主设备,同步模式
UCB0CTL1 = UCSSEL_2 + UCSWRST; //使用 SMCLK、保持软件复位
UCB0BR0 = 10; // fSCL = SMCLK/12 =~100kHz
UCB0BR1 = 0;
UCB0I2CSA = 0x48; //从机地址为048h
UCB0CTL1 &=~UCSWRST; //清除 SW 复位,恢复操作
IE2 |= UCB0TXIE; //启用 TX 中断

TXData = 0x55; //保持 TX 数据

、同时(1)
{
//P1OUT ^= BIT6;
UCB0TXBUF = TXData; //加载 TX 缓冲区
_DELAY_CYCLES (2000000);
P1OUT ^= BIT0;

}

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

    您好 Rahul、

    我看不到您正在设置 START 位以开始事务。

    此外、这里还有 一个指向 可能有用示例的链接。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢它的工作、有人评论说这就是为什么、我也在使用内部上拉电阻器。 我连接了外部上拉电阻器、然后获得了 SCL 和 SDA