对于IIC发送数据的理解

    技术2022-07-12  101

    主机发送数据到从机

    👀1.数据是从低位开始到高位传输的。 👀2.接受数据是从高位到低位的。

    //IIC发送一个字节 void IIC_Send_Byte(u8 txd) { u8 t; SDA_OUT(); IIC_SCL=0; for(t=0;t<8;t++) { IIC_SDA=(txd&0x80)>>7; txd<<=1; delay_us(2); IIC_SCL=1; delay_us(2); IIC_SCL=0; delay_us(2); } }

    理解这部分代码:txd是我们要发送的数据,从机接收到的高位,应该是主机的低位,为了主机和从机的数据一致性,所以,要把主机的高位先移到低位,所以就有IIC_SDA=(txd&0x80)>>7;然后主机的高位传输完后,要左移txd<<=1; 这样主机发送的数据,从机才能正确的接收到。主要是知道发送数据的上面两点。

    另外

    //主机等待应答信号的到来 u8 IIC_Wait_Ack(void) { u8 ucErrTime=0; SDA_IN(); IIC_SDA=1;delay_us(1); IIC_SCL=1;delay_us(1); while(READ_SDA) { ucErrTime++; if(ucErrTime>250) { IIC_Stop(); return 1; } } IIC_SCL=0; return 0; }

    这部分是主机等待从机的应答信号,这部分是可有可无的,问题不大,初学者可以先暂时不记。

    Processed: 0.016, SQL: 9