(ARM Linux嵌入式系统开发基础)第8章ARM-Linux串行接口通.ppt

(ARM Linux嵌入式系统开发基础)第8章ARM-Linux串行接口通.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 ARM-Linux串行接口通信 程序设计 8.1.1 串行接口的原理   串行接口是一种广泛应用的I/O接口,其数据和控制信息是一位接一位串行地传送。串行通信是指将构成字符的每个二进制数据位,依据一定的顺序逐位进行传送的通信方法。在串行通信中,有两种基本的通信方式:同步串行通信和异步串行通信。 (1) 同步串行通信方式。同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。同步通信要求通信双方以相同的速率进行,而且要准确协调,通常通过共享一个时钟或定时脉冲源保证发送方和接收方准确同步。这种通信方式的效率较高,但是对时钟同步要求非常严格,成本较高。   (2) 异步串行通信方式。异步串行通信以字符为信息单位传送。双方需要遵守异步通信协议,以字符为数据单位,发送方传送字符的时间间隔不确定。每个字符传输都以起始位开始,以停止位结束。通信双方所指定的字符的数据位数、奇偶校验方法和停止位数必须相同。其传输效率比同步通信方式低,但是成本较低。异步通信是在以起始位开始、停止位结束的一个字符内按约定的频率进行同步接收。各个字符之间允许有间隙,而且两个字符之间的间隔是不固定的。在同步通信方式中,不仅同一字符中的相邻两位间的时间间隔要相等,而且相邻字符间的时间间隔也要求相等,这也是同步通信和异步通信方式的主要差别所在。   异步串行通信一般用在数据传送时间不能确知、发送数据不连续、数据量较少和数据传输速率较低的场合;而同步串行通信则用在要求快速、连续传输大批量数据的场合。当前嵌入式开发设计中主要采用异步串行通信方式。   异步串行I/O方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。   图8-1给出异步串行通信中一个字符的传送格式。开始通信前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消了奇偶校验位。最后是表示停止位的“1”信号,这个停止位可以约定持续1位、1.5位或2位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。   经过一段随机的时间后,下一个字符开始传送才又发出起始位。每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的数据传输率为50、95、110、150、300、600、1200、2400、4800、9600?bps等。   接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误:   ● 奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。   ● 帧格式错:一个字符从起始位到停止位的总位数不对。   ● 溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错误。   每一种错误都会给出相应的出错信息,提示用户处理。   目前广泛使用的9针DB-9串行口与25针串行口信号线定义如表8-1所示。 表8-1 串行接口信号线定义   在ARM系统中,要完成最基本的串行通信功能,实际上只需要RXD、TXD和GND即可,这样的连接只要三根线;如果需要进行数据流控制,将需要采用七线式接法,其连接方式如图8-2所示。   PC串口采用RS232电平,即标准逻辑“1”对应-5~-15?V电平,标准逻辑“0”对应+5~+15?V电平,而在ARM系统中标准逻辑“1”对应2~3.3?V电平,标准逻辑“0”对应0~0.4?V电平。显然,两者间要进行通信就必须经过信号电平的转换,通常使用MAX232/MAX3232等专用集成电路进行电平转换,典型电路如图8-3所示。 8.1.2 程序分析   Linux操作系统从一开始就对串行口提供了很好的支持,为串行通信提供了大量的函数,本节主要介绍在Linux中进行串行通信编程的基本方法,其程序流程如图8-4所示。   串行通信的代码如下:     #include termios.h     #include stdio.h     #include unistd.h     #include fcn

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档