IIC通信也是一种通信方式,我上一篇写到关于串口通信的,和这个iic很类似,都是设备之间进行通信的桥梁。串口和iic两种通信的硬件连线都是用两根线,所不同的是串口的线一根用来接收数据,另一根用来发送数据。而iic通信的两根线,一根是时钟线,用来保持两个通信设备之间的时钟同步,另一根是数据线,包含接收和发送。什么时候收什么时候发则由时钟线来决定。
另外,iic也分硬件iic和软件iic。硬件iic这里我不是很清楚,没有去详细了解,而且一般我们也不用硬件iic,因为硬件iic数据的传输不稳定(我也是查资料得知的,具体怎么不稳定没有去深入了解)。用的最多的还是软件iic,相比硬件iic只不过是在软件编程的时候比较复杂一点。这里我就说重点吧,关于iic起始,结束,应答,非应答,等待应答信号等。其他网上查资料都有的。
直接看程序比较好理解!!!
1、开始信号
void IIC_Start(void)
{
SDA_OUT();
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;
delay_us(4);
IIC_SCL=0;
}
2、停止信号
void IIC_Stop(void)
{
SDA_OUT();
IIC_SCL=0;
IIC_SDA=0;
delay_us(4);