单片机需要串行扩展的原因:
社区安全报警系统,要对社区内众多地点的多个项目(例如,煤气泄漏,门磁开关,红外人体移动,温度,烟雾,玻璃破碎振动等)进行检测和报警,一旦出现异常情况能及时传送到物业管理部门或公安机关. 在这样一个庞大的监视网络中,众多的检测节点只能以串行方式接入系统.
推广使用的无线抄表技术,由于无线化的要求,不但要串行方式而且还必须采用串行无线数据传输的蓝牙接口
单片机Internet技术是为了把单片机接入互联网,进行控制信息的互联网传送,以实现更远距离以至异地自动检测与控制。而要把单片机接入互联网只能以串行方式。
虽然串行系统有速度较慢的缺点,但是随着单片机工作频率和性能的不断提高,速度问题已被逐渐淡化。
另外,串行方式还有连线简单,结构简化和成本低等优点,所以串行拓展已逐渐被广泛应用。
单片机串行扩展的实现方法主要有三种,即专用串行标准总线方法,串行通信口UART方法和软件模拟方法。
使用专用串行标准总线是串行扩展的主要方法。 目前常用的串行总线标准主要有: I2C总线,串行总线SPI和通用串行总线USB
I2C总线是一种串行同步通信技术,是Philips公司针对单片机需要而研制的,用于实现单片机串行外围扩展. I2C总线通过两条线以及两组信号的相互配合,就可以实现串行数据传输. I2C总线具有完善的总线协议,其内容涉及多个方面,这里只介绍其中的相关内容.
I2C总线具有严格的规范,具体表现在接口的电气性能,信号时序,信号传输的定义,总线状态设置和处理,以及总线管理规则等方面.
I2C总线结构
I2C总线是由串行时钟线SCL和串行数据线SDA构成的双向数据传输通路,其中SCL用于传送时钟信号,SDA用于传送数据信号. 通过I2C总线构成的单片机串行系统中,挂接在总线上的单片机以及各种外围芯片和设备等统称为器件.
一个I2C总线系统允许接入多个器件,传输速率不同也可以,甚至还可以是另一个远程I2C系统的驱动电路,从而形成两个I2C系统的相互交接. I2C总线系统中的器件都具有独立的电气性能,相互之间没有影响,可用独立电源供电(但需共地),并且可以在系统工作的情况下插拔
I2C总线器件接入
I2C总线的两条线SCL和SDA都是通过上拉电阻(一般为10kΩ)以漏极开路或集电极开路输出的形式接入I2C总线的.
I2C总线如此连接产生如下硬件关系:
I2C总线的状态和信号
I2C总线中的状态和信号都有严格的配合规则,并为相互配合关系赋予固定的含义。它们是I2C总线的基本元素,使用中应给予认真对待。
例如在主发送方式下,应答信号的发出过程是:主发送器释放SDA线并在SCL线上发出一个时钟脉冲(相当于本字节传送的第9个时钟脉冲),被释放而转为高电平的SDA线转由接收器控制并将SDA线拉低。所以对应于第9个时钟脉冲高电平期间的SDA低电平就是应答信号。对应于第9个时钟脉冲,SDA线仍保持高电平,则为非应答信号。
在使用时,应答信号以ACK(或A)表示,非应答信号以 A C K ‾ \overline{ACK} ACK(或NA)表示。
6. 等待状态
在I2C总线中,赋予接收数据的器件使系统进入等待状态的权力,但等待状态只能在一个数据字节完整接收之后进行。
例如,当进行主发送从接收的数据传输操作时,如果从器件在接收到一个数据字节之后,由于中断处理等各种原因而不能按时接收下一个字节。对此从接收器件可以通过把SCL线下拉为低电平,强行使系统进入等待状态。
在等待状态下,发送方不能发送数据,直到接收器认为自己能继续接收数据时,再释放SCL线,使系统退出等待状态,发送方才可以继续进行数据发送。
等待状态也称为延时状态,其实质是通过延长时钟脉冲周期而改变数据传输速率。
设置等待状态有两个作用:
正因为此,I2C总线系统对接入器件的速度没有要求。