对于IIC的一些见解---自学IIC总线的学习经验

IIC作为一种通信协议,由SCL和SDA构成,下面直接放干货:

1.所有的启动、终止、数据传输、应答、非应答,这些操作想要有效,前提是SCL是高电2频。简单的说,就是SCL高电平时才能传信号;

2.IIC数据传输有三种方式(个人总结):(1) 主机对从机发一字节的数据;(2)主机对从机读取一字节数据;(3)主机对从机读 / 写多字节数据;

   以AT24C02芯片(从机)为例:  

步骤如下:(1)启动---> 写从机地址(写 【0】)--> 从机应答(一段时间没有收到到则默认接收) --> 写从机的存储地址 --> 从机应答 --> 主机向从机写一字节数据 --> 从机应答 --> 终止;

                  (2)启动---> 写从机地址(写 【1】)--> 从机应答(一段时间没有收到到则默认接收) --> 写从机的存储地址 --> 从机应答 --> 主机从从机读一字节数据 --> 主机非应答 --> 终止;

第三个程序我借鉴了博客一位博主的:

uchar AT_Read(uchar add)
{
    uchar dat;
    IIC_Start;
    IIC_Write(0xa0);
    IIC_WaitAck();
    IIC_Write(add);
    IIC_WaitAck();
    dat = IIC_Read();
    IIC_SendAck(1);
    return dat;
}

void AT_ReadStr(uchar *dat, uchar add, uchar num)
{
    while(num)
    {
        dat = AT_Read(add);
        dat++;
        add++;
        num--;
    }
}
        

 

上一篇:基于单片机电动车电压电流监测系统资料-电路程序资料下载


下一篇:1267【毕设课设】基于单片机ACS712直流电流测量检测设计