目录
一.什么是RS232?
1. 历史背景:
2. 电气特性:
3. 连接器类型:
4. 通信特点:
5. 应用场景:
二.什么是RS485?
1. 电气特性:
2. 通信模式:
3. 传输距离与速率:
4. 节点连接能力:
5. 应用领域广泛:
6.与 RS232 相比,RS485 具有以下优势:
1. 传输距离更远:
2. 支持多点连接:
3. 抗干扰能力更强:
4. 传输速率更高:
5. 硬件成本较低:
6. 兼容性和扩展性好:
三.什么是IIC?
1. 物理结构:
2. 通信模式:
3. 地址与寻址:
4. 数据传输格式:
5. 传输速率:
IIC的优点
1. 硬件连接简洁:
2. 软件寻址方便:
3. 多主设备支持:
4. 数据传输可靠:
5. 广泛的应用适应性:
IIC与UART的区别
1. 通信方式:
2. 信号线数量及功能:
3. 数据传输格式:
4. 传输速率:
5. 应用场景:
6. 协议复杂度:
IIC配置
一.什么是RS232?
RS232是美国电子工业协会颁布的一种串行物理接口标准。以下是关于它的详细介绍:
1. 历史背景:
- RS232标准由美国电子工业联合会与贝尔等公司一起开发,于1969 年公布。最初是为远程通信连接数据终端设备(DTE)与数据通信设备(DCE)而制定,但后来广泛用于计算机与终端或外设之间的近端连接。
2. 电气特性:
- RS232采用负逻辑传送数据。规定逻辑“0”的电平为 +5V~+15V,逻辑“1”的电平为 -5V~-15V。这种电平规定与常见的 TTL 电平(+5V 为逻辑正,0V 为逻辑负)不兼容,所以在与 TTL 电路连接时需要使用电平转换芯片,例如 MC1488、SN75150 等可将 TTL 电平转换为 RS232 电平,MC1489、SN75154 等可进行反向转换。
3. 连接器类型:
- 最开始定义的是 DB-25 型连接器,有 25 个管脚,分为不同的信号组,如异步通信的电压信号、20mA 电流环信号等,但后来 20mA 电流环信号逐渐不再被支持。 - 随着发展,DB-9 型连接器被广泛使用,它只提供异步通信的 9 个信号,并且引脚分配与 DB-25 型不同。如果要连接使用不同连接器的设备,需要使用专门的电缆线。
4. 通信特点:
- 通信方式:属于异步通信,在数据传输时,发送方会在数据帧的开头添加一个起始位(低电平),在结尾添加一个或多个停止位(高电平),接收方通过检测起始位和停止位来确定数据的开始和结束。
- 传输速率:在异步传输时,比特率一般为 20kbps 以下。
- 传输距离:最大传输距离标准值为 50 英尺(约 15 米),在实际应用中通常只能达到 15 米左右。
- 通信模式:只允许一对一、点对点的通信,无法直接实现多站点通信。
5. 应用场景:
- 由于 RS232 产生较早,在很多老设备以及对传输速率、抗噪声干扰能力要求不高的场景中仍有应用,例如仪器仪表设备、PLC 以及嵌入式领域常将其当作调试口来使用。
- 在一些工业控制、数据采集系统中,RS232 也用于设备之间的数据通信。
二.什么是RS485?
RS485是由美国电子工业协会制定的一种通信标准。它具有以下特点:
1. 电气特性:
- 差分信号传输:RS485采用平衡驱动器和差分接收器的组合,利用两线之间的电压差来传递逻辑信号。当电压差为+2V~+6V时表示逻辑“1”,电压差为-2V~-6V时表示逻辑“0”。这种传输方式对外部干扰,尤其是共模干扰有良好的抵抗能力,可在长距离和高噪声环境下实现可靠的数据传输。 - 接口电平兼容性:接口信号电平与TTL电平兼容,这使得它可以方便地与TTL电路连接,不易损坏接口电路的芯片。
2. 通信模式:
- 半双工通信:RS485支持半双工通信模式,即数据在某一时刻只能单向传输。同一总线上的设备,在某个时间段内要么作为发送方,要么作为接收方,不能同时进行发送和接收。
3. 传输距离与速率:
- 传输距离远:在不使用中继器的情况下,RS485的最大通信距离可达1200米以上(通常速率≤100Kbps时)。如果使用中继器对信号进行放大,理论上可以极大地延长传输距离。
- 传输速率较高:其数据最高传输速率可达10Mbps,但传输速率与传输距离成反比,随着距离的增加,传输速率会相应降低。
4. 节点连接能力:
- 支持多节点:RS485采用总线式拓扑结构,允许多个设备连接到同一总线上。一般情况下,最多可以挂接32个节点,如果使用特制的485芯片,节点数量可以达到128个甚至更多,最大可支持到400个节点。
5. 应用领域广泛:
由于RS485具有上述优点,它被广泛应用于工业自动化、安防监控、智能交通、智能楼宇、机房监控等领域。在这些场景中,多个设备需要进行数据通信和联网控制,RS485能够很好地满足需求。
6.与 RS232 相比,RS485 具有以下优势:
1. 传输距离更远:
- RS232:采用不平衡传输方式,受电容负载限制以及共地噪声和共模干扰等因素影响,其最大传输距离通常在15米左右。如果使用150pf/m的通信电缆,最大通信距离为15m;若电缆的电容量减小,通信距离可适当增加,但一般也不会超过20米。
- RS485:采用平衡传输的差分信号方式,抗干扰能力强,在不使用中继器的情况下,最大传输距离可达1200米以上。如果采用阻抗匹配、低衰减的专用电缆,传输距离甚至可以达到1800米。若距离超过1200米,还可以加中继器,最多可加8只,使传输距离接近10千米。
2. 支持多点连接:
- RS232:属于点对点的通信方式,只能实现一对一的连接,即一台设备的发送端对应另一台设备的接收端,无法满足多设备通信的需求。
- RS485:支持多点连接,可以在一个总线上连接多个设备,最多可连接128个收发器,实现真正意义上的多点通信。通常采用主从式通信,即一台主机控制多个从机,方便构建分布式系统。
3. 抗干扰能力更强:
- RS232:传输方式为不平衡传输(单端通讯),接口使用一根信号线和一根信号返回线构成共地的传输形式,这种方式容易产生共模干扰,抗噪声干扰性较弱。
- RS485:采用平衡驱动器和差分接收器的组合,利用两根线上的电压差来表示逻辑信号。当信号受到干扰时,两根线上会同时受到相同程度的干扰,但电压差基本保持不变,所以具有很强的抗共模干扰能力,能在恶劣的电磁环境下保证数据传输的稳定性。
4. 传输速率更高:
- RS232:数据传输速率较低,标准规定的数据传输速率为每秒50、75、100、150、300、600、1200、2400、4800、9600、19200波特,最高波特率一般为19200bps左右,实际应用中可能会受到传输距离等因素的影响而降低。
- RS485:数据最高传输速率可达10Mbps,在短距离通信时能够实现高速数据传输,满足对数据传输速度要求较高的应用场景。
5. 硬件成本较低:
- RS232:由于其实现方式相对简单,早期应用较为广泛,但随着技术的发展,其性能上的不足逐渐凸显,在一些对通信要求较高的场景中需要额外的信号转换和增强设备,增加了成本。
- RS485:在长距离传输、多设备连接以及抗干扰能力等方面具有优势,并且其硬件实现相对简单,不需要复杂的电路设计和额外的信号增强设备,因此在大规模应用中硬件成本相对较低,适用于一些对成本敏感的应用场景。
6. 兼容性和扩展性好:
- RS485:遵循一定的标准和规范,具有较好的兼容性和互操作性,能够与多种设备和系统进行无缝连接和通信。并且其总线式拓扑结构方便用户根据实际需求灵活地调整网络结构和设备数量,具有较好的扩展性。
- RS232:由于其点对点的通信方式和有限的传输距离等限制,在兼容性和扩展性方面相对较差。
三.什么是IIC?
IIC(Inter-Integrated Circuit),也称为 I²C(“I-squared-C”),中文叫集成电路总线。它是一种串行通信总线,由飞利浦公司在 1980 年代为连接主板、嵌入式系统或手机等的低速周边设备而发展。其主要特点如下:
1. 物理结构:
- 信号线:IIC 总线硬件通常由两根信号线组成,一根是双向的数据线 SDA(Serial Data),用于传输数据;另一根是时钟线 SCL(Serial Clock Line),用于控制数据传输的时序。
- 连接方式:不同的器件并联接在这两条线上,通过上拉电阻接到电源 VCC。总线空闲时,SDA 和 SCL 都是高电平。当其中一个设备拉低总线,整条线就变为低电平,器件与器件之间是“与”关系。
2. 通信模式:
- 多主从架构:IIC 支持多主从通信模式,即总线上可以有多个主设备和多个从设备。任何一个能够进行发送和接收的设备都可以成为主设备,在某一时刻,只有一个主设备能控制总线,发起通信并产生时钟信号。
- 半双工通信:数据传输是半双工的,同一时间只能单向通信,要么主设备向从设备发送数据,要么从设备向主设备发送数据。
3. 地址与寻址:
总线上的每个设备都有一个唯一的地址,主设备通过地址来选择要通信的从设备。当主设备发送一个地址后,总线上的所有从设备都会将该地址与自己的地址进行比较,如果相同,则认为自己被主设备寻址。
4. 数据传输格式:
- 数据帧:数据传输以数据帧为单位,包括起始条件、从设备地址、数据、应答信号和停止条件等部分。起始条件是当 SCL 保持“高”时,SDA 由“高”变为“低”;停止条件是当 SCL 保持“高”且 SDA 由“低”变为“高”,起始和停止条件均由主设备产生。
- 字节与应答:输出到 SDA 线上的每个字节必须是 8 位,每次传输的字节数不受限制,但每个字节传输后都需要有一个应答信号 ACK。如果接收器件不能接收完整字节,可保持时钟线 SCL 为低,使发送器进入等待状态。
5. 传输速率:
标准模式下最高速度可达 100kHz,快速模式下最高可达 400kHz。 IIC 总线具有使用信号线少、自动寻址、多主机时钟同步和仲裁等功能,在各类电子系统中得到广泛应用,如连接微控制器与各种外围设备,如存储器、LED 及 LCD 驱动器、A/D 及 D/A 转换器等。
IIC的优点
IIC 总线具有以下优点:
1. 硬件连接简洁:
- 信号线少:IIC 总线只需要两根信号线,即串行数据线(SDA)和串行时钟线(SCL),就可以实现多个设备之间的通信。这极大地减少了芯片之间的连线数量,简化了电路设计,降低了硬件成本和电路板的空间占用。例如在小型电子设备如智能手环、电子体温计等中,IIC 总线的简洁连接方式可以使电路板更加紧凑。
- 上拉电阻简单:由于总线中的器件输出级通常是漏极开路或集电极开路的,所以只需要在 SDA 和 SCL 线上接上拉电阻即可将信号线拉至高电平,保证总线在空闲状态时的稳定。这种上拉电阻的连接方式简单且成本低廉。
2. 软件寻址方便:
- 独立地址:总线上的每个器件都有一个唯一的地址,主设备通过这个地址来选择要通信的从设备。这种寻址方式非常灵活,便于系统扩展和管理。例如在一个智能家居系统中,有多个传感器和执行器通过 IIC 总线与主控芯片连接,主控芯片可以通过不同的地址分别与各个器件进行通信。
- 纯软件寻址:IIC 总线的寻址是通过软件实现的,不需要额外的片选线,这进一步简化了硬件电路的设计,也减少了芯片的引脚数量。
3. 多主设备支持:
- 灵活的主从切换:任何能够进行发送和接收的设备都可以成为主设备,并且在不同的时刻可以根据需要切换主从角色。这使得多个设备之间可以相互通信,提高了系统的灵活性和可扩展性。例如在一个多传感器的数据采集系统中,不同的传感器可以在需要时作为主设备向其他设备发送数据,或者作为从设备接收主控设备的指令。
- 总线控制权竞争解决:IIC 总线具有仲裁机制,可以解决多个主设备同时竞争总线控制权的问题。当多个主设备同时发起通信时,仲裁机制会根据预先设定的规则确定哪个主设备获得总线控制权,保证了通信的有序进行。
4. 数据传输可靠:
- 应答机制:每传输一个字节数据后,接收方都会发送一个应答信号(ACK)给发送方,以表示数据是否成功接收。如果发送方没有收到应答信号,就可以判断数据传输出现了错误,从而采取相应的重传或错误处理措施。这种应答机制保证了数据传输的可靠性。
- 数据传输的稳定性:在数据传输过程中,时钟信号(SCL)用于同步数据的传输,只有在时钟信号的低电平期间,数据线上的电平状态才允许变化,而在时钟信号的高电平期间,数据线上的数据必须保持稳定。这种严格的时序要求保证了数据传输的准确性和稳定性。
5. 广泛的应用适应性:
- 支持多种速率:IIC 总线支持多种不同的传输速率,标准模式下最高速度可达 100kbit/s,快速模式下最高可达 400kbit/s,高速模式下甚至可以达到 3.4Mbit/s(虽然并非所有设备都支持高速模式)。这使得 IIC 总线可以满足不同应用场景对数据传输速率的要求。
- 适用于多种设备:IIC 总线适用于连接各种类型的电子设备,如微控制器、存储器、传感器、显示器、键盘等。无论是在简单的电子小制作中,还是在复杂的电子系统中,IIC 总线都能发挥重要的作用。
IIC与UART的区别
IIC(Inter-Integrated Circuit)和 UART(Universal Asynchronous Receiver Transmitter)均是常见的串行通信协议,它们的区别如下:
1. 通信方式:
- IIC:是同步通信协议,通信时需要一根串行时钟线(SCL)来同步数据传输,数据的发送和接收都与时钟信号紧密相关。在时钟的上升沿或下降沿对数据进行采样或改变数据状态,这确保了数据传输的准确性和同步性。例如,主设备在发起通信时,会通过控制 SCL 时钟线的频率来协调与从设备之间的数据传输。
- UART:属于异步通信协议,没有专门的时钟信号线。数据传输的同步依赖于双方事先约定好的波特率,发送方和接收方按照这个波特率来确定数据位的传输时间间隔。在数据传输过程中,发送方会在数据帧的开头添加一个起始位(低电平),在结尾添加一个或多个停止位(高电平),接收方通过检测起始位和停止位来确定数据的开始和结束。
2. 信号线数量及功能:
- IIC:只需要两根信号线,即串行数据线(SDA)和串行时钟线(SCL)。SDA 用于传输数据,SCL 用于提供时钟信号。并且支持多主设备和多从设备的连接方式,多个设备可以连接到同一条 IIC 总线上,通过设备地址来进行区分和通信。
- UART:通常至少需要两根信号线,一根用于发送数据(TXD),一根用于接收数据(RXD),还有一根公共地线(GND)。它是全双工通信方式,即发送和接收可以同时进行。
3. 数据传输格式:
- IIC:数据传输以字节为单位,每次传输的字节数没有严格限制,但一般会按照规定的格式进行。先发送设备地址,然后是数据。一个地址字节通常由 7 个地址位和 1 个读写指示位组成,7 位地址位可以支持最多 128 个设备地址(若使用 10 位寻址模式则可以支持更多设备)。数据传输时,每传输一个字节后都需要接收方的应答信号(ACK)来确认数据是否成功接收。
- UART:数据帧格式包括起始位、数据位、校验位(可选)和停止位。起始位用于标志数据传输的开始,数据位的数量一般为 5 位、6 位、7 位或 8 位,校验位可用于检测数据传输过程中的错误,停止位用于标志数据传输的结束。
4. 传输速率:
- IIC:标准模式下最高速度可达 100kbit/s,快速模式下最高可达 400kbit/s,高速模式下甚至可以达到 3.4Mbit/s。
- UART:其传输速率取决于波特率的设置,常用的波特率有 9600bps、115200bps 等,但总体上传输速率相对较低,并且由于是异步通信,在数据传输的稳定性和实时性方面可能不如 IIC。
5. 应用场景:
- IIC:常用于连接同一电路板上的各种集成电路和功能模块,例如连接微控制器与存储器、传感器、显示器等外围设备。由于其硬件连接简单、占用空间小,适合在对电路板空间要求较高的小型电子设备中使用。
- UART:常用于实现计算机与外部串行设备之间的通信,如计算机与调制解调器、串口打印机、GPS 模块等设备的连接。在嵌入式系统中,UART 也常用于调试和监控,方便开发者查看系统的运行状态和输出信息。
6. 协议复杂度:
- IIC:协议相对复杂,需要处理设备地址、应答信号、总线仲裁等机制。但正是这些机制保证了 IIC 总线在多设备通信时的可靠性和稳定性。
- UART:协议相对简单,只需要设置好波特率、数据位、校验位和停止位等参数,就可以进行数据传输。但在多机通信时,需要额外的逻辑来处理设备之间的通信协调问题。
IIC配置
代码:
#include <s3c2440.h>
#include "iic.h"
void iic_init(void)
{
//配置GPE14\15引脚功能为SCL SDA
GPECON &= ~(0xf << 28);
GPECON |= (0xa << 28);
IICCON |= (1 << 7);
IICCON |= (1 << 6);
IICCON |= (1 << 5);
IICCON &= ~(0xf << 0);
}
int iic_read(unsigned char addr, unsigned char * data, int len)
{
int i = 0;
IICSTAT &= ~(0x3 << 6);
IICSTAT |= (0x2 << 6);
IICDS = addr;
IICSTAT = 0xb0;
IICCON &= ~(1 << 4);
while(!(IICCON & (1 << 4)));
for(i = 0; i < len; i++)
{
data[i] = IICDS;
IICCON &= ~(1 << 4);
while(!(IICCON & (1 << 4)));
}
IICSTAT = 0x90;
IICCON &= ~(1 << 4);
return i;
}
int iic_write(unsigned char addr, unsigned char * data, int len)
{
int i = 0;
IICSTAT |= (0x3 << 6);
IICDS = addr;
IICSTAT = 0xf0;
IICCON &= ~(1 << 4);
while(!(IICCON & (1 << 4)));
for(i = 0; i < len; i++)
{
IICDS = data[i];
IICCON &= ~(1 << 4);
while(!(IICCON & (1 << 4)));
}
IICSTAT = 0xd0;
IICCON &= ~(1 << 4);
return i;
}