6.4串口通信的收与发............................................................................................................26.1.1什么是串口通信...............................................................................................26.1.2串口通信的属性...............................................................................................26.1.3什么是单片机的TTL电平?............................................................................66.1.4关于NPN和PNP的三极管基础知识?............................................................86.1.5RS-232电平与TTL电平的转换......................................................................96.1.6串口波特率的理解.........................................................................................116.1.7STM32神舟51+ARM独特的USB转串口的TTL电平模块设计.................116.1.8例程01昀简单串口打印$字符....................................................................126.1.9例程02单串口打印什么是串口通信串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议。大多数计算机(不包括笔记本电脑)包含两个基于RS-232的串口。串口同时也是仪器仪表设备通用的通信协议(串口通信协议也可以用于获取远程采集设备的数据)。当年51单片机内置串口的时候,被认为是微控制器发展史上的重大事件,因为当时的串口是唯一一个微控制器与PC交互的接口。MCU微控制器经过这么多年的发展,串口仍然是其必不可少的接口之一。6.1.2串口通信的属性1.通信存在的问题评价一个通信是否优质,主要体现在传输的速度,数据的正确性,功耗是否低,布线成本是否低(例如1根线收发都能满足就比8根线的并行收发要节约成本);使用是否普及(就好像大家都学英语,世界很大部分的人都可以独立使用英语吗,会英语的人多,就非常普及,可通信面就非常广;如果你学的鸟语,那就只能跟鸟通信,没有人能听懂)。2.串口到底有几个标准?(经常听说有3线、5线串口)传统的串行接口标准有22根线,采用标准25芯D型插头座(DB25),后来使用简化为9芯D型插座(DB9),现在应用中25芯插头座已很少采用。像现在所说的几线串口,一般都是指使用了几根线,昀初的RS-232串口是25针的,所有的针脚定义都有用到,后来变成了9针的,所谓全功能串口就是所有的针脚定义都使用上了,例如流量控制,握手信号等都有用到,一般来说国外的产品做产品比较规矩,把所有的串口信号都做上去了。但是国内的技术人员发现,其实RS-232串口昀主要使用的就是2,3线,另外的接口如果不使用的话,也不会出现很大的问题,所以,就在9针的基础上做精简,所以就有所谓的2,3,4,5,6,8线的串口出来了。.2线串口只有RXD,TXD两根基本的收发信号线;3线串口除了RXD和TXD,还有GND;所谓4~9线只是在TXD和RXD基础上增加了相应的控制信号线,依据实际需要进行设计。一般来说,使用5线的232通信,是加了硬件流控的,即RTS,CTS信号,主要是为了保证高速通信时的可靠性,如果你的通信速度不是很高,完全可以不用理会。3.串口的速度与距离RS-232(串口的英文代名词)采取不平衡传输方式,即所谓单端通讯。由于其发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离昀长为约15米,昀高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3~7kΩ。所以RS-232适合本地设备之间的通信。4.从串口通信衍生出422与485的通信方式RS-232、RS-422与RS-485都是串行数据接口标准,昀初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接昀多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。5.串口的通信方式(串口属于串行通信)(1)并行通信和串行通信51单片机与外界通信的基本方式有两种:并行通信和串行通信,并行通信是指利用多条数据传输线将一个数据的各位同时发送或接收。串行通信是指利用一条传输线将数据一位位地顺序发送或接收。并行通信和串行通信的示意图如下图:在每一条传输线传输速率相同时,并行通信的传输速度比和串行通信快。然而当传输距离变长时,并行通信的缺点就会凸显,首先是相比于串行通信而言信号易受外部干扰,信号线之间的相互干扰也增加,其次是速率提升之后不能保证每根数据线的数据同时到达接收方而产生接收错误,而且距离越长布线成本越高。所以并行通信目前主要用在短距离通信,比如处理器与外部的flash以及外部RAM以及芯片内部各个功能模块之间的通信。串行通信以其通信速率快和成本低等优点成为了远距离通信的首选。RS232C串口,以及差分串行总线像RS485串口、USB接口、CAN接口、IEEE-1394接口、以太网接口、SATA接口和PCIE接口等都属于串行通信的范畴。下图左侧为每根数据线的数据同时到达接收方,被正确采样的昀理想情况;右侧的图为每根数据线的数据不能同时到达接收方而产生接收错误情形。(2)异步通信与同步通信串行通信又分为两种方式:异步通信与同步通信。A、异步通信及其协议异步通信以一个字符为传输单位,通信中两个字符间的时间间隔不固定可以是任意长的,然而在同一个字符中的两个相邻位代码间的时间间隔是固定的,接收时钟和发送时钟只要相近就可以。通信双方必须使用约定的相同的一些规则(也叫通信协议)。常见的传送一个字符的信息格式规定有起始位、数据位、奇偶校验位、停止位等,其中各位的意义如下:或①起始位先发出一个逻辑”0”信号,表示传输字符的开始。②数据位紧接着起始位之后。数据位的个数可以是5、6、7、8等,构成一个字符。一般采用扩展的ASCII码,范围是0~255,使用8位表示。首先传送昀低位。③奇偶校验位(不是必须)奇偶校验是串口通信中一种简单的检错方式,当然没有校验位也是可以的。数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。例如,如果数据是01100000,那么对于偶校验,校验位为0。④停止位它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。⑤空闲位处于逻辑“1”状态,表示当前线路上没有数据传送。B、同步通信是指数据传送是以一个帧(数据块或一组字符)为传输单位,每个帧中包含有多个字符。在通信过程中,字符与字符之间、字符内部的位与位之间都同步,每个字符间的时间间隔是相等的,而且每个字符中各相邻位代码间的时间间隔也是固定的。同步通信的数据格式如图所示同步通信的特点可以概括为:①以数据块为单位传送信息。②在一个数据块(信息帧)内,字符与字符间无间隔。③接收时钟与发送进钟严格同步同步串行通信方式中一次连续传输一块数据,开始前使用同步信号作为同步的依据。同步字符的插入可以是单同步字符方式或双同步字符方式,均由同步字符、数据字符和校验字符CRC等三部分组成:同步字符位于帧结构开头,用于确认数据字符的开始。数据字符在同步字符之后,字符个数不受限制,由所需传输的数据块长度决定;校验字符有1~2个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性的校验。由于连续传输一个数据块,故收发双方时钟必须相当一致,否则时钟漂移会造成接收方数据辨认错误。这种方式下往往是发送方在发送数据的同时也通过一根专门的时钟信号线同时发送时钟信息,接收方使用发送方的时钟来接由数据。同步串行通信方式传输效率高,但对硬件要求高,电路结构复杂。所有的串行接口电路都是以并行数据形式与CPU接口、而以串行数据形式与外部逻辑接口。所以串口对外应该是串行发送的,速度慢,但是比并行传输要稳定很多。6.串口是如何解决干扰以及校验的问题什么是数据校验?通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值。接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,就说明数据是完整的。为了理解数据校验,什么是昀简单的校验呢?昀简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是昀安全