请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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; }