MSP430F169(二)——UART波特率(论上)
2022-08-19 来源:csdn
串口通信
1. 什么叫串口
串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface)是指数据一位一位地顺序传送。
与并行接口相比,其优点也非常明显:
成本低,最少需要一根线就可以完成传输;
没有数据的相互干扰,误码率相对较低;
缺点:传输速率相对较低。
2. 串口如何建立通信
对单片机有所了解的人都应该知道,串口通信是通过调配单片机内部的寄存器来控制速率。而MSP430F169内部最重要的几个配置无非是波特率的设置和多机通信。
2.1什么是波特率
在讲波特率之前我们要区分两个概念:波特率和比特率。
比特率:
比特率是指每秒传送的比特(bit)数。单位为比特(bps,bit/s),比特率越高,传送数据速度越快。(说白了就是传输0和1的速率:即每秒传输二进制的位数)
波特率:
波特率是指每秒传送的码元数。单位为波特(baud,symbol/s)。波特率是传输通道屏宽的指标。(即每秒传输字符的个数。例如9600的波特率,即每秒传输9600个字符,如果一个字符为八个码元,每个码元3个调制,即传输9600*3个bit)
任意两个单片机通信都需要一个相同的波特率,即传输速率相同,达到收发一致。
2.1.1计算波特率
受限于串口的模式,串口通信不能太快。于是降低一定的时钟频率,使单片机有足够的时间来处理数据,选择时钟的分频或者选用低频时钟。注意MSP430F169的UxRB寄存器必须大于三。以保证能够正常运行。如何得到一个波特率,我们直接拿出公式整数
BRCLK: 波特率的时钟源
N:分频因子
UxRB: 分频因子的整数寄存器
i:字符对应的位
mi:每个调制对应的数据(0或1)
n:字符数据位的个数,而MSP430F169的串口一般以8位封装(下面会讲到数据的封装)
例如:BRCLK=32.768KHz,要产生BITCLK=2400Hz,分频器的分频系数为32768 / 2400 = 13.65。所以设置分频器的整数寄存器计数值为13。接下来用调整寄存器的值来设置小数部分的0.65。只是小数部分是无线接近,很难达到精确。实际调整过程中用0.625代替0.65,也就是5/8。0.65*8=5.2,这个式子用来配置1的个数。用小数部分乘以8
至于1配置的位置,根据误码率决定,这里直接给出结论。UxMCTL = 0x6B
即分频器按顺序13、14、14、13、14、13、14、14来分频。在8 位调整器调整位都使用后,再重复这一顺序。
设置精准的波特率是为了降低误码率
2.2 串口数据的封装
我们来解释上面的波特率计算的n为什么为8。直接看下图
ST:数据起始位,低电平有效
D0~D7:数据位,通过软件可以设置七位还是八位
AD:地址位
PA: 奇偶校验位,可通过软件设置需不需要这位
SP:停止位,可通过软件设置一位还是两位。高电平有效
在实际操作过程中,一般为8位数据位
总结
波特率的设置并不复杂,只需要按照步骤一步步调试,就能够达到一个较为不错的误码率