来源《霖锋带你征服嵌入式》
0、前言
计算机通信是指计算机与外部设备或者计算机与计算机之间的信息交换。
通信分为并行通信和串行通信,在多微机系统以及现代测控系统中信息的交换多采用串行通信方式
串行口工作前,应对其进行初始化,设置产生波特率的定时器1、串行口控制和中断控制。
0.1并行通信
每次发送前,会进行询问,接收方进行应答,相当于一次握手。8位同时发送。一般用于计算机内部总线、排线等需求高速的传输。
0.2串行通信
0.3异步通信
一个字节前面1位是起始位,中间是8位数据,最后一位是停止位,一个字节中的各个位之间的时间间隔是固定的(由波特率决定),每个字节之间的时间间隔则是任意的。
注意:同一字符内的各位之间是有间隔的,且间隔是相同的。
注意:空闲是高电平,起始位为低电平,+数据位+校验位+停止位是高电平
奇偶校验的原理如下:
1)当是奇校验时,接收端收到的数据中,1的个数为奇数个;(如果发送端数据中1的个数为偶数个,则校验位为1;如果发送端数据中1的个数为奇数个,则校验位为0;这样保证总的1的个数为奇数个)
2)当是偶校验时,接收端收到的数据中,1的个数为偶数个。(如果发送端数据中1的个数为偶数个,则校验位为0;如果发送端数据中1的个数为奇数个,则校验位为1;这样保证总的1的个数为偶数个)
奇偶校验是一个字节中,第8位是校验位;
代码和校验原理:
代码和校验是传输的字节求和,和作为为一个校验字节(多个字节相加,会有进位,只保留最后一个字节的内容)添加在数据末尾进行传输。
接收端,与发送端一样,将收到的数据也进行求和,并将结果与发送端发送的最后一个字节进行比较,相同则认为发送数据正确,不同则认为发送数据有误。
循环冗余即CRC校验,实际中常用。
串行通信时 传输越远,传输速率越低。
串行通信接口标准
1)RS-232C接口(最常用)//有25针(比较古老的)和9针的,每种接口又分公头和母头。
实际中,我们其实只用TXD、RXD和SGND三根线(即2,3,5引脚)就可以通信如上图,左边所示(甲的TXD连接乙的RXD;甲的RXD连接乙的TXD,甲乙的SGND直接连接)。右边是25脚的情况。
TXD,为发送数据,RXD为接收数据。
串口通信距离一般不要超过15米。
电平偏移是因为 SGND 接地,距离远会有大的电位差
2)RS-422A 接口
3)RS-485接口