linux驱动开发:串口协议

版权声明:学习记录,积少成多 https://blog.csdn.net/changliang7731/article/details/53148529

串口的重要性不言而喻。我们可以通过串口来打印 debug的信息,以此来定位代码的错误位置。
我们也可以通过串口来向内核传入命令,可以说它是开发人员常用的一个交互终端。当进行驱动开发时,总是需要用到串口来显示内核的打印信息。对于开发来说,很是重要。

串口:属于串行通信的一种,与之对应的是并行通信。串行通信就是数据的各位在同一根线上顺序依次按位传输。

同步通信:要求发生时钟和接收时钟保持严格同步。发送方先发送一个或两个特殊字符,该字符称为同步字符。当发送方和接收方达到同步后,就可以一个字符接一个字符地发送一大块数据,而不再需要用起始位和停止位了,这样可以明显地提高数据的传输速率。


异步通信:在异步通信中,数据通常是以字符或字节为单位组成数据帧进行传送的。收、发端各有一套彼此独立,互不同步的通信机构,由于收发数据的帧格式相同,因此可以相互识别接收到的数据信息.

串口:串行异步通信.

(1) 起始位:
在没有数据传送时,通信线上处于逻辑“1”状态。当发送端要发送1个字符数据时,首先发送1个逻辑“0”信号,这个低电平便是帧格式的起始位。其作用是向接收端表示发送端开始发送一帧数据。接收端检测到这个低电平后,就准备接收数据信号。
(2) 数据位:
在起始位之后,发送端发出(或接收端接收)的是数据位,数据的位数没有严格的限制,5~8位均可。由低位到高位逐位传送。
(3) 奇偶校验位:
数据位发送完(接收完)之后,可发送一位用来检验数据在传送过程中是否出错的奇偶校验位。奇偶校验是收发双方预先约定好的有限差错检验方式之一。有时也可不用奇偶校验。
(4) 停止位:
字符帧格式的最后部分是停止位,逻辑“1”电平有效,它可占1/2位、1位或2位。停止位表示传送一帧信息的结束,也为发送下一帧信息作好准备。
串口通信的波特率:
波特率(Baud Rate)是串行通信中一个重要概念,它是指传输数据的速率, 亦称比特率。波特率的定义是每秒传输二进制数码的位数。如:波特率为1200bps是指每秒钟能传输1200位二进制数码。
串行通信的制式:
1)单工方式:数据只能从一个方向传送到另一个方向。
2)半双工:数据可以双向传输,但是不能同时双向传输。当发送时,不能接收,当接收时,不能发送。
3)全双工:数据可以双向传输,且可以同时进行接受和发送。

串口协议是全双工协议,可以同时发送和接收。两根线比较重要,TX和RX。TX用来传输,RX用来接收.
(5)校验位:
串行通信的目的不只是传送数据信息,更重要的是应确保准确无误地传送。因此必须考虑在通信过程中对数据差错进行校验,因为差错校验是保证准确无误地通信的关键。常用差错校验方法有奇偶校验、累加和校验以及循环冗余码校验等。
1)奇偶校验:
奇偶校验的特点是按字符校验,即在发送每个字符数据之后都附加一位奇偶校验位(1或0),当设置为奇校验时,数据中1的个数与校验位1的个数之和应为奇数;反之则为偶校验。收、发双方应具有一致的差错检验设置,当接收1帧字符时,对1的个数进行检验,若奇偶性(收、发双方)一致则说明传输正确。奇偶校验只能检测到那种影响奇偶位数的错误,比较低级且速度慢,一般只用在异步通信中。
2)累加和校验:
累加和校验是指发送方将所发送的数据块求和,并将“校验和”附加到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的“校验和”进行比较,若两者相同,表示传送正确,若不同则表示传送出了差错。“校验和”的加法运算可用逻辑加,也可用算术加。累加和校验的缺点是无法检验出字节或位序的错误。
3)循环冗余码校验(CRC):
循环冗余码校验的基本原理是将一个数据块看成一个位数很长的二进制数,然后用一个特定的数去除它,将余数作校验码附在数据块之后一起发送。接收端收到该数据块和校验码后,进行同样的运算来校验传送是否出错。目前CRC已广泛用于数据存储和数据通信中,并在国际上形成规范,市面上已有不少现成的CRC软件算法。


计算机串行通信中主要使用了如下信号:
(1) 数据传送信号:发送数据(TXD);接收数据(RXD)。
(2) 调制解调器控制信号:请求发送(RTS);清除发送(CTS);数据通信设备准备就绪(DSR);数据终端准备就绪(DTR)。
(3) 定位信号:接收时钟(RXC);发送时钟(TXC)。
(4) 信号地GND。

猜你喜欢

转载自blog.csdn.net/changliang7731/article/details/53148529