数据字节将从 I2C 主器件发送到从器件。 从器件在地址之后而不是在数据字节之后发送一个 ACK。 RX 寄存器为0x00。
使用了非常慢的时钟速率。 主器件和从器件位于同一 IC 中(主器件:UCB1、从器件:UCB2)。
SDA 和 SCL 上的电阻器为4.7k Ω。 示波器显示了发送地址(0x48)和数据字节(0xA5)时行的电平。
这是主器件的初始化:
// Configure USCI_B0 for I2C mode UCB1CTLW0 |= UCSWRST; // Software reset enabled UCB1CTLW0 |= UCMODE_3 | UCMST | UCSSEL__SMCLK; // I2C mode, Master mode, sync UCB1BRW = 0x1388; // baudrate = SMCLK / x UCB1I2CSA = 0x000A; // Slave address UCB1CTLW0 &= ~UCSWRST; // clear reset register UCB1IE |= UCRXIE | UCTXIE | UCNACKIE | UCBCNTIE;
这是从器件的初始化:
// Configure USCI_B0 for I2C mode UCB2CTLW0 |= UCSWRST; // Software reset enabled UCB2CTLW0 |= UCMODE_3 | UCSYNC; // I2C mode, sync mode UCB2I2COA0 = 0x000A | UCOAEN; // own address is 0x0A + enable UCB2CTLW0 &= ~UCSWRST; // clear reset register UCB2IE |= UCTXIE | UCRXIE0 | UCSTPIE;
此示波器显示如下:
请帮助我们解决这个问题。
当主器件和从器件位于同一个 IC 时、是否有特殊注意事项? 如果地址被确认、但数据不是、原因可能是什么?
非常感谢您的帮助!
此致
哈迪