IIC 总线分别为 SDA 数据线、SCL 时钟线
数据线一般决定传输数据
时钟线一般决定传输状态
1、起始信号和停止信号
SCL 线为高电平期间,SDA 线由高电平向低电平的变化表示起始信号。
SCL 线为高电平期间,SDA 线由低电平向高电平的变化表示终止信号。
具体代码如下
//起始信号
void iic_start()
{
IIC_SDA = 1; // 时钟线、数据线初始化
IIC_SCL = 1;
delay_10us(1);
IIC_SDA = 0; // 数据线拉低产生下降沿发送起始信号
delay_10us(1);
IIC_SCL = 0; // 拉低时钟线,方便后续数据传输
}
// 停止信号
void iic_stop()
{
IIC_SDA = 0; // 时钟线、数据线初始化
IIC_SCL = 1;
delay_10us(1);
IIC_SDA = 1; // 数据线拉高产生上升沿发送起始信号
delay_10us(1);
}
2、应答响应
每当发送器件传输完一个字节的数据后,后面必须紧跟一个校验位,这个校 验位是接收端通过控制 SDA(数据线)来实现的,以提醒发送端数据我这边已经接收完成,数据传送可以继续进行。这个校验位其实就是数据或地址传输过程中 的响应。
响应包括“应答(ACK)”和“非应答(NACK)”两种信号。作为数据接收端时,当设备(无论主从机)接收到