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 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 位以开始事务。
此外、这里还有 一个指向 可能有用示例的链接。