本教程详解使用Keil C进行单片机多字节串行通信的方法与技巧,涵盖数据发送、接收及调试技术,适合嵌入式开发初学者。
串口是计算机上一种非常通用的设备通信协议,并非指USB(Universal Serial Bus)。大多数计算机包含两个基于RS232标准的串行端口。此外,许多仪器仪表设备也使用这种接口作为其通用数据交换方式;很多GPIB兼容的设备同样具有RS- 232接口。同时,通过串口通信协议可以获取远程采集设备的数据。
在进行串口通信时,信息以位为单位发送和接收字节。虽然相比并行传输较慢,但它的独特之处在于可以在一根线上发送数据的同时用另一根线接收数据,并且能够支持远距离的信息传递。比如IEEE488定义的并行通讯限制条件下,设备之间的最大长度不得超过20米,并且任意两个设备间的连接不应超过2米;而串口通信则可以达到1200米。
通常情况下,串口用于ASCII码字符传输。这种数据交换使用三条线完成:(1)地线、(2)发送和(3)接收。因为是异步通信方式,所以端口能够在一根线上发送信息的同时在另一根线上接收到信息;其余的线路可以用来进行握手操作,但这不是必需的。
串行通讯中最重要的参数包括波特率、数据位数、停止位以及奇偶校验模式。这些设置必须与要连接设备的一致:
- 波特率:这是衡量通信速率的一个指标,表示每秒传输多少个比特(bit)。例如300波特意味着一秒内发送了300个比特;如果需要4800波特的通讯速度,则时钟频率也将为4800Hz。一般而言,电话线路常见的波特率为14400、28800和36600。
- 数据位:这是指传输过程中使用的实际数据长度单位。计算机发送的信息包不会是完整的字节(如标准ASCII码的7位或扩展ASCII的8位)。具体使用多少取决于信息的内容,但通常采用5位、7位或者8位的数据格式。
- 停止位:用于标记每个数据包结束的位置,并提供接收端校正时钟同步的机会。常见的设置为1、1.5和2个比特长度;选择的停止位越多,则对不同步情况下的容忍度越高,但同时也会降低传输效率。
- 奇偶校验模式:作为一种简单的错误检测机制,在串行通信中被广泛应用。有四种方式可选:无校验、奇校验、偶校验和高/低电平校正;其中后两者会根据实际数据添加额外的比特位以确保总逻辑“1”的数量符合预设条件,从而帮助接收方判断传输过程中是否出现了错误或者同步问题。