首页 > 代码库 > 串行通信学习(1)
串行通信学习(1)
★基本通讯方式
●并行通讯方式
通常是指数据字节中的各位上的数据通过多条数据线同时进行传送,每一位数据都需要一条数据线。这种方式的特点:传输速度相对较快,但是如果进行长距离的数据传送,成本会很高。
●串行通讯方式
串行通信就是将数据分成一位一位的,在一条数据线上逐个的进行传输。因此对于一个字节的数据至少需要分八次传输,相比并行通信,传输速度慢。串行通讯又分为:同步串行通信和异步串行通讯。
●异步串行通信方式
异步串行通讯是指:发送方和接收方各自有各自的时钟控制数据的发送和接收。异步通信是以帧为单位进行传输,帧与帧之间的间隙可以是任意的。一帧字符信息由四部分组成:
起始位、数据位、奇偶校验位、停止位。它的特点:不要求双方时钟一样,每帧之间要加上起始位、校验位、停止位,并且各帧之间有间隔,传输效率不高。
●同步串行通讯方式
同步通信是要建立发送方时钟对接收方时钟直接控制,使时钟同步。
★串口通信的制式
●单工:数据 传输只能沿一个方向传输,不能反过来传输
●半双工:可以双向进行传输,但是不能同时进行双向传输
●全双工:数据可以同时进行双向传输
★串口通信错误校验
●奇偶校验
奇校验时,数据中1的个数与校验位1的个数之和为奇数;偶校验时,数据中1的个数与校验位1的个数之和应为偶数。
●代码和校验
代码和是发送方将所发数据求和产生一个字节的校验帧,与接收方对所接收的数据所求得和进行比较,如果相符则说明没有差错;否则认为传输过程中出现差错。
●循环冗余校验
通过某种数学运算实现有效信息与校验位之间的循环校验。纠错能力比较强。
★波特率
波特率是用来表示串口通信时的速率的。每秒传送二进制代码的位数。1波特 = 1位/秒。
●波特率的计算
串行口共有四种工作方式,其中方式0和方式2的波特率是固定的,方式1和方式3的波特率是根据T1的溢出率决定的。
波特率计算定时器初值的方法:
一般情况下,都是通过确定波特率的值B来确定定时器的初始值。一般的计算方法(51单片机串口方式1):
如果使用的晶振是11.0592MHZ,那么我们可以知道时钟周期是1/11.0592MHZ;因为一个机器周期等于12个时钟周期,因此完成一个机器周期所用的时间就是12/11.0592MHZ。因为定时器每计数一次就花费1个机器周期,假设定时器所计的数为M,那么定时器溢出一次所用的时间就是T = M*(12/11.0592MHZ);溢出率就是T的倒数。因此可以根据公式B = (2^SMOD/32)*(1/T),然后就可以求得M,同时就知道了定时器的初始值256-M。
★与串行口相关的寄存器
IE中断允许寄存器
TMOD定时器/计数器工作方式寄存器
TCON定时器/计数器控制寄存器
SCON串行口控制寄存器