首页 PC机与嵌入式开发板串口通信的设计与编程实现

PC机与嵌入式开发板串口通信的设计与编程实现

举报
开通vip

PC机与嵌入式开发板串口通信的设计与编程实现PC机与嵌入式开发板串口通信的设计与编程实现 题目:PC机与嵌入式开发板串口通信的设计与编程实 现 毕业设计 摘 要 随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在实际开发应用中,串口通信是不可缺少的部分,是目前嵌入式系统与PC机之间一种非常重要而且普遍应用的通信方式。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。该系统的硬件主体设计以三星S3C2410 处理器为核心控...

PC机与嵌入式开发板串口通信的设计与编程实现
PC机与嵌入式开发板串口通信的 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 与编程实现 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 目:PC机与嵌入式开发板串口通信的设计与编程实 现 毕业设计 摘 要 随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在实际开发应用中,串口通信是不可缺少的部分,是目前嵌入式系统与PC机之间一种非常重要而且普遍应用的通信方式。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。该系统的硬件主体设计以三星S3C2410 处理器为核心控制器件,通过与计算机串口间的连接,实现在ARM 平台上与外部设备通信的基本功能。 关键词:嵌入式系统;2410F;串口通信;Linux系统 I 毕业设计 ABSTRACT Along with the development of embedded system and application scale, the communication between the PC and embedded computer must be achieved in order to improve the whole performance of the system. In the actual development application, serial communication is an essential part.And it is a very important and universal mode.In this paper, based on the 2410F the realization of embedded serial communication, according to the embedded system software and hardware structure, a more detailed description of the serial communication hardware and software methods. The principal part of the hardware in this system is chiefly controlled by S3C2410 processor ,which is produced by SAMSUNG Company ,communicated with the serial of computer , this system realizes the based function of visiting exterior device ,which is on the based of ARM. Key words:embedded system; 2410F;serial communication;Linux system II 毕业设计 目 录 摘 要 ..................................................................................................... I ABSTRACT ........................................................................................... II 1 绪 论 ................................................................................................. 1 1.1 串口通信概述 .................................................................................. 1 1.2 串口通信的原理............................................................................... 1 1.3 串口通信的开发工具 ....................................................................... 2 1.3.1 2410F硬件平台简介...................................................................... 2 1.3.2 ARM简介 ...................................................................................... 2 1.3.3 Linux系统简介 .............................................................................. 3 1.4 串口通信的基本任务 ....................................................................... 4 2 串口通信协议及实现 .......................................................................... 4 2.1 RS-232C 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ................................................................................... 5 2.2 系统硬件结构原理 ......................................................................... 10 3 串口驱动程序设计............................................................................ 11 3.1 串口操作需要的头文件 ................................................................. 12 3.2 打开串口 ........................................................................................ 12 3.3 串口设置 ........................................................................................ 12 3.4 串口读写 ........................................................................................ 15 3.5 关闭串口 ........................................................................................ 16 4 设计验证与测试 ............................................................................... 17 5 总 结 ............................................................................................... 20 参考文献 ............................................................................................... 21 致 谢 ................................................................................................... 22 附 录 ................................................................................................... 24 毕业设计 1 绪 论 目前,先进的嵌入式计算机以其优良的品质、高可靠性及模块化,广泛地应用于工业控制、航空航天、医疗、智能仪表、通信、数控、自动化生产设备、数据采集等领域。在实际应用中,有时需要借助微机强大的数据处理能力和丰富的软件资源,使得组成的系统功能更为强大。为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在数据采集的实际开发应用中,串口通信是不可或缺的一部分,也是目前嵌入式系统与PC机之间最重要,应用最普遍的通信方式。 1.1 串口通信概述 所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。 串口传输是二进制代码序列在一条信道上以位(元码)为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采取同步措施,否则接受端将不能正确区分出所传输的数据。 串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言进行编程或者使用C51自己编写设备的初始化以及读写访问程序,这样的过程不仅复杂,而且不利于大规模的开发和设计。ARM 与8051 等普通单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列优势,因而在汽车电子、手持设备、无线领域和航空航天等嵌入式系统中得到广泛的应用。 将Linux 移植到ARM 嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,因此进行相应开发可以提高系统编程效率,而且还可以简化调试的复杂程度。 1.2 串口通信的原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关 1 毕业设计 闭串口)。 1.3 串口通信的开发工具 本次开发采用的硬件平台是ARM920T处理器的2410F,开发系统平台是Linux系统。 1.3.1 2410F硬件平台简介 2410F 是基于三星(samsung)ARM9 嵌入式处理器 S3C2410 处理器的一款开发平台,“F”指基于2410 的第六代开发套件。系统运行在 202M 的主频下发挥出色的性能。可以完成MP3,MPG,VOIP 等工作。2410 资源丰富适合 ARM 处理器的初学者学习使用。2410F 上面使用的核心模块体积小资源丰富,IO 充足还可以应用在二次开发的产品当中。这款设备主要包括核心板与底板两个部分,核心板采用6 层PCB 设计、底板采用2 层PCB 板设计,核心器件是基于目前业内主流使用的SAMSUNG ARM9S3C2410 处理器,主频202MHz,配套的存储器,网卡等设备;底板主要是各类型的接口。 S3C2410处理器是Samsung公司基于ARM公司的ARM920T处理器核,采用0.18um制造工艺的32位微控制器。该处理器拥有:独立的16KB指令Cache和16KB数据Cache,MMU,支持TFT的LCD控制器,NAND闪存控制器,3路UART,4路DMA,4路带PWM的Timer ,I/O口,RTC,8路10位ADC,Touch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2个USB主机,1个USB设备,SD主机和MMC接口,2路SPI。S3C2410处理器最高可运行在203MHz。 它是基于ARM920T 内核的16/32 位RISC 处理器, 主要应用于嵌入式系统中。S3C2410 拥有强大的数据处理能力,又有着低成本,低功耗等优点,在各种手持及移动设备上的应用越来越广泛,基于其平台的程序功能也越来越复杂。于是,在其平台上架构多线程的操作系统已成为越来越多系统设计者的诉求, 本文介绍多线程在S3C2410 上的具体实现过程。 1.3.2 ARM简介 ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统、军用系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器70,以上的市场份额, 2 毕业设计 ARM 技术正在逐步渗入到我们生活的各个方面。ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM 公司购买其ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。目前全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,更具有竞争力。 ARM 微处理器一般具有如下特点: ? (1)体积小、低功耗、低成本、高性能; ? (2)支持 Thumb(16 位)/ARM(32 位)双指令集,能很好的兼容8/16 位器件; ? (3)大量使用寄存器,指令执行速度更快; ? (4)大多数数据操作都在寄存器中完成; ? (5)寻址方式灵活简单,执行效率高; ? (6)指令长度固定。 1.3.3 Linux系统简介 Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。Linux 一般有四个主要部分:内核、Shell、文件结构和实用工具。 (1)Linux 内核 内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用户那里接受命令并把命令送给内核去执行。 (2)Linux Shell Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。 实际上Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell 程序与其他应用程序具有同样的效果。 (3)Linux 文件结构 文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个 3 毕业设计 目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。 使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。 (4)Linux 实用工具 标准的 Linux 系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。 实用工具可分三类: ? 编辑器:用于编辑文件。 ? 过滤器:用于接收数据并过滤数据。 ? 交互程序:允许用户发送信息或接收来自其他用户的信息。 1.4 串口通信的基本任务 (1)实现数据格式化:因为来自CPU 的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2)进行串---并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串接口电路和的重要任务。 (3)控制数据传输速率:串行通信接口电路应具有对数据传输速率-----波特率进行先择和控制的能力。 (4)进行错误检测:在发送接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他检验码,确定是否发生传送错误。 (5)进行TTL 与EIA 电平转换:CPU 和终端均采用TTL 电平及正逻辑,它们与EIA 采用的电平及负逻辑不兼容,需在接口电路中进行转换。 2 串口通信协议及实现 4 毕业设计 串行端口的本质功能是作为CPU 和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS-232C 串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信, 采用的宿主机是Intel Centrino架构的Red Hat Linux 9.03 环境PC机, 而目标机是ARM 架构的开发板。 本系统中目标机开发板的内核采用的是三星的S3C2410 ,该开发板采用核心板加底板的模式, 核心板接口采用DIMM200 标准连接器,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS-232C 型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。 2.1 RS-232C标准 RS-232C是1969年由电子工业协会(EIA)公布的标准。该标准的用途是定义数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equioment)的接口特性。 数据终端设备就是连接通信两端设备的连线(如空MODEM)或其他设备。RS-232C标准的构架如图2.1所示。 (数据终端设备DTE)(数据通信设备DCE)(数据通信设备DCE)(数据终端设备DTE) MM RS-232C 通信线路 RS-232C 计OO计 算DD算 机EE机 A M M B ( 图2.1 RS-232C标准的构架 RS-232C标准的一些主要规范如下。 (1) 电气特性 RS-232C采用非归零、双极性编码,且使用负逻辑规定的逻辑电平:-15,-5V规定为逻辑“1”。+5,+15V规定为逻辑“0”。信号电平与TTL电平不兼容,所以需要电平转换电路(通常使用MAX3232转换)。电平转换电路如图2.2所示。 5 毕业设计 TTL输出 MAX3232 RS-232C输出 RS-232C接 口电路 TTL输入 RS-232C输入 图2.2 RS-232C的电平转换电路 (2) 引脚定义 目前广泛的DB9引脚定义如图2.3所示。信号引脚定义的说明见表2.1。 GND 5 9 RI DTR 4 8 CTS TXD 3 7 RTS RXD 2 6 DSR DCD 1 图2.3 DB9 引脚定义 9针串口DB9 针号 功能说明 缩写 1 输入,数据载波检测 DCD 2 输入,接收数据 RXD 3 输出,发送数据 TXD 4 输出,DTE准备就绪 DTR 5 信号地 GND 6 输入,MODEM准备就绪 DSR 7 输出,请求发送 RTS 8 输入,允许发送 CTS 9 输入,振铃指示 DELL 表2.1 DB9引脚说明 (3) 字符(帧)格式 6 毕业设计 RS-232C采用起止式异步通信协议,其特点是一个字符接着一个字符进行传输,并且传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其传输格式如图2.4所示,每一个字符的前面都有一位起始位(低电平,逻辑“0”),字符本身有5,8位数据位,接着字符后面是一位校验码(也可以没有校验码),最后是停止位。停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值“1”),这样就能保证起始位开始处一定有一个下跳沿,便于接受方识别。 校验位 (可以 停止位 没有) 起始位 数据 1 x 1 1 1 1 1 0 1 1 0 数据流方向 发接 送收 方 方 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 数据单元之间 的间隔 图2.4 串行传输的工作原理示意图 从图2.4 中可以看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。没有统一的时钟,没有同步字符,依靠起始位和停止位标识每一帧,传输时,数据的地位在前,高位在后。 起始位实际上是作为同步信号附加进来的,当它变为低电平时,告诉接受方传输开始,后面接着是数据位;而停止位则标志一个字符的结束。这样就为通信双方提供了何时开始收发、何时结束的标志。传输开始前,收发双方把所采用的字符格式(包括字符的数据位长度、停止位位数、有无校验位以及是奇校验还是偶校验等)和数据的传输速率进行统一规定。传输开始后,接收设备不断地检测线路,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后, ”变为“0”),说明起始位出现,起始位经确认后,检测到一个下跳沿(由“1 就开始接收所规定的数据位和奇偶校验位以及停止位。然后去掉停止位,对数据位进行串并转换,并且经奇偶校验无误后,才算正确地接收到一个字符。一个字符接收完毕,接收设备又继续测试线路,监视“0”电平的到来和下一位字符的开始,直到全部数据传输完毕。 7 毕业设计 (4)握手协议 RS-232C标准除了规定的字符格式和通信波特率以外,还在数据终端设备DTE和数据通信设备DCE之间定义了一套握手协议。握手协议的过程如图2.5所示。 数据终端设备DTE 本地MODEM 远程MODEM 远程DTE DTR DSR RTS 呼叫 载波信号 DCD 载波确认 CTS TXD 图2.5 DTE与DCE的握手协议过程 ?DTR:数据终端设备DTE准备就绪。DTE加电并能正确实现通信时,向DCE发出DTR信号。 ?DSR:数据通信设备DCE准备就绪。MODEM加电并能正确执行通信功能时,DTE发出DSR信号。 ?RTS:请求发送。当DTE有数据需要向另一远程DTE传输时,DTE在检测DSR有效时向本地MODEM发出RTS信号。本地MODEM检测到RTS有效,然后根据目的电话号码向远程MODEM发出呼叫。远程MODEM收到该呼叫,发出回答载波信号。本地MODEM接受到此载波信号,然后向远程MODEM发出原载波信号进行确认,同时向DTE发出数据载波信号DCD。 ?DCD:数据载波信号检测。由MODEM发向数据终端设备DTE,表示已检测到对方载波信号。 ?CTS:允许发送,当一个MODEM辨认出对方MODEM已经准备接收时, 8 毕业设计 使用CTS信号通知自己的DTE,表示这个通信通路已经做好数据传输的准备,允许DTE进行数据发送。至此,通信链路建立,可以通信。 ?RI:振铃指示。如果MODEM具有自动应答能力,当对方呼叫传来时,MODEM向DTE发出该信号,指示此呼叫。在电话呼叫振铃结束后,MODEM在DTE已准备好的情况下(即DTR有效),立即向对方自动应答。 (5) 双机互连方式 双机可以利用RS-232C通信接口进行直接互连(数据终端设备DTE到DTE),即空MODEM连接。这种形式在嵌入式系统中应用极为广泛。 由于RS-232C标准中有两对硬件握手协议的引线:DTR和DSR、RTS和CTS,根据应用握手协议的机制不同,可分为3种情况:无硬件握手、DTR和DSR握手、RTS和CTS握手。 ? 无硬件握手情况 无硬件握手的双机互连如图2.6所示。 DTE DTE TXD TXD 计计 RXD RXD 算算 GND GND 机机 A B 图2.6 无握手的双机互连 无硬件握手的连线最简单,只需要3根线,应用比较多。但通信不可靠,接收缓冲区容易溢出。 ? DTR和DSR握手情况 DTR和DSR握手的双机互连如图2.7所示。 DTE DTE TXD TXD 计计 RXD RXD 算算 GND GND 机机 A B DTR DTR DSR DSR 采用DTR和DSR握手进行发送和接收数据的过程如下(设计算机A接收,图2.7 DTR和DSR握手的双机互连 9 毕业设计 计算机B发送): 若计算机A已经准备就绪,则使DTR有效。计算机B通过采集DSR,得知计算机A已经做好接收数据的准备,可以发送数据。若计算机A为准备好,则DTR无效,计算机B通过采集DSR,得知计算机A尚未做好接收数据的准备,停止发送数据。 ? RTS和CTS握手情况 RTS和CTS握手的双机互连如图2.8所示。 DTE DTE TXD TXD 计计 RXD RXD 算算 GND GND 机机 A B RTS RTS CTS CTS 图2.8 RTS和CTS握手的双机互连 利用RTS和CTS握手进行发送和接收数据的过程如下(设计算机A接收、计算机B发送): 若计算机A已经准备就绪,则使RTS有效。计算机B通过采集CTS,得知计算机A已经做好接收数据的准备,可以发送数据。若计算机A未准备好,则RTS无效,计算机B通过采集CTS,得知计算机A尚未做好接收数据的准备,停止发送数据。 2.2 系统硬件结构原理 在串口通信的实现过程中,要保证数据传输的可靠性和稳定性, 其硬件设计是必不可少的, 本文中选用S3C2410 芯片作为核心器件。S3C2410 芯片是SAMGSUNG公司16/ 32 位的RISC 处理器,采用ARM920 T 内核,内部具有2 个独立的UART 控制器以及分开的16 kB的指令Cache 和16 kB 数据Cache ,每个控制器支持的最高波特率可达到230. 4 kb/ s 。S3C2410 芯片的这些特点,为实现在Linux 操作系统下计算机与开发板间的串口通信提供了可靠的保证。基于S3C2410 的嵌入式串口通信的硬件结构原理如图2.9所示: 宿主机(计算机系统) 目标机(开发板) 10 毕业设计 JTAG 电源接口 模块 模块 显示器 计算机 主机设 液晶显示模块 串行接口线 DIMM200 备(带S3C2410 连接器接RS-232ARM芯片 键盘 口模块 键盘控制模块 接口) 外扩存储器模块 图2.9 系统硬件结构原理图 宿主机即计算机系统中,在Linux 操作系统下编写好串口通信的程序,通过 网络ftp下载至目标机即开发板中,在相应的软件控制命令下,通过串行接口线即可实现宿主机与目标机间数据的发送和接收。目标机中电源模块提供了开发板系统工作所需的正常电压,各种数据信息可以通过液晶显示模块及时显示出来,还可以通过键盘控制模块来实现对目标机操作的控制,外扩存储器模块可以由FLASH 或SDRAM 构成,当然作为一个完整的系统,还必须配有其他外围电路,以保证系统的正常工作。 3 串口驱动程序设计 11 毕业设计 由于嵌入式系统是一个受资源限制的系统,因此不能直接在嵌入式系统硬件上进行编程。作为一个完整的嵌入式系统,其软件设计也是一个很重要的方面。本系统软件的实现是通过串口设置和读写串口等操作来完成宿主机与目标机间的串口通信。 3.1 串口操作需要的头文件 在开发嵌入式Linux串口驱动程序时,需要以下头文件。 #include /*标准输入输出定义*/ #include /*标准函数库定义*/ #include /*UNIX标准函数定义*/ #include #include #include /*文件控制定义*/ #include /*POSIX终端控制定义*/ #include /*错误号定义*/ 3.2 打开串口 在嵌入式Linux系统中,打开一个串口设备和打开普通文件一样。嵌入式Linux系统下的串口文件通常位于/dev下:串口一为/dev/ttyS0;串口二为/dev/ttyS1。 打开串口时通过使用标准的文件函数open( )来进行操作的,下面假设以读写方式打开串口一。 int fd;//文件描述符 fd=open(“/dev/ttyS0”,O_RDWR);//以读写方式打开串口 if(fd==-1)//如果不能打开串口一 { perror(“提示错误~”); } 3.3 串口设置 在Linux 系统中,设备都是以文件的形式表示的,串口参数一般包括波特率、起始位数量、停止位数量等。下面对这些串口参数进行详细说明。 (1) 起始位 12 毕业设计 通信线路上没有数据被传送时,处于逻辑“1”状态。当发送字符数数据是首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接收端检测到这个低电平之后,就开始准备接收数据位信号。起始位所起的作用就是使通信双方同步。 (2) 数据位 当接收端收到起始位后,开始接收数据位。数据位的个数可以是5,8位。在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次将其转换成并行数据。 (3) 奇偶校验位 数据位发送完后,为了保证数据的可靠性,还要传送一个奇偶校验位。奇偶校验用于差错检测。如果选择偶检验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇检验,则数据位和奇偶位的逻辑“1”的个数为奇数。 (4) 停止位 在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是1,2位的低电平。接收端收到停止位后,通信线路便恢复逻辑“1”的状态,直到下一个数据的起始位到来。 (5) 波特率 通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。对大多数嵌入式设备来说,其波特率都设置为115200。 访问串行口通过对设备文件的访问来实现,仅需打开相应的设备文件。串口的设置主要是设置struct termios 结构体中的各成员值。 #include struct termio { unsigned short c_iflag; /*输入模式标志*/ unsigned short c_oflag; /*输出模式标志*/ unsigned short c_cflag; /*控制模式标志*/ unsigned short c_lflag; /*本地模式标志*/ unsigned char c_line; /*线路规范*/ unsigned char c_cc[NCC]; /*控制特征值*/ } ?波特率设置: struct termios option; 13 毕业设计 tcgetattr(fd,&option); cfsetispeed(&option,B115200);/*设置为115200Bps*/ cfsetospeed(&option,B115200); tcsetattr(fd,TCANOW,&option); ?检验位设置: 无校验 8 位: options.c_cflag &=~PARENB options.c_cflag &=~CSTOPB; options.c_cflag &=~CSIZE; options.c_cflag,=~CS8; 奇效验(Odd)7 位: options.c_cflag,=~PARENB; options.c_cflag &=~PARODD; options.c_cflag &=~CSTOPB; options.c_cflag &=~CSIZE; options.c_cflag,=~CS7; 偶校验(Even)7 位: options.c_cflag &=~PARENB; options.c_cflag,=~OARODD; options.c_cflag &=~ CSTOPB; options.c_cflag &=~CSIZE; options.c_cflag,=~CS7; Space 校验7 位: options.c_cflag &=~ PARENB; options.c_cflag &=~CSTOPB; options.c_cflag &=&~CSIZE; options.c_cflag,=~CS8; ?停止位设置: 1位: options.c_cflag &=~CSTOPB; 2位: options.c_cflag,=CSTOPB; ?模式设置: 需要注意的是,如果不是开发终端之类的,只是串口传输数据,而不需要串口 来处理,那么使用原始模式(Raw Mode)方式来通讯。 options.c_lflag &=~(ICANON,ECHO,ECHOE,ISIG);/*Input*/ 14 毕业设计 options.c_oflag &=~OPOST;/*Output*/ 3.4 串口读写 在Linux 系统中,对设备和目录的操作都等同于文件的操作,这样大大简化了系统对不同设备的处理,提高了效率。在程序中,设备和文件都是使用文件描述符来进行操作的。文件描述符是一个非负的整数,是一个索引值,并指向内核中每个进程打开文件的 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 表。当打开一个现存的文件或者是创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写时也需要将文件描述符作为参数传递给相应的函数。 Linux 系统中,所有的设备文件都位于“/ dev”下,其中串口对应的设备名在 为“/ dev/ ttyS0”,因此对串口的读写就可以像读写(“read”和“write”) 普通文件一样来读写设备文件,所不同的是需要对串口的其他参数另做配置。 打开串口之后,读写串口就很容易了,把串口当作文件读写就可以了。 (1)发送数据 char butter[1024]; int Length=1024; int nByte; nByte=write(fd,buffer,Length); (2)读取串口数据 使用文件操作read 函数读取,如果设置为原始模式(Raw Mode)传输数据,那么read 函数返回的字符数是实际串口收到的字符数。读取数据时比较需要技巧的。 char buff[1024]; int Len=1024; int rdadByte=read(fd,buff,Len); 也可以使用操作文件的函数来实现异步读取,如fcntl,或者selectt 等来操作。 fd_set rfds; struct timeval tv; int retval; /*下面几行设置要监视进行读写操作的文件集*/ FD-ZERO(&rfds); //文件集清零 FD_SET(ports[portNo].handle,&rfds); //向集合中添加一个文件句柄 tv.tv_sec=Timeout/1000; //设置等待的时间 tv.tv_usec=(Timeeout%1000)*1000; retval=select(16,&rfds,NULL,NULL,&tv;) //文件所监视的文件集准备好. 15 毕业设计 if(rdtvel) //文件集中有文件在等待时间内 准备好了. { actuaIRead=read(ports[portNo].handle,buf,maxCnt); //读取数据 } 下面两个实例给出了串口读和写两个程序部分代码。写串口的程序将在宿主 机上运行,读串口程序将在目标板上运行。 写串口部分程序: do { printf(“Input some words(enter „quit‟ to exit):”); memset(buff, 0,BUFFER_SIZE); if(fgets(buff,BUFFER_SIZE,stdin)==NULL) { perror(“fgets”); break; } write(fd,buff,strlen(buff)); }whie(strncmp(buff,”quit”,4)); 读串口部分程序: do { memset(buff,0,BUFFER_SIZE); if(read(fd,buff,BUFFER_SIZE)>0) { printf(“The received words are:%s”,buff); } }while(strncmp(buff,”quit”,4)); 3.5 关闭串口 在Linux 系统中,对设备和目录的操作都等同于文件的操作, 关闭串口就是 关闭文件,而设备和文件都是使用文件描述符来进行操作的。文件描述符是一个 16 毕业设计 索引值,指向内核中每个进程打开文件的记录表,因此关闭文件就只要关闭文件描述符就可以了。 close(fd); 4 设计验证与测试 17 毕业设计 以下是本次实验的具体实现过程: (1)在PC机上安装虚拟机Vmware,在虚拟机中加载Red Hat Linux 9.03系统,建立交叉编译环境。 (2)在Linux系统下编写串口通信的程序serial_com.c,先用gcc编译,确认无误后,用arm-linux-gcc进行交叉编译,生成可执行文件serial_com,如下: (3)硬件连接:将电源线分别连接2410F 开发板与电源插座。用一根串口线将宿主PC 机的串口与2410F型板的串口0(UART0)相连。用一根交叉对接网线将宿主PC 机的网口与2410F开发板的网口(NET)相连。 (4)在宿主机上建立一个ftp服务器:即运行一个简单的ftp服务器软件ftpserver.exe,然后对服务器的IP地址,服务器的端口,根目录文件夹等进行相关的配置,启动服务,如图4.1,4.2,4.3所示。 图4.1 配置服务器IP地址和端口 18 毕业设计 图4.2 设置根目录 图4.3 启动ftp服务 (5)通过ftp文件传输协议把宿主机上的可执行文件serial_com下载到开发板上。要把传输方式设置为二进制传输,即b模式。 (6)在开发板上运行serial_com。 (7)在宿主机上运行一个串口软件sscom32.exe,配置串口号,波特率,数据位,停止位,校验位,如图4.4所示。 19 毕业设计 图4.4 配置sscom32 (8)宿主机与开发板之间开始通信,如图4.5所示。 图4.5 通信过程 (9)观察通信过程,确认不出现错误。 (10)通信完成。 5 总 结 20 毕业设计 本文介绍了一种基于嵌入式的串口通信系统,采用S3C2410 芯片作为串口通信的控制核心器件,实现了在Linux 操作系统下宿主机与目标机间串口通信的基本功能。 在系统的结构实现上,给出了系统的硬件实现原理,并详细介绍了其软件实现过程,比如设置串口、读写串口等。该系统操作方便,实现容易,在此基础上进一步改进,可以在基于Linux 操作系统的ARM 平台上实现更多的嵌入式功能。 这是我第一次独立在Linux系统下进行设计开发,通过一次次的实验慢慢进步,但是由于毕业设计时间有限,本次设计难免有很多不足,需要进一步改进,主要是以下几个方面: (1)本次设计可以进一步完善,可以从其他方面进行考虑。 (2)本次设计只考虑到了单个串口时的通信,当多个串口的情况下,这种方法就行不通了。 (3)本次设计的系统结构简单,但是不够严谨,容易造成数据通信出错。 总之,这次毕业设计要我学到了很多知识,拓展了我的思维,而且让我明白了怎样理论联系实际,在实践过程中遇到的问题怎样用理论来解决,为以后的工作积累了经验,增强了信心。 参考文献 21 毕业设计 [1]张思民编著.嵌入式系统设计与应用[M]. 北京:清华大学出版社, 2008. [2]ARM Limited. ARM Developer Suiter (Version 1.2) , Assemble Guide, AR M DUI 0068A, 2000. [3]熊茂华、杨震伦主编. ARM9嵌入式系统设计与开发应用[M].北京:清华大学出版社,2008. [4]刘彦文主编.基于ARM TDMI的S3C44BOX嵌入式微处理器技术[M].北京:清华大学出版社,2009. [5]徐磊编著.Linux系统下C程序开发详解[M]. 北京:电子工业出版社,2008. [6]华清远见嵌入式培训中心编著. 嵌入式Linux系统开发标准教程(第2版)[M]. 北京:人民邮电出版社,2009. [7]罗苑棠编著.嵌入式Linux驱动程序和系统开发实例精讲[M].北京:电子工业出版社,2009. [8]罗蕾主编. 嵌入式实时操作系统及应用开发(第2版)[M]. 北京:北京航空航天大学出版社,2007. [9]华清远见嵌入式培训中心编著. Linux设备开发详解(第2版)[M]. 北京:人民邮电出版社,2010. [10] Advanced Programming in the UNIX Environment[M](W.Richard Stevens,2000. 致 谢 22 毕业设计 23 毕业设计 附 录 串口通信程序serial_com.c源代码: /*serial_com.c*/ #include #include #include #include #include #include #include #include #define MODEMDEVICE "/dev/ttyS0" #define _POSIX_SOURCE 1 #define FALSE 0 #define TRUE 1 volatile int STOP=FALSE; main() { int fd,n=0,c,BAUDRATE,i,BUFNUMBER=32,READNUMBER=32; char receivebuf[BUFNUMBER]; struct termios oldtio,newtio; struct stat st; errno=0; fd=open(MODEMDEVICE, O_RDWR|O_NOCTTY/*|O_NDELAY|O_NONBLOCK*/);/*打开串口*/ if (errno) { perror(MODEMDEVICE); printf("Error in open COM1\n"); errno=0; exit(-1); } tcgetattr(fd,&oldtio); bzero(&newtio,sizeof(newtio)); BAUDRATE=B9600; cfsetispeed(&newtio,BAUDRATE);/*设置串口输入波特率*/ cfsetospeed(&newtio,BAUDRATE);/*设置串口输出波特率*/ newtio.c_cflag|=CS8|CLOCAL|CREAD;/*设置串口奇偶校验位*/ newtio.c_iflag=IGNPAR|ICRNL; newtio.c_lflag&=~(ICANON|ECHO|ECHOE|ISIG); // newtio.c_lflag|=(ICANON|ECHO/*|ECHOE*/|ISIG); newtio.c_cc[VINTR]=0; 24 毕业设计 newtio.c_cc[VQUIT]=0; newtio.c_cc[VERASE]=0; newtio.c_cc[VKILL]=0; newtio.c_cc[VEOF]=4; newtio.c_cc[VTIME]=0; newtio.c_cc[VMIN]=1; newtio.c_cc[VSWTC]=0; newtio.c_cc[VSTART]=0; newtio.c_cc[VSTOP]=0; newtio.c_cc[VSUSP]=0; newtio.c_cc[VEOL]=0; newtio.c_cc[VREPRINT]=0; newtio.c_cc[VDISCARD]=0; newtio.c_cc[VWERASE]=0; newtio.c_cc[VLNEXT]=0; newtio.c_cc[VEOL2]=0; // c=fcntl(fd,F_SETFL,FNDELAY); c=tcflush(fd,TCIOFLUSH); tcsetattr(fd,TCSANOW,&newtio); //n=0; for(i=0;i
本文档为【PC机与嵌入式开发板串口通信的设计与编程实现】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_668482
暂无简介~
格式:doc
大小:167KB
软件:Word
页数:33
分类:互联网
上传时间:2017-09-02
浏览量:71