C-如何编程I2C从模式



我未能理解如何编码我的MCU来聆听I2C总线上的地址并相应地执行。C中的许多示例代码用于主设备。我想更好地了解如何为从设备编写代码。我使用SMB0STA状态寄存器吗?我在下面发布了一个功能,我认为我会"聆听"提示启动和输出数据的提示。0xA8是"收到自己的地址 R。ACK传输"的状态代码。根据我的C8051F020 MCU数据表。

unsigned char i2c_Slave_Read (void)
{
    unsigned char data_out[8];
    data_out[8] = "LED 1 ON";
    while (SI)
    if (SMB0STA == 0xA8)
    {
        P5 = 0x10;
        SMB0DAT = data_out;
    }
}

从数据表的第18.3.3节中描述了从

的第18.3.3节

您使用从属地址编程SMB0ADR注册。地址检测是由硬件完成的,然后在数据到达时为您提供中断。然后,您可以读取SMB0STA中的状态以查看正在发生的事情,并使用SMB0DAT读取/写数据。请参阅表18.1,其中解释了SMB0STA状态机以及您的代码应采取的操作。

最新更新