要使用UART,必须要对发送与接收的串口参数进行设置,其中包括对波特率、数据位、奇偶校验、停止位与控制流的设置。在设备管理器窗口中双击串口端口,选择“端口设置”选项卡,相关设置如图7-5所示。
图7-5 串口参数设置
在UART异步串行通信中,数据是一位一位移动传输的,且都以数据帧的形式传输。一个数据帧如图7-6(a)所示。若要传输一个字节(8位)的数据,必须对数据进行打包,前面加一个开始信号,最后加一个校验(可选)和停止信号。比如传送10101010这8位二进制数,在无校验的情况下,一个数据帧如图7-6(b)所示。
总之,数据帧的打包结构是:起始位+有效数据位+校验位(可选)+停止位。
图7-6 异步串行通信数据传输格式
1.波特率
由于异步通信没有时钟信号,因此两个通信设备之间需要约定好相同的传输速度,双方才能识别一致的信号。波特率就是用来表示传输速度的物理参数。波特率的单位为bps(位/秒)。为什么不用字节表示速度呢?因为串行通信是一位一位地传输数据的,速度只能用多少位每秒表示。常见的波特率为4800bps、9600bps、115200bps等,比如9600bps代表传输速度为9600位每秒(9600个二进制数)。
异步通信中,波特率的设置非常关键。两个通信设备的波特率必须一致,否则将导致通信失败。
2.通信的起始和停止信号
数据帧打包的第一个信号,表示开始传送一帧数据,当传递完n位数据后,到停止信号结束。数据包的起始信号由一个逻辑0的数据位来表示,发送端与接收端都从开始位确定信号开始传递,都按波特率进行信号的发送与采样。而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示。两端设备的设置必须一致。
3.有效数据(www.xing528.com)
在数据帧的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据。有效数据的长度可以为5、6、7或8位,一般采用8位。同样,通信双方设置必须一致。
4.数据校验
数据校验是一个可选项。由于通信过程中容易受到外部干扰而导致传输数据出现偏差,为了保障数据的可靠性,可以在传输过程中加上校验位来解决这个问题。校验方法有奇(odd)校验、偶(even)校验、空格(space)校验、标志(mark)校验以及无奇偶(no parity)校验。
奇校验要求有效数据和校验位中1的个数为奇数,比如一个8位长的有效数据为01101001,此时总共有4个1,为达到奇校验效果,校验位调整为1。
偶校验则相反,当传送有效位1的个数为奇数时,校验位调整为1,以达到偶数个1的要求;当有效位1的个数为偶数时,校验位调整为0。
空格(space)校验位总为0,标志(mark)校验位总为1,校验位的值固定不变。
数据校验一般用于易干扰或者数据线较长的场合,是可选项。使用者可根据实际情况选择用或者不用校验功能,如果选择无奇偶校验,则不使用校验功能,不在数据包后加校验位。4种校验方法中,奇/偶校验的校验性能比空格校验性能强,因此奇/偶校验用得较多。
5.硬件流控制
nRTS:请求以发送(Request To Send),n表示低电平有效。如果使能RTS流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。
nCTS:清除以发送(Clear To Send),n表示低电平有效。如果使能CTS流控制,发送器在发送下一帧数据之前会检测nCTS引脚,如果为低电平,则发送数据;如果为高电平,则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
硬件流控制要占用引脚。串行异步通信一般不选用此功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。