如何编程I2C从模式

时间:2012-10-20 04:15:09

标签: c embedded microcontroller 8051

我无法理解如何编写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;
    }
}

1 个答案:

答案 0 :(得分:2)

datasheet

的第18.3.3节开始介绍从属操作

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