学习嵌入式,除了最基本的C语言学习以外,非常重要也是最最基本的知识要点就是弄透设备之间的通讯协议,其中主要讨论的有IIC总线、SPI总线、UART串口通讯和CAN总线四种通讯方式。
IIC总线协议(Inter-Integrated Circuit)是设备间最简单的通信协议之一,它是一种串行数据总线,只由两根线组成数据线(SDA)和时钟线(SCL),这两根线上可以连接多个设备,可实现一对一,一对多和多对多。由于只有一根数据线,所以是一种半双工通信方式,同一时间只能一端发送另一端接收,控制时钟线的作为主机。在数据传输的过程中采用的是高位(MSB)在前低位(LSB)在后的传输方式(小端模式)。
一.IIC协议时序
时序是IIC总线协议在编程上的敲门砖,弄懂了时序图才能进行下一步的工作,具体的图形可以在网上百度,这里就只做文字说明,时序信号分为起始信号、终止信号、应答信号、非应答信号。在开始数据传输之前,即总线处于闲置状态时,SDA和SCL的初始电平都被上拉电阻控制为高电平,而且不同状态的改变都是通过SDA信号线的改变实现的。
(1)起始信号:SCL保持高电平期间(保持一定的延时 1us即可),SDA由高电平变为低电平,编程为:SCL=1;SDA=1;delay();SDA=0;SCL=0;(SCL拉低可进行数据传输)
(2)终止信号:SCL保持高电平期间(保持一定的延时 1us即可),SDA由低电平变为高电平,编程为:SCL=1;SDA=0;delay();SDA=1,SCL=0;
注:


1万+

被折叠的 条评论
为什么被折叠?



