嵌入式串口通信的设计

嵌入式串口通信的设计
嵌入式串口通信的设计

*******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2013年春季学期

嵌入式系统开发技术课程设计

题目:嵌入式串口通信的设计

专业班级:通信工程三班

姓名:

学号:

指导教师:张玺君

成绩:

摘要

随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成为了最热门的技术之一。与此同时,一个独立的嵌入式系统的功能缺陷也逐渐暴露出来。新一代嵌入计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入环境下的实时网络通信成为嵌入计算技术研究的重点和热点。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。

关键词:嵌入式串口通信 2410F

目录

前言 (1)

一、串口通信概述 (2)

1.1 串口通信的原理 (2)

1.2 串口通信的开发工具 (2)

1.2.1 CC2530功耗 (2)

1.2.2 ARM简介 (3)

1.2.3 Linux系统简介 (3)

1.3 串口通信的基本任务 (4)

1.4串口通信协议及实现 (4)

二、 RS-232C标准 (6)

2.1引脚定义 (6)

2.2 字符(帧)格式 (7)

2.3握手协议 (8)

2.4 双机互连方式 (10)

2.4.1无硬件握手情况 (10)

2.4.2 DTR和DSR握手情况 (10)

三、串口驱动程序设计 (12)

3.1 串口操作需要的头文件 (12)

3.2 打开串口 (12)

3.3 串口设置 (12)

3.4 串口读写 (15)

3.5 关闭串口 (16)

四、源程流程图 (18)

五、源程序代码 (19)

参考文献 (20)

总结 (22)

前言

嵌入式系统是以应用为中心,以计算机技术为基础,软硬件可定制,适用于不同应用场合,对功能,可靠性,成本,体积,功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器,外围硬件设备,嵌入式操作系统,用户应用程序4个部分组成。用于实现对其他设备的控制,监视或管理等功能。嵌入式系统已经广泛应用于科学研究,工业控制,军事技术,交通通信,医疗卫生,消费娱乐等领域,人们常用的手机,PDA,汽车,智能家电,GPS 等均是嵌入式系统的典型代表。

串口通信是简单嵌入式系统的一个应用,串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。

1

一、串口通信概述

所谓串口通信,是指外设和计算机间使用一根数据信号线(另外需要地线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。

串口传输是二进制代码序列在一条信道上以位(元码)为单位,按时间顺序且按位传输的通信方式。串行传输时,发送端按位发送,接收端按位接受,同时还要对所传输的位加以确认,所以收发双方要采取同步措施,否则接受端将不能正确区分出所传输的数据。

串口通信不但能实现计算机与嵌入式开发板之间的数据传输,而且还能实现计算机对嵌入式开发板的控制。若采用普通单片机,对外部设备的访问就需要利用复杂的汇编语言进行编程或者使用C51自己编写设备的初始化以及读写访问程序,这样的过程不仅复杂,而且不利于大规模的开发和设计。ARM 与8051 等普通单片机相比,具有开发简单、灵活,而且性能稳定、功能易于扩展等一系列优势,因而在汽车电子、手持设备、无线领域和航空航天等嵌入式系统中得到广泛的应用。

将Linux 移植到ARM 嵌入式处理器后,可以利用操作系统中提供的系统调用把串口及其他外设当成普通文件进行操作,读写方便,因此进行相应开发可以提高系统编程效率,而且还

可以简化调试的复杂程度。

1.1 串口通信的原理

串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提出申请要求(打开串口),通信完成后必须释放资源(关闭串口)。

1.2 串口通信的开发工具

本次开发采用的硬件平台是利用OURS-IOTV2-2530实验箱和C语言来实现本次系统的开发。

1.2.1 CC2530功耗

CC2530使用不同的运行模式或功耗模式以允许低功耗运行。超低功耗是通过关闭模块电源以避免静态功耗以及通过使用时钟门控和关闭振荡器来减少动态功耗而获得的。CC2530有4个功耗模式,被称为PM0、PM1、PM2和PM3。PM0是激活模式而PM3具有最低功耗。

PM0:全功能模式。连接到数字内核的电压调整器打开。16MHz RC振荡器或32MHz 晶体振荡器运行或者它们同时运行。32.753KHz RC振荡器或32.768KHz 晶体振荡器运行。

PM1:连接到数字部分的电压调整器打开。16MHz RC振荡器和32MHz 晶体振荡器都不运行。

32.753KHz RC振荡器或32.768KHz 晶体振荡器运行。在产生复位、外部中断或当睡眠定时器到期时系统将返回到PM0。

PM2:连接到数字内核的电压调整器关闭。16MHz RC振荡器和32MHz 晶体振荡器都不运行。32.753KHz RC振荡器或32.768KHz 晶体振荡器运行。在产生复位、外部中断或当睡眠定时器到期时系统将返回到PM0。

PM3:连接到数字内核的电压调整器关闭。没有振荡器运行。在产生复位或外部中断时系统将返回到PM0。

PM0是全功能模式,在该模式下,CPU、片内外设和RF收发器都处于激活状态,数字电压调整器打开。该模式也被称为激活模式时。

1.2.2 ARM简介

ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。1991 年ARM 公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM 技术知识产权(IP)核的微处理器,即通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统、军用系统等各类产品市场,基于ARM 技术的微处理器应用约占据了32 位RISC 微处理器70%以上的市场份额,ARM 技术正在逐步渗入到我们生活的各个方面。ARM 公司是专门从事基于RISC 技术芯片设计开发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可,由合作公司生产各具特色的芯片,世界各大半导体生产商从ARM 公司购买其ARM 微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM 微处理器芯片进入市场。目前全世界有几十家大的半导体公司都使用ARM 公司的授权,因此既使得ARM 技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场并被消费者所接受,更具有竞争力。

ARM 微处理器一般具有如下特点:

(1)体积小、低功耗、低成本、高性能;

(2)支持 Thumb(16 位)/ARM(32 位)双指令集,能很好的兼容8/16 位器件;

(3)大量使用寄存器,指令执行速度更快;

(4)大多数数据操作都在寄存器中完成;

(5)寻址方式灵活简单,执行效率高;

(6)指令长度固定。

1.2.3 Linux系统简介

Linux是一类Unix计算机操作系统的统称。Linux操作系统也是自由软件和开放源代码发展中最著名的例子。Linux 一般有四个主要部分:内核、Shell、文件结构和实用工具。

(1)Linux内核

内核是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序。它从用

户那里接受命令并把命令送给内核去执行。

(2)Linux Shell

Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行。

实际上Shell 是一个命令解释器,它解释由用户输入的命令并且把它们送到内核。不仅如此,Shell 有自己的编程语言用于对命令的编辑,它允许用户编写由shell 命令组成的程序。Shell 编程语言具有普通编程语言的很多特点,比如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell 程序与其他应用程序具有同样的效果。

(3)Linux 文件结构

文件结构是文件存放在磁盘等存储设备上的组织方法。主要体现在对文件和目录的组织上。目录提供了管理文件的一个方便而有效的途径。我们能够从一个目录切换到另一个目录,而且可以设置目录和文件的权限,设置文件的共享程度。

使用Linux,用户可以设置目录和文件的权限,以便允许或拒绝其他人对其进行访问。

(4)Linux 实用工具

标准的 Linux 系统都有一套叫做实用工具的程序,它们是专门的程序,例如编辑器、执行标准的计算操作等。用户也可以产生自己的工具。

1.3 串口通信的基本任务

(1)实现数据格式化:因为来自CPU 的是普通的并行数据,所以,接口电路应具有实现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。

(2)进行串---并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送入计算机处理。因此串并转换是串接口电路和的重要任务。

(3)控制数据传输速率:串行通信接口电路应具有对数据传输速率-----波特率进行先择和控制的能力。

(4)进行错误检测:在发送接口电路对传送的字符数据自动生成奇偶校验位或其他校验码。在接收时,接口电路检查字符的奇偶校验或其他检验码,确定是否发生传送错误。

(5)进行TTL 与EIA 电平转换:CPU 和终端均采用TTL 电平及正逻辑,它们与EIA 采用的电平及负逻辑不兼容,需在接口电路中进行转换。

1.4串口通信协议及实现

串行端口的本质功能是作为CPU 和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS-232C 串口的计算机或设备进行通信。本系统主要目的是

实现宿主机与目标机之间的近距离串行通信, 采用的宿主机是Intel Centrino架构的Red Hat Linux 9.03 环境PC机, 而目标机是ARM 架构的开发板。

本系统中目标机开发板的内核采用的是三星的S3C2410 ,该开发板采用核心板加底板的模式, 核心板接口采用DIMM200 标准连接器,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS-232C 型接口模式,能实现计算机与开发板间的数据传输与控制。嵌入式串口通信采用EIA RS-232C标准。

二、RS-232C标准

RS-232C是1969年由电子工业协会(EIA)公布的标准。该标准的用途是定义数据终端设备DTE(Data Terminal Equipment)与数据通信设备DCE(Data Communication Equioment)的接口特性。

数据终端设备就是连接通信两端设备的连线(如空MODEM)或其他设备。RS-232C 标准的构架如图2.1所示。

RS-232C采用非归零、双极性编码,且使用负逻辑规定的逻辑电平:-15~-5V规定为逻辑“1”。+5~+15V规定为逻辑“0”。信号电平与TTL电平不兼容,所以需要电平转换电路(通常使用MAX3232转换)。电平转换电路如图2.2所示。

目前广泛的DB9引脚定义如图2.3所示。信号引脚定义的说明见表2.1。

图2.3 DB9 引脚定义

表2.1 DB9引脚说明

2.2 字符(帧)格式

RS-232C采用起止式异步通信协议,其特点是一个字符接着一个字符进行传输,并且传输一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其传输格式如图2.4所示,每一个字符的前面都有一位起始位(低电平,逻辑“0”),字符本身有5~8位数据位,接着字符后面是一位校验码(也可以没有校验码),最后是停止位。停止位后面是不定长度的空闲位。停止位和空闲位都规定为高电平(逻辑值“1”),这样就能保证起始位开始处一定有一个下跳沿,便于接受方识别。

从图2.4 中可以看出,这种格式是靠起始位和停止位来实现字符的界定或同步的,故称为起止式协议。没有统一的时钟,没有同步字符,依靠起始位和停止位标识每一帧,传输时,数据的地位在前,高位在后。

起始位实际上是作为同步信号附加进来的,当它变为低电平时,告诉接受方传输开始,后面接着是数据位;而停止位则标志一个字符的结束。这样就为通信双方提供了何时开始收发、何时结束的标志。传输开始前,收发双方把所采用的字符格式(包括字符的数据位长度、停止位位数、有无校验位以及是奇校验还是偶校验等)和数据的传输速率进行统一规定。传输开始后,接收设备不断地检测线路,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿(由“1”变为“0”),说明起始位出现,起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。然后去掉停止位,对数据位进行串并转换,并且经奇偶校验无误后,才算正确地接收到一个字符。一个字符接收完毕,接收设备又继续测试线路,监视“0”电平的到来和下一位字符的开始,直到全部数据传输完毕。

2.3握手协议

RS-232C标准除了规定的字符格式和通信波特率以外,还在数据终端设备DTE和数据通信设备DCE之间定义了一套握手协议。握手协议的过程如图2.5所示。

①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已经准备接收时,使用CTS信号通知自己的DTE,表示这个通信通路已经做好数据传输的准备,允许DTE进行数据发送。至此,通信链路建立,可以通信。

⑥RI:振铃指示。如果MODEM具有自动应答能力,当对方呼叫传来时,MODEM向DTE 发出该信号,指示此呼叫。在电话呼叫振铃结束后,MODEM在DTE已准备好的情况下(即DTR 有效),立即向对方自动应答。

2.4 双机互连方式

双机可以利用RS-232C通信接口进行直接互连(数据终端设备DTE到DTE),即空MODEM 连接。这种形式在嵌入式系统中应用极为广泛。

由于RS-232C标准中有两对硬件握手协议的引线:DTR和DSR、RTS和CTS,根据应用握手协议的机制不同,可分为3种情况:无硬件握手、DTR和DSR握手、RTS和CTS握手。2.4.1无硬件握手情况

无硬件握手的双机互连如图2.6所示。

易溢出。

2.4.2 DTR和DSR握手情况

DTR和DSR握手的双机互连如图2.7所示。

已经做好接收数据的准备,可以发送数据。若计算机A为准备好,则DTR无效,计算机B通过采集DSR,得知计算机A尚未做好接收数据的准备,停止发送数据。

2.4.3RTS和CTS握手情况

RTS和CTS握手的双机互连如图2.8所示。

利用RTS和CTS握手进行发送和接收数据的过程如下(设计算机A接收、计算机B发送):

若计算机A已经准备就绪,则使RTS有效。计算机B通过采集CTS,得知计算机A已经做好接收数据的准备,可以发送数据。若计算机A未准备好,则RTS无效,计算机B通过采集CTS,得知计算机A尚未做好接收数据的准备,停止发送数据。

三、串口驱动程序设计

由于嵌入式系统是一个受资源限制的系统,因此不能直接在嵌入式系统硬件上进行编程。作为一个完整的嵌入式系统,其软件设计也是一个很重要的方面。本系统软件的实现是通过串口设置和读写串口等操作来完成宿主机与目标机间的串口通信。

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”状态。当发送字符数数据是首先发送一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线路传输到接收端,接收端检测到这个低电平之后,就开始准备接收数据位信号。起始位所起的作用就是使通信双方同步。

数据位

当接收端收到起始位后,开始接收数据位。数据位的个数可以是5~8位。在数据传送过程中,数据位从最低有效位开始传送,接收端收到数据后,依次将其转换成并行数据。

奇偶校验位

数据位发送完后,为了保证数据的可靠性,还要传送一个奇偶校验位。奇偶校验用于差错检测。如果选择偶检验,则数据位和奇偶位的逻辑“1”的个数必须为偶数,相反,如果是奇检验,则数据位和奇偶位的逻辑“1”的个数为奇数。

停止位

在奇偶位或数据位(当无奇偶校验时)之后发送停止位。停止位表示一个数据的结束。它可以是1~2位的低电平。接收端收到停止位后,通信线路便恢复逻辑“1”的状态,直到下一个数据的起始位到来。

波特率

通信线路上传输的位(码元)信号都必须保持一致的信号持续时间,单位时间内传送码元的数目称为波特率。对大多数嵌入式设备来说,其波特率都设置为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;

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*/

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); //向集合中添加一个文件句柄

https://www.360docs.net/doc/e110850690.html,_sec=Timeout/1000; //设置等待的时间

https://www.360docs.net/doc/e110850690.html,_usec=(Timeeout%1000)*1000;

retval=select(16,&rfds,NULL,NULL,&tv;) //文件所监视的文件集准备好.

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 系统中,对设备和目录的操作都等同于文件的操作, 关闭串口就是关闭文件,而设备和文件都是使用文件描述符来进行操作的。文件描述符是一个索引值,指向内核中每个

2020年嵌入式串口通信设计参照模板

***************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 2013年春季学期 嵌入式系统开发技术课程设计 题目:嵌入式串口通信设计 专业班级:通信工程四班 姓名: 学号: 指导教师: 成绩:

嵌入式是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在实际开发应用中,串口通信是不可缺少的部分。 目前嵌入式系统与PC机之间一种非常重要而且普遍应用的通信方式。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。通过与计算机串口间的接,实现在ARM 平台上,传输速率115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测。与外部设备通信的基本功能。 关键字:嵌入式系统,串口通信,Linux系统

前言 ------------------------------------------------------------------------------------------- - 4 - 一、串口通信概述--------------------------------------------------------------------------- - 5 - 1.1 串口通信的原理 ------------------------------------------------------------------ - 5 - 1.2 串口通信的开发工具 ------------------------------------------------------------ - 5 - 1.2.1 2410F硬件平台简介---------------------------------------------------------- - 5 - 1.3 串口通信的基本任务 ------------------------------------------------------------ - 8 - 二、系统分析--------------------------------------------------------------------------------- - 9 - 三、串口驱动程序设计 ------------------------------------------------------------------- - 17 - 3.1 串口操作需要的头文件 -------------------------------------------------------- - 17 - 3.2 打开串口 -------------------------------------------------------------------------- - 17 - 3.3 串口设置 -------------------------------------------------------------------------- - 18 - 3.4 串口读写 -------------------------------------------------------------------------- - 20 - 3.5 关闭串口 -------------------------------------------------------------------------- - 22 - 四、总结-------------------------------------------------------------------------------------- - 23 - 参考文献-------------------------------------------------------------------------------------- - 24 - 附录----------------------------------------------------------------------------------------- - 25 -

cc2530串口UART0通信实验(20200627130016)

/********************* 头文件*************************************************/ #include #include /********************* 宏定义*************************************************/ #define uint unsigned int #define uchar unsigned char // --------------- LED 控制端口------------------------------- // #define GLED P1_0〃绿色LED定义 #define RLED P1_1〃红色LED定义 // --------------- 按键输入端口------------------------------- // #define KEY1 P0_0 /********************* 全局变量**********************************************/ unsigned char Uart0_Rx; unsigned char Text_Data[]=" 海舟物联网教育!\r\n"; /********************* 函数声明***********************************************/ void Delay(uint); void Init_LED(void); void Init_Uart0(void); void Init_Sysclk(void); void Uart0_TX_Data(unsigned char *Data,int len); /****************************************************************************** * 函数名称: void Delay(uint n) * 函数功能: 软件延时函数 * 入口参数: * 出口参数: * 备注: ******************************************************************************/ void Delay(uint n) { uint i; for(i=0;i

嵌入式系统实验报告-串行通信实验

《嵌入式系统实验报告》 串行通信实验 南昌航空大学自动化学院050822XX 张某某 一、实验目的: 掌握μC/OS-II操作系统的信号量的概念。 二、实验设备: 硬件:PC机1台;MagicARM2410教学实验开发平台台。 软件:Windows 98/2000/XP操作系统;ADS 1.2集成开发环境。 三、实验内容: 实验通过信号量控制2个任务共享串口0打印字符串。为了使每个任务的字符串信息(句子)不被打断,因此必须引入互斥信号量的概念,即每个任务输出时必须独占串口0,直到完整输出字符串信息才释放串口0。 四、实验步骤: (1)为ADS1.2增加DeviceARM2410专用工程模板(若已增加过,此步省略)。 (2)连接EasyJTAG-H仿真器和MagicARM2410实验箱,然后安装EasyJTAG-H仿真器(若已经安装过,此步省略),短接蜂鸣器跳线JP9。 (3)启动ADS 1.2,使用ARM Executable Image for DeviceARM2410(uCOSII)工程模板建立一个工程UART0_uCOSII。(本范例在ADS文件夹中操作) (4)在ADS文件夹中新建arm、Arm_Pc、SOURCE文件夹。将μC/OS 2.52源代码添加到SOURCE文件夹,将移植代码添加到arm文件夹,将移植的PC服务代码添加到Arm_Pc文件夹。 (5)在src组中的main.c中编写主程序代码。 (6)选用DebugRel生成目标,然后编译链接工程。 (7)将MagicARM2410实验箱上的UART0连接跳线JP1短接,使用串口延长线把MagicARM2410实验箱的CZ11与PC机的COM1连接。 注意:CZ11安装在MagicARM2410实验箱的机箱右侧。 (8)PC机上运行“超级终端”程序(在Windows操作系统的【开始】->【程序】->【附件】->【通讯】->【超级终端】),新建一个连接,设置串口波持率为115200,具体设置参考图3.5,确定后即进入通信状态。 (9)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。 (10)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。 (11)可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,在超级终端上观察任务0和任务1的打印结果。 五、实验结论与思考题(手写,打印无效): 1、如果任务0删除语句“OSSemPost(UART0_Sem);”,那么程序还能完全正常无误运行么?如果发生异常会出现什么现象?

UART串口通信设计实例

2.5 UART串口通信设计实例(1) 接下来用刚才采用的方法设计一个典型实例。在一般的嵌入式开发和FPGA设计中,串口UART是使用非常频繁的一种调试手段。下面我们将使用Verilog RTL编程设计一个串口收发模块。这个实例虽然简单,但是在后续的调试开发中,串口使用的次数比较多,这里阐明它的设计方案,不仅仅是为了讲解RTL编程,而且为了后续使用兼容ARM9内核实现嵌入式开发。 串口在一般的台式机上都会有。随着笔记本电脑的使用,一般会采用USB转串口的方案虚拟一个串口供笔记本使用。图2-7为UART串口的结构图。串口具有9个引脚,但是真正连接入FPGA开发板的一般只有两个引脚。这两个引脚是:发送引脚TxD和接收引脚RxD。由于是串行发送数据,因此如果开发板发送数据的话,则要通过TxD线1 bit接着1 bit 发送。在接收时,同样通过RxD引脚1 bit接着1 bit接收。 再看看串口发送/接收的数据格式(见图2-8)。在TxD或RxD这样的单线上,是从一个周期的低电平开始,以一个周期的高电平结束的。它中间包含8个周期的数据位和一个周期针对8位数据的奇偶校验位。每次传送一字节数据,它包含的8位是由低位开始传送,最后一位传送的是第7位。

这个设计有两个目的:一是从串口中接收数据,发送到输出端口。接收的时候是串行的,也就是一个接一个的;但是发送到输出端口时,我们希望是8位放在一起,成为并行状态(见图2-10)。我们知道,串口中出现信号,是没有先兆的。如果出现了串行数据,则如何通知到输出端口呢?我们引入“接收有效”端口。“接收有效”端口在一般情况下都是低电平,一旦有数据到来时,它就变成高电平。下一个模块在得知“接收有效”信号为高电平时,它就明白:新到了一个字节的数据,放在“接收字节”端口里面。

嵌入式_USART 串口通讯

USART 串口通讯-存储池方式 【实验目的】 学习USART的特性及功能 学习USART 串口通讯的使用 【实验原理】 1. USART介绍 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行 数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互连网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。 2. USART特性 全双工的,异步通信 标准格式 分数波特率发生器系统 ─发送和接收共用的可编程波特率,最高达 4.5Mbits/s 可编程数据字长度(8位或9位) 可配置的停止位-支持1或2个停止位 LIN主发送同步断开符的能力以及LIN从检测断开符的能力 ─当USART硬件配置成LIN时,生成13位断开符;检测10/11位断开符发送方为同步传输提供时钟 编码器解码器 ─在正常模式下支持3/16位的持续时间 智能卡模拟功能 ─智能卡接口支持ISO7816-3标准里定义的异步智能卡协议 ─智能卡用到的0.5和 1.5个停止位 单线半双工通信 可配置的使用DMA的多缓冲器通信 ─在SRAM里利用集中式DMA缓冲接收/发送字节 单独的发送器和接收器使能位 检测标志 ─接收缓冲器满 ─发送缓冲器空 ─传输结束标志 校验控制 ─发送校验位 ─对接收数据进行校验 四个错误检测标志 ─溢出错误通用同步异步收发器(USART) ─噪音错误 ─帧错误

串行口通信实验 单片机实验报告

实验六串行口通信实验 一、实验内容 实验板上有RS-232接口,将该接口与PC机的串口连接,可以实现单片机与PC机的串行通信,进行双向数据传输。本实验要求当PC机向实验板发送的数字在实验板上显示,按实验板键盘输入的数字在PC机上显示,并用串口助手工具软件进行调试。 二、实验目的 掌握单片机串行口工作原理,单片机串行口与PC机的通信工作原理及编程方法。 三、实验原理 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通信。进行串行通讯信要满足一定的条件,比如电脑的串口是RS232电平(-5~-15V为1,+5~+15V为0),而单片机的串口是TTL电平(大于+2.4V为1,小于- 0.7V为0),两者之间必须有一个电平转换电路实现RS232电平与TTL电平的相互转换。 为了能够在PC机上看到单片机发出的数据,我们必须借助一个Windows软件进行观察,这里我们可以使用免费的串口调试程序SSCOM32或Windows的超级终端。 单片机串行接口有两个控制寄存器:SCON和PCON。串行口工作在方式0时,可通过外接移位寄存器实现串并行转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端用于输出移位同步时钟信号,其波特率固定为振荡频率的1/12。由软件置位串行控制寄存器(SCON)的REN位后才能启动,串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据输完后,硬件将SCON寄存器的T1位置1,必须由软件清零。 单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。如果用户要进行串行通信,可以调用WINDOWS的API 应用程序接口函数,但其使用较为复杂,可以使用KEILC的通信控件解决这一问题。 四、实验电路 [参考学习板说明书P27]

实验报告-实验一IAR串口通信

实验报告-实验一IAR串口通信 以下是为大家整理的实验报告-实验一IAR串口通信的相关范文,本文关键词为实验,报告,IAR,串口,通信,实验,平台,使用,串口,通信,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。 实验一平台使用及串口通信 本次实验报告在下课后3天内上交!一、实验目的 (1)了解物联网实验 (2)箱熟悉IAR开发平台

(3)能够读懂原理图中有关传感器的接口电路(4)能够建工程项目并编写程序(5)掌握串口通信 二、实验设备 仿真器1台,gec_cc2530板1块,usb连接线1根。 三、实验内容 使用cc2530通过uART接收控制命令,完成LeD的控制。 四、实验代码 完善红色注释部分代码: #include#include #defineuintunsignedint#defineucharunsignedchar #defineRLeDp1_0#definegLeDp1_1#defineYLeDp1_4 voidinituART0(void); ucharRecdata[3]=%ucharRxTxflag=1; uchartemp; uintdatanumber=0;uintstringlen; /*******************************@brief串口(uART0)初始化******************************/voidinituART0(void){ cLKconcmD//设置系统时钟源为32mhZ晶振while(cLKconsTA//等待晶振稳定 cLKconcmD//设置系统主时钟频率为32mhZpeRcFg=0x00;//位置1p0口p0seL=0x3c;//p0用作串口

嵌入式UART接口模块的设计

嵌入式UART接口模块的设计 引言 在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题: (1)速度不匹配。外设的工作速度和计算机的工作速度不一样,而且外设之间的工作速度差异也比较大。 (2)数据格式不匹配。不同的外设在进行信息存储和处理时的数据格式可能不同,例如最基本的数据格式可分为并行数据和串行数据。 (3)信息类型不匹配。不同的外设可能采用不同类型的型号,有些是模拟信号,有些是数字信号,因此采用的处理方式也不同。 为了解决外设和计算机之间的信息交换问题,即需要设计一个信息交换的中间环节接口。UART控制器是最常用的接口。 通用异步收发器(UniversalAsynchrONousReceiv2er/Transmitter,UART)是辅助计算机与串行设备之间的通信,作为RS232通信接口的一个重要的部分,目前大部分的处理器都集成了UART。 1 UART的数据格式 UART的数据传输格式。 图1 UART的数据传输格式 由于数字图像亚像素在计算机中是用8位二进制表示,因此UART传输的有效数据位为8位。传输线在空闲时为高电平,因此有效数据流的开始位设为0。 接着传输8位有效数据位,先从最低位开始传送。奇偶检验位可以设置为奇检验、偶校验或者不设置校验位,由于本系统使用的传输速率不高,为了加快开发进程,减少电路面积,因此没有设计奇偶检验模块,数据流中不设奇偶检验位。最后停止位为高电平。 2 UART的基本结构 设计的UART主要由UART内核、信号检测器、移位寄存器移位寄存器、波特率发生器和计数器组成,。 图2 UART基本结构 UART各个功能模块的功能如下文所述。 2.1 信号检测器模块 信号检测器用于对RS232的输入信号进行实时监测,一旦发现新的数据则立即通知UART 内核。信号检测器的仿真波形。 图3 信号检测器仿真波形图 其中,RxD第一次为低时,new_data信号阐述输出,之后RxD又变低,但由于信号检测器处于锁定状态,所以new_data信号并没有输出;最后,reset_n信号将信号检测器复位,RxD再次变低时,new_data又有输出。可见信号检测器的实现完全正确,其功能完全符合设计要求。 2.2 移位寄存器模块 移位寄存器模块的作用是存储输入或者输出数据。 当UART接收RS232输入时,移位寄存器在波特率模式下采集RS232输入信号,且保存结果;当进行RS232输出时,UART内核首先将数据加载到移位寄存器内,再使移位寄存器在波特率模式下将数据输出到RS232输出端口上。移位寄存器的仿真波形图。关键字:嵌入式嵌

基于linux的嵌入式串口通信

天津电子信息职业技术学院 嵌入式软件编程》课程报告 课程名称:基于linux 的嵌入式串口通信 课程代码:115229 姓名:甘琦 学号:48 专业:物联网应用技术 班级:物联S14-1 完成时间:2016 年10 月28 日

目录 摘要 (1) 前言 (2) 一、嵌入式串口通信概述 (2) 1.1嵌入式串口通信的原理 (2) 1.2嵌入式串口通信的开发工具 (2) 1.2.1 ............................................................. CC2530 功耗 2 1.2.2........................................................... ARM 简介 3 1.2.3................................................................ L inux 系统简介 3 1.3嵌入式串口通信的基本任务 (4) 1.4嵌入式串口通信协议及实现 (4) 二、RS-232C 标准 (5) 2.1引脚定义 (5) 2.2字符(帧)格式 (6) 2.3握手协议 (8) 2.4双机互连方式 (9) 2.4.1无硬件握手情况 (9) 2.4.2 .................................................................. DTR 和DSR握手情况9 三、嵌入式串口驱动程序设计 (10) 3.1嵌入式串口操作需要的头文件 (10) 3.2打开串口 (10) 3.3串口设置 (11) 3.4串口读写 (13) 3.5关闭串口 (14) 四、源程流程图 (15) 五、源程序代码 (15) 总结 (19)

串口通信实验报告全版.doc

实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分

数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include #define uchar unsigned char #define uint unsigned int void send(); uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的数码管显示 sbit H1=P3^6; sbit H2=P3^7;

sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i

{ m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下

dsp实验-UART串口通信实验

实验八、UART串口通信实验 一、实验目的 1. 了解RS232通信接口的基本原理; 2. 熟悉通信接口芯片(TL16C550C)在DSP I/O空间寄存器的地址映射 及工作原理; 3.了解异步通信中串口模式选择、设置数据传输格式、设置波特率、建立连接、传输数据和断开连接等功能。 二、实验设备 1. 集成开发环境CCS 2. 实验开发板TMS320VC5402DSK、RS232接口电缆线及附件 3.程序“串口调试程序v2.2.exe” 三、实验内容及步骤 实验操作流程参照前面实验。 1 在汇编环境调试Uart:(实现字符或文件的发送和回发功能) a. 实验代码main.s54、uartasm.cmd和uart_init.s54、dsp_init.s54 以及uartasm.h54,c5402_dsk.gel(说明同前)。 b. 串口调试程序“串口调试程序v2.2.exe” , 汇编调试中Build option设置情况与CODEC实验中的汇编调试设置及出错情况相同。 c. 程序文件介绍: 1)“uart.h54”定义了一些寄存器的地址以及函数类型。 2)“dsp_init.s54”与dsp工作有关的寄存器ST1、PMST、IMR、IFR和SWWSR,并且清除INTM位以及设定时钟模式。 3)“uart_init.s54”先检测UART模块是否工作正常,然后设定UART模块的寄存器,如CNTL1、CNTL2、LCR、MSB&LSB(设定波特率)、FCR、IER 等。 4)“main.s54”主程序查看标志位,检测是否UART存在有效接收数据。若有,则执行一定的处理,包括亮LED以及将接收的数据从UART回发。 d. 执行程序时,只要发送数据时,可在串口调试程序的接收窗口立即看到回发的数据。 e. 程序中UART工作参数设置如下: 1)波特率9600(或更低)、无数据校验、字符长度8比特、停止位1、

基于linux的嵌入式串口通信

天津电子信息职业技术学院《嵌入式软件编程》课程报告 课程名称:基于linux的嵌入式串口通信 课程代码:115229 姓名:甘琦 学号:48 专业:物联网应用技术 班级:物联S14-1 完成时间:2016 年10 月28日

目录 摘要 (1) 前言 (2) 一、嵌入式串口通信概述 (2) 1.1 嵌入式串口通信的原理 (2) 1.2 嵌入式串口通信的开发工具 (2) 1.2.1 CC2530功耗 (2) 1.2.2 ARM简介 (3) 1.2.3 Linux系统简介 (3) 1.3 嵌入式串口通信的基本任务 (4) 1.4嵌入式串口通信协议及实现 (4) 二、 RS-232C标准 (5) 2.1引脚定义 (5) 2.2 字符(帧)格式 (6) 2.3握手协议 (8) 2.4 双机互连方式 (9) 2.4.1无硬件握手情况 (9) 2.4.2 DTR和DSR握手情况 (9) 三、嵌入式串口驱动程序设计 (10) 3.1 嵌入式串口操作需要的头文件 (10) 3.2 打开串口 (10) 3.3 串口设置 (11) 3.4 串口读写 (13) 3.5 关闭串口 (14) 四、源程流程图 (15) 五、源程序代码 (15) 总结 (19)

摘要 随着Internet的发展和后PC时代的到来,嵌入式系统以其可靠性强、体积小、专用性、成本低等特性得到日益广泛的应用。目前嵌入式系统技术已经成为了最热门的技术之一。与此同时,一个独立的嵌入式系统的功能缺陷也逐渐暴露出来。新一代嵌入计算系统的功能集成和应用模式使之迅速向网络化嵌入计算的方向发展,标准和统一的TCP/IP通信协议是独立于任何厂家的硬件的,因此嵌入环境下的实时网络通信成为嵌入计算技术研究的重点和热点。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。 关键词:嵌入式串口通信 2410F

UART串口通信实验报告

实验四 UART 串口通信 学院:研究生院 学号:1400030034 姓名:张秋明 一、 实验目的及要求 设计一个UART 串口通信协议,实现“串 <-->并”转换功能的电路,也就是 “通用异步收发器”。 二、 实验原理 UART 是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实 现全双工传输和接收。在嵌入式设计中,UART 用来主机与辅助设备通信,如汽 车音响与外接AP 之间的通信,与PC 机通信包括与监控调试器和其它器件,如 EEPROM 通信。 UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一 位接一位地传输。 其中各位的意义如下: 起始位:先发出一个逻辑” 0的信号,表示传输字符的开始。 资料位:紧接着起始位之后。资料位的个数可以是 4、5、6、7、8等,构成 一个字符。通常采用ASCII 码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“ 1的位数应为偶数(偶校验)或奇数 (奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是 1位、1.5位、2位的高电 平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能 在通信中两台设备间出现了小小的不同步。 因此停止位不仅仅是表示传输的结束, 并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步 的容忍程度越大,但是数据传输率同时也越慢。 空闲位:处于逻辑“ 1状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol )。 一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为 120 字符/秒,传输使用256阶符号,每个符号代表8bit ,则波特率就是120baud,比 特率是120*8=960bit/s 。这两者的概念很容易搞错。 三、 实现程序 library ieee; use ieee.std 」o gic_1164.all; end uart; architecture behav of uart is en tity uart is port(clk : in std_logic; rst_n: in std 」o gic --系统时钟 --复位信号 rs232_rx: in std 」o gic rs232_tx: out std 」o gic --RS232接收数据信号; --RS232发送数据信号;); use ieee.std_logic_ un sig ned.all;

UART串行口简介

UART异步串行口 UART异步串行口简介 数据通信的基本方式可分为并行通信与串行通信两种: 并行通信:是指利用多条数据传输线将一个资料的各位同时传送。它的特点是传输速度快,适用于短距离通信,但要求通讯速率较高的应用场合。 串行通信:是指利用一条传输线将资料一位位地顺序传送。特点是通信线路简单,利用简单的线缆就可实现通信,降低成本,适用于远距离通信,但传输速度慢的应用场合。 UART 异步串行口的传输格式 异步通信以一个字符为传输单位,通信中两个字符间的时间间隔是不固定的,然 而在同一个字符中的两个相邻位代码间的时间间隔是固定的。 通信协议(通信规程):是指通信双方约定的一些规则。在使用异步串口传送一个 字符的信息时,对资料格式有如下约定:规定有空闲位、起始位、资料位、奇偶校验位、停止位。通讯时序图如下: 开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0”作为 起始位,然后出现在通信线上的是字符的二进制编码数据。 每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇 数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。 最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5 位或2 位 的时间宽度。 至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。 每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特 率为110,150,300,600,1200,2400,4800,9600 ,19200,38400,115200等。 S3C2410的异步串行口 1

嵌入式课程设计--_串口通信

摘要 (2) 1、绪论 (2) 1.1目的和意义 (2) 1.2设计内容 (2) 2、设计方案 (3) 2.1方案选择 (3) 2.1.1S3C2410X 串行通讯(UART)单元 (3) 2.1.2 波特率的产生 (3) 2.1.3 UART 通信操作 (4) 2.1.4 UART 控制寄存器 (4) 2.1.5 RS232 接口电路 (5) 3、硬件设计 (6) 3.1Embest EduKit-III 实验平台 (6) 3.2ULINK2 仿真器套件,PC 机 (6) 4、软件设计 (6) 4.2程序流程图设计 (7) 4.3调试运行结果 (7) 5、总结与体会 (8) 参考文献 (9)

摘要 为了掌握嵌入式技术,就应该学习以ARM 微处理器为核心的嵌入式开发环境和开发平台。本设计采用ARM原理和C语言程序设计的,设置S3C2410X 处理器 UART 相关控制寄存器和ARM 处理器系统硬件电路中 UART 接口,利用Embest EduKit-III 实验平台实现S3C2410X处理器和PC机的结合。 关键字: Embest EduKit-III 实验平台;S3C2410X 串行通讯(UART)单元;UART 控制寄存器;串口通信

1、绪论 1.1目的和意义 串口通信是目前单片机和 DSP 等嵌入式系统之间,以及嵌入式系统与 PC 机或无线模块之间的一种非常重要且普遍使用的通信方式。在嵌入式系统的硬件结构中,通常只有一个8位或 16位的 CPU, 不仅要完成主流程的工作, 同时还要处理随时发生的各种中断, 因而嵌入式系统中的串口通信程序设计与 PC 机有很大的不同。为了顺应当今世界技术革新的潮流,了解、学习和掌握嵌入式技术,就必然要学习和掌握以ARM 微处理器为核心的嵌入式开发环境和开发平台。 1.2设计内容 本设计采用Embest EduKit-III 实验平台实现,通过EmbestIDE Pro for ARM 软件编写程序,仿真调试。实现实验平台与PC的串口通信。通过PC的超级终端显示接受的结果。

UART串口通信实验报告

实验四UART串口通信 学院:研究生院学号:1400030034姓名:张秋明 一、实验目的及要求 设计一个UART串口通信协议,实现“串<-->并”转换功能的电路,也就是“通用异步收发器”。 二、实验原理 UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用来主机与辅助设备通信,如汽车音响与外接AP之间的通信,与PC机通信包括与监控调试器和其它器件,如EEPROM通信。 UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。 其中各位的意义如下: 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如资料传送速率为120字符/秒,传输使用256阶符号,每个符号代表8bit,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。 三、实现程序 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity uart is port(clk : in std_logic; --系统时钟 rst_n: in std_logic; --复位信号 rs232_rx: in std_logic; --RS232接收数据信号; rs232_tx: out std_logic --RS232发送数据信号;); end uart; architecture behav of uart is

SPI、I2C、UART三种串行总线的原理、区别及应用

简单描述: SPI 和I2C这两种通信方式都是短距离的,芯片和芯片之间或者其他元器件如传感器和芯片之间的通信。SPI和IIC是板上通信,IIC有时也会做板间通信,不过距离甚短,不过超过一米,例如一些触摸屏,手机液晶屏那些很薄膜排线很多用IIC,I2C能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存这两种线属于低速传输; 而UART是应用于两个设备之间的通信,如用单片机做好的设备和计算机的通信。这样的通信可以做长距离的。UART和,UART就是我们指的串口,速度比上面三者快,最高达100K左右,用与计算机与设备或者计算机和计算之间通信,但有效范围不会很长,约10米左右,UART优点是支持面广,程序设计结构很简单,随着USB的发展,UART也逐渐走向下坡; SmBus有点类似于USB设备跟计算机那样的短距离通信。 简单的狭义的说SPI和I2C是做在电路板上的。而UART和SMBUS是在机器外面连接两个机器的。 详细描述: 1、UART(TX,RX)就是两线,一根发送一根接收,可以全双工通信,线数也比较少。数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快。在多机通信上面用的最多。 2、SPI(CLK,I/O,O,CS)接口和上面UART相比,多了一条同步时钟线,上面UART 的缺点也就是它的优点了,对通信双方的时序要求不严格不同设备之间可以很容易结合,而且通信速度非常快。一般用在产品内部元件之间的高速数据通信上面,如大容量存储器等。 3、I2C(SCL,SDA)接口也是两线接口,它是两根线之间通过复杂的逻辑关系传输数据的,通信速度不高,程序写起来也比较复杂。一般单片机系统里主要用来和24C02等小容易存储器连接。 SPI:高速同步串行口。3~4线接口,收发独立、可同步进行 UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢 SPI:一种串行传输方式,三线制,网上可找到其通信协议和用法的 3根线实现数据双向传输 串行外围接口 Serial peripheral interface UART:通用异步收发器 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了

ARM串口实验报告.

《 APM串口实验》 实验报告 课程名称:嵌入式微处理器技术 班级:电信 0901 姓名: 地点:嵌入式系统基础实训室 指导教师:王瑾 ARM的串行口实验 一、实验目的 ◆ 1.掌握ARM 的串行口工作原理。 ◆ 2.学习编程实现ARM 的UART 通讯。 ◆ 3.掌握CPU 利用串口通讯的方法。 二、实验内容 学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART 相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。编程实现ARM 和计算机实现串行通讯: ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发平台是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发平台将接收到的数据再返送给PC,在 超级终端上显示。 三、预备知识 1、1.用ARM SDT 2.5或ADS1.2 集成开发环境,编写和调试程序的基本过程。 2、2.ARM 应用程序的框架结构。

3、3.了解串行总线 四、实验设备及工具 硬件:ARM嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC机Pentium100 以上、串口线。 软件:PC 机操作系统win98、Win2000 或WinXP 、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。 五、实验原理及说明 1.异步串行I/O 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位地传送。数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。为了恢复发送的信息,双方必须协调工作。在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步,字符和字符间还可能有长度不定的空闲时间,因此效率较低。 图2-1 串行通信字符格式 图2-1 给出异步串行通信中一个字符的传送格式。开始前,线路处于空闲状态,送出连续“1”。传送开始时首先发一个“0” 作为起始位,然后出现在通信线上的是字符的二进 制编码数据。每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII 编码。后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。也可以约定不要奇偶校验,这样就取消奇偶校验位。最后是表示停止位的“1” 信号,这个停止位可以约定持续1 位、1.5位或2 位的时间宽度。至此一个字符传送完毕,线路又进入空闲,持续为“1”。经过一段随机的时间后,下一个字符开始传送才又发出起始位。 每一个数据位的宽度等于传送波特率的倒数。微机异步串行通信中,常用的波特率为50,

嵌入式串口通信设计

湖南文理学院 课程设计报告 课程名称:嵌入式系统课程设计 专业班级:通信工程11101班学号(2位)学生姓名:石春波 指导教师:王丽娟 完成时间:2014年6月5日 报告成绩: 湖南文理学院制

嵌入式Linux 系统的串口通信研究

摘要 嵌入式是以应用为中心,以计算机技术为基础,软件硬件可剪裁,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。随着嵌入式系统的发展和大规模应用,为了提升系统的整体性能,必须实现PC机和嵌入式计算机之间的通信。在实际开发应用中,串口通信是不可缺少的部分。 目前嵌入式系统与PC机之间一种非常重要而且普遍应用的通信方式。本文通过基于2410F 的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串口通信的硬件电路和软件实现方法。通过与计算机串口间的接,实现在ARM 平台上,传输速率115200bps,接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端,实现监测。与外部设备通信的基本功能。 关键字:嵌入式系统,串口通信,Linux系统

目录 前言------------------------------------------------------------------------------------------------ - 3- 一、串口通信概述 ----------------------------------------------------------------------- - 4 - 1.1 串口通信的原理 ----------------------------------------------------------------- - 4 - 1.2 串口通信的开发工具 -------------------------------------------------------- - 4 - 1.2.1 2410F硬件平台简介------------------------------------------------------- - 5 - 1.2.2 ARM简介------------------------------------------------------------------ - 5 - 1.2.3 Linux系统简介------------------------------------------------------- - 6 - 1.3 串口通信的基本任务 -------------------------------------------------------- - 7 - 二、系统分析--------------------------------------------------------------------------------- - 8- 2.1 RS-232C标准--------------------------------------------------------------- - 8 - 2.2 系统硬件结构原理------------------------------------------------------- - 15 - 三、串口驱动程序设计 ------------------------------------------------------------- - 16 - 3.1 串口操作需要的头文件 --------------------------------------------------- - 16 - 3.2 打开串口--------------------------------------------------------------------------- - 16 - 3.3 串口设置--------------------------------------------------------------------------- - 17 - 3.4 串口读写--------------------------------------------------------------------------- - 19 - 3.5 关闭串口--------------------------------------------------------------------------- - 21 - 四、总结 -------------------------------------------------------------------------------------- - 22 - 参考文献 -------------------------------------------------------------------------------------- - 23 - 附录 ------------------------------------------------------------------------------------------ - 24 -

相关文档
最新文档