资源预览内容
第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
第9页 / 共21页
第10页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
目录摘 要1一、串口通信概述21.1 通信方式 21.2 串口通信21.3 串口通信的原理31.4 串口通信的基本任务31.5 系统硬件结构原理31.6 串口通信协议及实现41.7 串行接口标准5二、串口通信程序设计流程62.1 总体程序设计流程图62.2 串口操作需要的头文件72.3 打开串口72.4 串口设置72.5 串口读写102.6 关闭串口12总 结13参考文献14附 录15摘要嵌入式系统(Embedded System)在于结合微处理器或微控制器的系统电路 与其专用的软件,来达到系统运作效率成本的最优化。本课程设计就是基于 2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详 细地介绍了串口通信的硬件电路和软件实现方法,并分析了串口驱动的开发方 法。该系统的硬件主体设计以三星S3C2410处理器为核心控制器件,实现连接 PC机、ARM9-2410开发板、仿真器,实现串行通信,传输速率为115200bps,接 收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现 在 ARM 平台上与外部设备进行串口通信的基本功能。在通信领域内,有两种数据通信方式:并行通信和串行通信。并行通信: 在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现 的;如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行 通信。串行通信:串行通信是指使用一条数据线,将数据一位一位地依次传输, 每一位数据占据一个固定的时间长度;其只需要少数几条线就可以在系统间交 换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。嵌入式系统以其小型、专用、易携带、可靠性高的特点,已经在各个领域 得到了广泛的应用,如军事国防、消费电子、通信设备、工业控制等。在嵌入 式系统的开发中,串口通讯的设计是一个非常重要的部分,虽然通用的串口驱 动可以满足很多系统的需要,但在一些工业控制中,对串口信号的数据格式, 波特率等都有着严格的限制,这就要求针对系统需求对串口进行重新开发本课 题的目的就是研究适用于学校教学的嵌入式系统平台,这对于提高对嵌入式系 统的理解具有重要意义。串行通信串口的数据传输是以串行方式进行的,所以数据传输不容易受到 外部干扰。串口按位发送和接收字节。节省传输线,这是显而易见的。尤其是 在远程通信时,此特点尤为重要,这也是串行通信的主要优点。尽管比并行通 信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。关键词:嵌入式系统;串口通信;Linux系统、串口通信概述1.1 通信方式在通信过程中,如果通信仅在点对点之间进行,或者点对多点之间进行, 那么,按消息传输的方向和时间的不同,可以将通信分为单工通信、全双工通 信以及半双工通信。发送方和接收方每次都只发送和接收一位数据的通信方式称为串行通信方 式。也就是说,在任意一个时刻,数据线上仅有一位数据。在传输数据过程中, 双方需要协商时钟信号,即规定什么时候发送数据和接收数据,以及每位数据 所占用的时间宽度。根据双方接收和发送数据所采用的时钟信号是否是同一个 时钟源而分为串行异步通信方式和串行同步通信方式。串行异步通信方式中, 通信双方采用自己的时钟信号,根据信号的起始位等判断信息,因此接收和发 送仅需要两根信号线分别用来传送和接收信号。串行端口的本质功能是作为 CPU 和串行设备间的编码转换器。当数从 CPU 经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的 位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信, 必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资 源(关闭串口)。1.2 串口通信所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线), 数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时 间长度。串口传输是二进制代码序列在一条信道上以位(元码)为单位,按时间顺序 且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时 还要对所传输的位加以确认,所以收发双方要采取同步措施,否则接受端将不能 正确区分出所传输的数据。串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现 计算机对嵌入式开发板的控制。1.3 串口通信的原理串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经 过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被 转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须 在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关 闭串口 )。1.4 串口通信的基本任务(1)实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应 具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自 动生成起止式的帧数据格式。在面向字符的同步方式下, 接口要在待传送的数据 块前加上同步字符。(2)进行串-并转换:串行传送, 数据是一位一位串行传送的, 而计算机处 理数据是并行数据。所以当数据由计算机送至数据发送器时, 首先把串行数据转 换为并行数才能送入计算机处理。因此串并转换是串接口电路和的重要任务。(3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率波 特率进行先择和控制的能力。(4)进行错误检测:在发送接口电路对传送的字符数据自动生成奇偶校验位 或其他校验码。在接收时, 接口电路检查字符的奇偶校验或其他检验码, 确定是否 发生传送错误。(5)进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它 们与 EIA 采用的电平及负逻辑不兼容, 需在接口电路中进行转换。1.5系统硬件结构原理在串口通信的实现过程中, 要保证数据传输的可靠性和稳定性 , 其硬件设 计是必不可少的, 本文中选用 S3C2410 芯片作为核心器件。 S3C2410 芯片是 SAMGSUNG公司16/ 32位的RISC处理器,采用ARM920 T内核,内部具有2 个独立的UART控制器以及分开的16 kB的指令Cache和16 kB数据Cache, 每个控制器支持的最高波特率可达到 230. 4 kb/ s 。 S3C2410 芯片的这些特点,为实现在 Linux 操作系统下计算机与开发板间的串口通信提供了可靠的保证。基于S3C2410的嵌入式串口通信的硬件结构原理如图1-1所示:图 1-1 系统硬件结构原理图1.6 串口通信协议及实现串行端口的本质功能是作为 CPU 和串行设备间的编码转换器 ,一般微机 内都配有通信适配器,使计算机能够与其他具有RS-232C串口的计算机或设备 进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信, 采 用的宿主机是Intel Centrino架构的Red Hat Linux 9.03环境PC机,而目标机是 ARM 架构的开发板。本系统中目标机开发板的内核采用的是三星的 S3C2410 , 该开发板采用核 心板加底板的模式,核心板接口采用DIMM200标准连接器,工作非常可靠,可 稳定运行在 203 MHz 的时钟频率下。其外设非常丰富, 功能强大, 完全可以满 足设计需要。串口线采用常用的 RS-232C 型接口模式, 能实现计算机与开发板 间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。1.7 串行接口标准根据连接器(含电平转换器)的不同,串行接口标准最常用的有 RJ-232、RS-422A、RS-232C标准。RS-232C是1969年由电子工业协会(EIA)公布的 标准。该标准的用途是定义数据终端设备DTE (Data Terminal Equipment)与 数据通信设备 DCE(Data Communication Equioment)的接口特性。数据终端设备就是连接通信两端设备的连线(如空 MODEM )或其他设备。 RS-232C标准的构架如图1-2所示。图 1-2 RS-232C 标准的构架二、串口通信程序设计流程由于嵌入式系统是一个受资源限制的系统 ,因此不能直接在嵌入式系统硬 件上进行编程。作为一个完整的嵌入式系统 ,其软件设计也是一个很重要的方 面。本系统软件的实现是通过串口设置和读写串口等操作来完成宿主机与目标 机间的串口通信。2.1总体程序设计流程图开始串口是否收到数据结束YESNO将收到的数据通过串口发送串口发送数据串口初始化系统时钟初始化图2-1串口通信程序设计流程图2.2 串口操作需要的头文件/* 标准输入输出定义 */* 标准函数库定义 */ /*UNIX 标准函数定义 */* 文件控制定义 */ /*POSIX 终端控制定义 */* 错误号定义 */在开发嵌入式 Linux 串口驱动程序时,需要以下头文件:#include #include #include #include #include #include #include #include 2.3 打开串口在嵌入式 Linux 系统中,打开一个串口设备和打开普通文件一样。嵌 入式 Linux 系统下的串口文件通常位于 /dev 下:串口一为 /dev/ttyS0 ;串口 二为 /dev/ttyS1 。打开串口时通过使用标准的文件函数 open( ) 来进行操作的, 下面假设 以读写方式打开串口一。int fd;/ 文件描述符fd=open( “/dev/ttyS0 ”,O_RDWR);/ 以读写方式打开串口 if(fd=-1)/ 如果不能打开串口一 perror( “提示错误! ”);2.4 串口设置在 Linux 系统中 ,设备都是以文件的形式表示的 ,串口参数一般包括波特 率、起始位数量、停止位数量等。下面对这些串口参数进行详细说明。(1) 起始位 通信线路上没有数据被传送时,处于逻辑“1”状态。当发送字符数数据是 首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接收端检测到这个低电平之后,就开始准备接收数据位信号。 起始位所起的作用就是使通信双方同步。(2)数据位当接收端收到起始位后,开始接收数据位。数据位的个数可以是58位。 在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次 将其转换成并行数据。(3)奇偶校验位 数据位发送完后,为了保证数据的可靠性,还要传送一个奇偶校验位。奇 偶校验用于差错检测。如果选择偶检验,则数据位和奇偶位的逻辑“1”的个数 必须为偶数,相反,如果是奇检验,则数据位和奇偶位的逻辑“1”的个数为奇 数。(4)停止位 在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是 12 位的低电平。接收端收到停止位后,通信线路便恢 复逻辑“1”的状态,直到下一个数据的起始位到来。(5)波特率 通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。对大多数嵌入式设备来说,其波特率都设 置为 115200。访问串行口通过对设备文件的访问来实现,仅需打开相应的设备文件。串 口的设置主要是设置 struct termios 结构体中的各成员值。#inc
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号