第9章 LPC1114通用异步串行通信

第9章 LPC1114通用异步串行通信
第9章 LPC1114通用异步串行通信

9.1.3串行通信的数据帧

要保证串行通信正常进行,串行通信的双方必须采用统一的编码方式,即确定一个字符的表达形式以及位发送顺序和位串长度等,这就是串行通信中数据帧的概念。

数据帧包含4部分,分别为起始位、数据位、校验位和停止位,下面对其进行介绍。

1.起始位

通信线路上没有数据传送时一般处于逻辑1的状态。当发送设备有数据发送时,它首先要发送一个逻辑0信号,这个逻辑低电平就是起始位。当接收设备检测到这个低电平后,就开始准备接收数据位信号。起始位所起的作用就是设备同步,通信双方必须在传送数据位前协调同步。

2.数据位

数据位的个数依据通信双方的约定可以是5、6、7或8位。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位一般是从最低有效位开始发送,直至最高位发送结束。

3.奇偶校验位

奇偶校验位的主要作用是用于差错控制,检验所接收数据的正确性。通信双方必须选择相同的校验方式。

4.停止位

在奇偶校验位或数据位(当无奇偶校验时)之后发送的是停止位。它是一个字符数据的结束标志,可以是1位、1.5位或2位高电平。接收设备收到停止位之后,通信线路上便又恢复逻辑1状态,等待下一个起始位的到来。

在串行通信的时候,一个字节是8位,规定当没有通信信号发生时,通信线路保持高电平,当要发送数据之前,先发一位0表示起始位,然后发送8位数据位,数据位是先低后高的顺序,数据位发完后再发一位1表示停止位。这样本来要发送一个字节的8位数据,而实

际上我们一共发送了10位,多出来的两位其中一位起始位,一位停止位。而接收方原本一直保持高电平,一旦检测到了一位低电平,那就知道要开始准备接收数据了,接收到8位数据位后,然后检测到停止位,再准备下一个数据的接收。上述过程如图9-1所示。

图 9-1串行通信数据帧示意图

9.1.4串行通信的波特率

串行通信的双方必须采用同样的传送速率才能确保设备同步,这个速率就是波特率。波特率的设置主要是为了设定数据的发送或接收速度。通信线上传送的所有位信号都保持一定的持续时间,以便接收端能够正确接收,而每一位信号持续时间是由数据传送速度决定的。每秒钟传送二进制位的个数,称为波特率。如果数据以每秒9600个二进制位在通信线上传送,那么传送速度就是9600Baud,记为9600bps。

9.1.5同步通信和异步通信

串行通信有同步通信和异步通信两种基本通信方式,这两种通信方式对联络信号和数据有着不同的规定。

1.同步通信

同步通信的基本特征是发送和接收时钟保持严格同步。采用同步通信时,将许多字符组成一个信息组,这样字符可以一个接一个地传输,但是在每组信息(通常为帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,因为同步传输不允许有间隙,也不存在起始位和停止位,仅在数据块开始时用同步字符来指示。因此同步通信技术难度较大,但其通信速度较高,而且误码率较低。

在同步通信中,要求用时钟来实现发送端和接收端之间的同步,接收和发送时钟对于收发双方之间的数据传送同步是至关重要的。在发送方,一般都是在发送时钟的下降沿将数据串行移位输出;在接收方,一般都是在接收时钟的上升沿将数据串行移位输入。

2.异步通信

异步通信不需要同步字符,也不需要发送设备保持数据块的连续性。可以准备好一个发送一个,但要发送的每一字符都必须先按照通信双发约定好的格式进行格式化,在其前后分别加上起始位和停止位,用以指示每一字符的开始和结束。正是由于每一字符都包含有起始位和停止位,因此,异步通信的传输速率不如同步通信的效率高。但对接收与发送时钟的要求可以低一些。另外异步通信双方收发速率必须相同。

9.1.6串行通信的传输方式

串行通信的传输方式可以分为单工、半双工和全双工三种。

1.单工通信

单工通信是指数据只能单方向传输的工作方式,因此只占用一个信道(信道是指以传输媒质为基础的信号通道)。广播、遥控、遥测、无线寻呼等属于单工通信。

2.半双工通信

半双工通信是指通信双方都能交替地进行双向数据传输,但两个方向的数据传输不能同时进行。例如,使用同一载波频率的对讲机、收发报机都是半双工的通信方式。

3.全双工通信

全双工通信是指通信双发可同时进行数据收发的工作方式。一般情况下全双工通信的信道必须是双向信道。普通电话、手机都是最常用的全双工通信方式,计算机之间的高速数据通信也是这种方式。

9.2RS232C标准及通信接口设计

9.2.1三种串行接口标准

RS-232、RS-422与RS-485都是串行接口标准,最初是由美国电子工业协会(EIA)制

订并发布。RS-232在1962年发布,作为工业标准,以保证不同厂家产品之间的兼容。

RS-422由RS232发展而来,它是为了弥补RS-232的不足而提出的,为了改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,提高了传输速率。

为了扩展应用范围,EIA又于1983年在RS-422的基础上制订了RS-485标准,增加了多点、双向通信能力,即允许多个发生器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围。

RS-232、RS-422与RS-485标准只对接口的电气特性作出规定,而不涉及接插件、电缆或协议。RS-232、RS-422与RS-485的电气规定如表9-1所示。

表 9-1 串行总线电气规定

规定RS-232 RS-422 RS-485

工作方式单端差分差分

节点数1收1发1发10收1发32收

最大传输电缆长度/ft(英尺) 50 400 400

最大传输速率20Kb/s 10Mb/s 10Mb/s

最大驱动输出电压/V ±25 -0.25~6 -7~12

驱动器输出信号电平负载/V ±5~±15 ±2.0 ±1.5

驱动器输出信号电平(空载)/V ±25 ±6 ±6

驱动器负载阻抗/Ω3000~7000 100 54

摆率30V/us N/A N/A

接收器输入电压范围/V ±15 -10~10 -7~12

接收器输入门限±3V ±200mV ±200mV

接收器输入电阻3~7 4 ≥12

驱动器共模电压/V - -3~3 -1~3

接收器共模电压/V - -7~7 -7~12

9.2.2RS-232C物理接口及电平标准

1.电平转换

RS-232C规定的逻辑电平与一般微处理器的逻辑电平不同,RS-232采用负逻辑方式:

2标准逻辑“1”对应:-5V~-15V电平;

2标准逻辑“0”对应:+5V~+15V电平;

2未定义区:-3V~+3V。

现在的PC机上的串口都是采用RS-232协议,而8051单片机的逻辑“1”通常是以5V

表示;而ARM微处理器的逻辑“1”通常是以3.3V表示,逻辑“0”通常是以0V表示的。所以在应用LPC1100系列的串口与PC机进行通信时必须进行电平转换把TTL或CMOS电平转换成RS-232电平,或把PC机的RS-232电平转换成微处理器的TTL或CMOS电平。

2.接口

RS-232采用9针和25针(很少见)的D型接口。一般情况下PC机预留的是9针公头,定义如表9-2所示;而开发板设计的电路都是采用9针母头,定义如表9-3所示。在物理结构上分为9针的和9孔的,习惯上我们也称之为公头和母头,如图9-2所示。

RS-232对于一般的双工通信来说只需要3条信号线即可实现,这三根信号线分别为RXD、TXD和GND。

表 9-2 RS-232公头(DB9 9针)接口定义

引脚符号功能

1 DCD 数据载波检测

2 RxD 接收数据

3 TxD 发送数据

4 DTR 数据终端准备就绪

5 GND 信号地

6 DSR 数据设备准备就绪

7 RTS 请求发送

8 CTS 清除发送

9 R1 振铃指示

表 9-3 RS-232母头(DB9 9孔)接口定义

引脚符号功能

1 DCD 数据载波检测

2 TxD 发送数据

3 RxD 接收数据

4 DSR 数据设备准备就绪

5 GND 信号地

6 DTR 数据终端准备就绪

7 CTS 清除发送

8 RTS 请求发送

9 R1 振铃指示

图 9-2 RS232通信接口

9.2.3 串行总线连接

在实际的应用中比较广泛的是RS-232和RS-485两种通信方式,下面将介绍这两种通信方式的应用。

1. 微处理器间直接通信

在微处理器之间可以直接连接它们的TXD 和RXD 管脚进行通信。只是采用这种方式进行通信时需要注意几点:

2 传输距离不能超过1.5m ;

2 不同电平之间需要注意电平匹配问题。

如图 9-3所示,为两个LPC1100系列微处理器的之间通信连接示意图。此连接方式适用于电平相同的微处理器之间的通信。以就是说,LPC1100微处理器和其他电源电压为3.3V 的微处理器之间都可以采用此方式通信。

图 9-3 微处理器间直接通信示意图 2. RS-232通信

为了提高传输距离和电平兼容,可以采用RS-232标准进行点对点的通信连接,如图 9-4所示。此电路不仅可以应用在不同微处理器之间进行通信,也可以应用在微处理器与PC 机之间进行通信。

RXD TXD

GND

LPC1100

图 9-4 RS-232通信示意图

3. RS-485通信

为了进一步提高传输距离,并实现点对多的传输,在工业上一般都是采用RS-485总线进行通信。RS-485可以采用两线方式,也可以采用四线方式进行通信。大多数情况下都是采用两线方式进行如图 9-5所示。

图 9-5 RS-485通信示意图

9.3 L PC1114串行通信接口

9.3.1 UART 特性

LPC1100系列Cortex-M0微控制器具有一个标准的异步串行口(UART ),具有以下特性: l 16字节收发FIFO ;

l 符合16C550工业标准;

l 接收器FIFO 触发点可为1、4、8和14字节;

TXD

RXD T2in T2out R2out R2in

RXD TXD R2in R2out T2out T2in LPC1100 LPC1100 RS-232 RS-232 系统1 系统2

TXD

RXD

CON DI A RO B CON TXD RXD CON

DI A RO B CON LPC1100

RS-485 RS-485 LPC1100

l内置波特率发生器;

l用于精确控制波特率的小数分频器,并拥有赖以实现软件流控制的自动波特率检测能力和机制;

l支持软件或硬件流控制执行;

l包含标准Modem接口信号(CTS、DCD、DTS、DTR、RI、RTS);

l支持RS-485/EIA-485的9位模式和输出使能;

l调制解调器控制。

LPC1100微处理器内部UART其结构框图如图9-6所示。APB总线为CPU和UART部分提供通信连接,UART接收单元监视串行输入线RXD的有效输入,UART接收移位寄存器RSR通过RXD接收有效字符。当RSR接收到一个有效字符时,它将字符传送到UART接收缓冲寄存器RBR中,等待CPU访问。

UART发送单元接收CPU写入的数据,并将数据缓存到UART发送缓冲器THR中,UART发送移位寄存器TSR读取存储在THR中的数据,并通过串行输出引脚TXD将数据集中发送。

图 9-6 UART结构框图

UART发送模块所需的时钟由UART波特率发生器产生,而UART波特率发生器时钟输入为UART_PCLK,由系统时钟经UART时钟分频器分频得到。

UART时钟分频器寄存器(UARTCLKDIV)配置UART外设时钟UART_PCLK,其位功能描述如表9-4所示。将DIV设为0x0就可以彻底关闭该时钟。使能UART时钟之前必须将UART管脚配置好。

表 9-4 UART时钟分频器寄存器位功能描述

位 符号 值

描述 复位值

7:0 DIV

0 1~255 UART_PCLK 时钟分频值 置0禁能UART_PCLK,否则等于系统时钟除以分频

值 0x00

31:8 - - 保留 0x00

9.3.2 UART 引脚描述

在使能UART 时钟之前,UART 管脚必须在相应的IOCON 寄存器中配置。其中有部分管脚可以重映射,管脚描述参见表 9-5所列。

表 9-5 UART 引脚描述 管脚

CPU 引脚 类型 描 述 RXD

P1_6 I 串行输入管脚,串行接收数据 TXD

P1_7 O 串行输出管脚,串行发送数据 RTS

P1_5 O 请求发送,RS-485方向控制管脚 DTR

P2_0、P3_0 O 数据终端就绪

DSR[1]

P2_1、P3_1 I 数据设置就绪 CTS

P0_7 I 发送控制引脚,清除发送 DCD[1]

P2_2、P3_2 I 数据载波检测 RI[1] P2_3、P3_3 I 铃响指示

[1] 仅用于LQFO48封装

9.3.3 UART 电路连接

如图 9-7是LPC1100系列微处理器采用RS-232与PC 机进行通信的原理图。在与PC 机进行通信的应用中,只需要把COM1与PC 机串口进行连接即可。不过需要特别注意的是RS-232电平转换芯片的选择。对于使用5V 供电的处理器,一般采用标注为232芯片(例如MAX232),而使用3.3V 供电的处理器一般采用3232芯片(例如MAX3232,SP3232)。

图 9-7 RS-232通信电路

9.3.4USB转串口通信

随着技术的发展,工业上还有RS232串口通信的大量使用,但是商业技术的应用上,已经慢慢的使用USB转UART技术取代了RS232串口,绝大多数笔记本电脑已经取消了串口,要实现单片机和电脑之间的串行通信只需要在电路上添加一个USB转串口芯片,就可以成功实现USB通信协议和标准UART串行通信协议的转换,开发板上使用的是CH340T 这个芯片,如图9-8所示。

图 9-8 USB转串口电路

9.4LPC1114串行通信常见寄存器

9.4.1UART接收缓冲寄存器RBR

RBR是UART RXD FIFO的最高字节,它包含了最早接收到的字符,并且可通过总线接口进行读取。LSB(位0)表示最早接收到的数据位。如果接收到的字符少于8位,则未使用的MSB用0填充。如果要访问RBR,LCR寄存器中的除数锁存访问位(DLAB)必须为0。RBR为只读寄存器。

表 9-6 UART接收缓冲寄存器位描述

位字符描述

7:0 RBR UART接收器缓冲寄存器包含了UART RXD FIFO当中最早接收到的字节

31:8 - 保留

9.4.2UART发送保持寄存器THR

THR是UART TXD FIFO的最高字节。它是TXD FIFO中的最新字符,可通过总线接口进行写入。LSB代表第一个要发送出去的位。如果要访问THR,LCR寄存器中的除数锁存访问位(DLAB)必须为0。THR为只写寄存器。

表 9-7 UART发送保持寄存器位描述

位字符描述

7:0 THR

写UART发送保持寄存器会使数据保存到UART发送FIFO中。当字节

达到FIFO的底部并且发送器可用时,字节就会被发送31:8 - 保留

9.4.3UART中断使能寄存器IER

IER用于使能4个UART中断源。如果要执行接收中断服务函数,用户还需要在CPSR里使能IRQ,可以通过NVIC提供的库函数来实现。其位描述如表9-8所示。

表 9-8 UART中断使能寄存器位描述

位字符描述

接收中断使

能使能UART的接收数据可用中断。它还控制着字符接收超时中断0:禁止RDA中断;

1:使能RDA中断

1

发送中断使

能使能UART的THRE中断。该中断的状态可从LSR[5]中读出0:禁止THRE中断;

1:使能THRE中断

2

接收线状态

中断使能使能UART的Rx线状态中断。

该中断的状态可从LSR[4:1]中读出0:禁止Rx线状态中断;

1:使能Rx线状态中断

3 - 保留

6:4 - 保留。用户软件不应对其写入1。从保留位读出的值未定义7 - 保留

8 自动波特率

结束中断使

0:禁止自动波特率结束中断;

1:使能自动波特率结束中断

9 自动波特率

超时中断使

0:禁止自动波特率超时中断;

1:使能自动波特率超时中断

31:10 - 保留。用户软件不应对其写入1。从保留位读出的值未定义

9.4.4UART中断标志寄存器IIR

IIR提供状态码用于指示一个待处理中断的优先级和中断源。在访问IIR过程中,中断被冻结。如果在访问IIR过程中产生了中断,该中断将被记录,下次访问IIR时便可将其读出。UART中断标志寄存器描述如表9-9所示。

表 9-9 UART中断标志寄存器位描述

位字符描述

0 中断状态中断状态。注意IIR[0]为低电平有效。待处理的中断可通过IIR[3:1]来确定0:至少有一个中断正在等待处理;

1:没有等待处理的中断

3:1 中断标志中断标志。IER[3:1]指示对应UART RXD FIFO的中断。下面未列出的IER[3:1]的其它组合都为保留值(100、101、111)

011:1 –接收线状态(RLS)

010:2a –接收数据可用(RDA)

110:2b –字符超时指示器(CTI)

001:3 – THRE中断

000:4 – Modem中断

5:4 - 保留。用户软件不应对其写入1。从保留位读出的值未定义7:6 FIFO使能这些位等效于FCR[0]

8 自动波特率

中断结束标

自动波特率中断结束。若已成功完成自动波特率检测且中断使能,则ABEOInt为真

9 自动波特率

超时中断标

自动波特率超时中断。若自动波特率发生了超时且中断使能,则ABTOInt为真

31:10 - 保留。用户软件不应对其写入1。从保留位读出的值未定义9.4.5UART FIFO控制寄存器FCR

FCR控制UART RXD和TXD FIFO的操作,寄存器位描述如表9-10所示。

表 9-10 UART FIFO控制寄存器位描述

位字符描述

0 FIFO使能0:UART FIFO被禁止。禁止在应用中使用

1:高电平有效,使能对UART RXD FIFO和TXD FIFO以及FCR[7:1]的访问。

该位必须置位以实现正确的UART操作。该位的任何变化都将使UART FIFO清空

1 RXD FIFO复位0:对两个UART FIFO均无影响

1:写1到FCR[1]将会清零UART RXD FIFO中的所有字节,并复位指针逻辑,该位可以自动清零

2 TXD FIFO复位0:对两个UART FIFO均无影响

1:写1到FCR[2]将会清零UART TXD FIFO中的所有字节,并复位指针逻辑。该位会自动清零

4 - 保留

5:4 - 保留。用户软件不应对其写入1。从保留位读出的值未定义

7:6 Rx触发选择这两个位决定了接收UART FIFO在激活中断前必须写入的字符数量

00:触发点0(默认1字节或0x01);

01:触发点1(默认4字节或0x04)

10:触发点2(默认8字节或0x08);

11:触发点3(默认14字节或0x0E)

31:8 - 保留

9.4.6UART线控制寄存器LCR

LCR决定了要发送和接收的数据字符格式,其位描述如表9-11所示。

表 9-11 UART线控制寄存器位描述

位字符描述

1:0 字长度选择00:5位字符长度01:6位字符长度10:7位字符长度11:8位字符长度

2 停止位选择

0:1个停止位

1:2个停止位(若LCR[1:0]=00时为1.5个停止位)3 奇偶校验使能

0:禁止校验的产生和检测

1:使能校验的产生和检测

5:4 奇偶校验控制00:奇校验。1s内的发送字符数和附加校验位为奇数01:偶校验。1s内的发送字符数和附加校验位为偶数10:强制“1”奇偶校验

11:强制“0”奇偶校验

6 间隔控制0:禁止间隔传输

1:使能间隔传输。当LCR[6]是高电平有效时,强制使输出管脚UART TXD为逻辑0

7 除数锁存访问位

0:禁止对除数锁存器的访问

1:使能对除数锁存器的访问

31:8 - 保留

9.4.7UART线状态寄存器LSR

LSR是一个只读寄存器,提供UART TXD和RXD模块的状态信息,具体的寄存器位描述见表9-12所示。

表 9-12 UART线状态寄存器位描述

位字符描述

接收数据就绪

(RDR)当RBR包含未读字符时,LSR[0]就会被置位;当UART 接收FIFO为空时,LSR[0]就会被清零

0:RBR为空

1:RBR包含有效数据

1

溢出错误

(OE)一旦发生错误,就设置溢出错误条件。读LSR会清零LSR[1]。

当UART RSR已有新的字符就绪,而UART RBR FIFO已满时,LSR[1]会置位。此时,UART接收FIFO将不会被覆盖,UART RSR内的字符将会丢失

0:溢出错误状态无效

1:溢出错误状态有效

2

奇偶错误

(PE)当接收字符的校验位处于错误状态时,校验错误就会产生。读LSR会清零LSR[2]。校验错误检测时间取决于FCR[0]

0:校验错误状态无效

1:校验错误状态有效

3

帧错误

(FE)当接收字符的停止位为逻辑0时,就会发生帧错误。读LSR会清零LSR[3]。帧错误检测时间取决于FCR。当检测到有帧错误时,Rx会尝试与数据重新同步,并假设错误的停止位实际是一个超前的起始位。但即使没有出现帧错误,它也无法假设下一个接收到的字符是正确的

0:帧错误状态无效

1:帧错误状态有效

4

间隔中断

(BI)在发送整个字符(起始位、数据、校验位以及停止位)过程中,RXD如果保持在空闲状态(全“0”),则产生间隔中断。一旦检测到间隔条件,接收器立即进入空闲状态,直到RXD进入标记状态(全“1”)。读LSR会清零该状态位。间隔检测的时间取决于FCR[0]

0:间隔中断状态无效

1:间隔中断状态有效

5

发送FIFO空

(THRE)当检测到UART THR已空时,THRE就会立即被设置。写THR会清零THRE 0:THR包含有效数据

1:THR为空

6

发送器空

(TEMT)当THR和TSR同时为空时,TEMT就会被设置;而当TSR或THR任意一个包含有效数据时,TEMT就会被清零

0:THR和/或TSR包含有效数据

1:THR和TSR为空

7

Rx FIFO错误

(RXFE)当一个带有Rx错误(如:帧错误、校验错误或间隔中断)的字符载入到RBR时,LSR[7]就会被置位。当LSR寄存器被读取并且UART FIFO中不再有错误时,该位就会清零

0:RBR中没有UART Rx错误或FCR[0]=0

1:UART RBR包含至少一个UART Rx错误

31:8 - 保留

9.4.8UART除数锁存寄存器DLL/DLM

UART除数锁存寄存器是UART波特率发生器的一部分并保存使用的值,它与小数分频器一同使用,来分频UART_PCLK时钟以产生波特率时钟,该波特率时钟必须是所需波特率的16倍。除数锁存DLL寄存器描述见表9-13,DLM寄存器描述见表9-14所示。在不使用小数分频器的情况下(这也是默认情况),目标波特率为:

Baud = Fpclk / (16*(DLM:DLL))

这两个寄存器一起构成16位除数,DLL包含的是除数的低8位,DLM包含的是除数的高8位。在访问UART除数锁存寄存器时,除数锁存访问位(DLAB)必须为1。

表 9-13 UART除数DLL寄存器位描述

位字符描述

7:0 DLLSB 与DLM寄存器一起决定UART的波特率

31:8 - 保留

表 9-14 UART除数DLM寄存器位描述

位字符描述

7:0 DLMSB 与DLL寄存器一起决定UART的波特率

31:8 - 保留

9.5UART中断

9.5.1NVIC与UART中断

LPC1100系列ARM处理器UART接口具有中断功能,由嵌套向量中断控制器(NVIC)来管理,UART位于NVIC中断通道21,UART接口中断与嵌套向量中断控制器(NVIC)的关系如图9-9所示。

中断使能寄存器ISER用来控制NVIC通道的中断使能。当ISER[21]=1时,通道21中断使能,即UART中断使能。中断优先级寄存器IPR用来设定NIVC通道中断的优先级。IPR5[15:8]用来设定通道21的优先级,即UART中断的优先级。

关于ISER和IPR的配置,我们可以直接利用CMSIS提供的NVIC函数来实现。关于NVIC函数的使用方法详见6.7节。

图 9-9 UART与NVIC的关系

当UART接口的中断优先级设定完毕且中断使能后,当中断触发条件满足时,则会触发中断。处理器响应中断后将自动定位到中断向量表,并根据中断号从向量表中找出UART 中断处理函数的入口地址,然后PC程序指针跳转到该地址处执行中断服务函数。因此,用户需要在中断发生前将UART的中断服务函数地址(UART_IRQHandler)保存到向量表中。此部分工作已经在startup_LPC11xx.s代码中完成。

9.5.2UART中断分类

UART中断主要分为5类:接收中断、发送中断、接收线状态中断、Modem中断和自动波特率中断,如图9-10所示。其中,接收线状态中断指接收过程中发生了错误,即接收错误中断。自动波特率中断包括自动波特率结束中断和超时中断。

图 9-10 UART中断示意图

1.接收中断

对于UART接口来说,有两种情况可以触发UART接收中断:接收字节数达到接收FIFO 的触发点(RDA)和接收数据超时(CTI)。

1)接收字节数达到接收FIFO中的触发点(RDA)引起的中断

LPC1100系列Cortex-M0微控制器UART接口具有16字节的接收FIFO,接收触发点可以设置为1、4、8、14 字节,当接收到的字节数达到接收触发点时,便会触发中断。

如图9-11所示,通过UART FIFO控制寄存器FCR,将接收触发点设置为“8字节触发”。那么当UART接收8个字节时,便会触发RDA中断(注:在接收中断使能的前提下)。

图 9-11 RDA 中断示意图

如果需要LPC1114微处理器响应RDA中断,需要采取以下步骤。

a)RDA中断初始化

RDA中断初始化函数需要设置两个寄存器:UART中断使能寄存器IER和UART FIFO 控制寄存器FCR。其中,UART FIFO控制寄存器FCR用来设置触发点。

例如:将UART 接口设置为8字节触发,设置代码如下。

LPC_UART->IER = 0x01;; //UART接收中断使能

LPC_UART->FCR; //UART接收缓冲区的触发点为8字节

b)RDA 中断服务程序

如果UART接口触发RDA中断,那么中断服务程序只需要连续读取UART接收器缓存寄存器RBR即可。

例如已将UART设置为8字节触发,那么RDA中断服务程序代码如下。

switch(LPC_UART->IIR & 0x0F)

{

case 0x04://发生RDA中断

for(i = 0; i < 8; i++) //连续读取RBR寄存器8次

{

RcvBuf[ i ] = LPC_UART->RBR;//将接收到的数据保存到接收缓冲区RcvBuf中}

}

2)接收超时(CTI)引起的中断

当接收FIFO中的有效数据个数少于触发个数时(注:接收FIFO中至少有一个字节),如果长时间没有数据到达,将触发CTI中断。

如图9-12所示,将接收FIFO的触发点设置为8字节,而外部设备只发了4个字节的数据,则经过一段时间后(3.5到4.5个字符时间),UART接口便会触发“接收超时中断”。接收超时中断的初始化设置与RDA中断的设置完全一致,而中断服务程序却有一些区别:对于RDA中断,可以确定当前接收FIFO中的字符数,而CTI中断却不清楚当前的字符个数,只能够通过判断当前接收FIFO是否为空来实现,程序如下。

switch(IIR & 0x0f)

{

case 0x0c:/* 发生超时中断——CTI */

while((LSR & 0x01) == 1) /*如果接收FIFO中含有数据,就读取UnRBR寄存器*/

{

RcvBuf [ i++ ] = RBR; /* 将数据保存到接收缓冲区RcvBuf 中*/

}

}

图 9-12 CTI 中断示意图

2.发送中断

LPC1100系列Cortex-M0微控制器UART接口具有16字节的发送FIFO,当发送FIFO由非空变为空时,便会触发“发送中断”。如图9-13所示,UART发送数据时,首先都是将数据送入“发送FIFO”。

现在连续将8个字节的数据送入“发送FIFO”,则当FIFO变为空时,会触发“THRE”中断。发生“THRE”中断后,读取UART中断标志寄存器(IIR)可以清除THRE中断标志位。此外,对UART发送器保持寄存器THR执行写操作也可以清除THRE中断。

图 9-13 发送中断示意图

3.接收线状态中断

在UART接收数据时,如果出现溢出错误(OE)、奇偶错误(PE)、帧错误(FE)和间隔中断(BI)中的任意一个错误时,都会触发接收线状态中断。具体的错误标志可以通过读取UART状态寄存器LSR[4:1]得到。当读取LSR寄存器时,会清除该中断标志。

异步串行通信的工作方式

异步串行通信的工作方式,然后给出了VB MSComm控件下异步串行通信在电子衡器中的应用实例,包括硬件接口及软件设计。关键词:RS-232 异步串行通信Visual Basic 电子衡器控件计算机一般提供了2个25针或9针的RS-232标准串行口,简称为COM1和COM2。在某些应用中,我们还可以通过插通信卡来获得额外的RS-232标准串行口。利用这些串行口可以与其它数字设备进行一般的数据通信,计算机的串行接口主要用于远程通信和低速输入输出设备。由于串行数据通信传输线条数最少,而且有许多较便宜的专用芯片可实现它,发送和接受器也简单,因而对数据传输速度要求不高的计算机和数字设备间的近程通信,多采用串行通信实现。而目前各个厂家生产的电子衡器的称重仪表多配有与上位机通信的RS—232C串行接口,因而计算机与称重仪表之间的数据通信用串口很容易实现,只需要制作一条2芯或3芯的数据线编写相应的接口程序即可实现,不需要增加其他硬件设备。采用这种方式组成的微机电子衡器有许多优点:称重仪表经过多年的发展,在数据采集、抗干扰、可靠性等方面技术成熟,质量稳定;而计算机在存储容量、数据处理、查询、统计报表等数据管理方面有明显优势。正是两者的完美结合,才使计算机与称重仪表组成的在线式称重管理系统得到了广泛的应用。1串行通信的工作方式串行通信,可分为同步和异步两种方式。异步方式是指在约定的波特率下,传送和接受的数据不需要严格的保持同步,允许有相对的延迟,虽然速度较慢,但经济实用,所以异步串行通信现大量应用于计算机接口技术中。计算机与称重仪表就采用异步通信的方式传送数据。1.1异步串行通信的数据格式在这种通信方式中,一般以一个字符为一帧。一帧最少由三部分组成:起始位、数据位、停止位,开始是一位起始位以发送一个逻辑“0”表示,接着是表示这个数据的数据位,数据位可以是5位、6位、7位或8位,再加一位奇偶校验位,然后是一个、一个半或二个停止位,停止位以逻辑“1”表示。1.2波特率串行通信每秒传送的位数,传送时先低位后高位。常用的波特率有600、1200、2400、4800、9600等。1.3端口在计算机中,一般都配有两个标准串行口,用COM1和COM2表示。(通常采用2个9针D型阳性插头。)1.4信号线RS—232C标准规定有25根连线,使用21个信号线。在我们讨论的微机电子衡器中仅用到3根信号线,它们是:发送数据线TXD(输出信号),接受数据线RXD(输入信号线),信号地GND。其余信号线定义可参考相关书籍。2串行通信在电子衡器中的应用实例串行通信接口设计,包括硬件、软件设计两部分。在WINDOWS操作系统下,可选用VC++、VB等可视化开发工具。下面将以上海耀华称重系统公司的XK3190—A1+为例,以VB6.0编程语言,说明串行通信的软、硬件设计过程。 2.1称重仪表仪表选用上海耀华XK3190-A1+仪表,其串口通信格式如下:2.1.1连续方式发送:所传送的数据为仪表显示的当前称量(毛重或净重),每帧数据由12组数据组成。 第X组 内容及注释 1 02(XON)开始 2 +或- 符号位 3 称量数据高位 : 称量数据: : 称量数据: 8 称量数据低位 9

8251串行通讯实验

安徽师范大学数计学院实验报告 专业名称11计科 课程微机原理 实验名称串行通信实验姓名 学号110704012

8251 可编程串行口与PC 机通讯实验 一、实验目的 (1) 掌握8251 芯片的结构和编程,掌握微机通讯的编制。 (2) 学习有关串行通讯的知识。 (3) 学习PC 机串口的操作方法。 二、实验说明 1、8251 信号线 8251 是CPU 与外设或Mode 之间的接口芯片,所以它的信号线分为两组:一组是用于与CPU 接口 的信号线,另一组用于与外设或Mode 接口。 (1)与CPU 相连的信号线: 除了双向三态数据总线(D7~D0)、读(RD)、写(WR)、片选(CS)之外,还有: RESET:复位。通常与系统复位相连。 CLK:时钟。由外部时钟发生器提供。 C/D:控制/数据引脚。 TxRDY:发送器准备好,高电平有效。

TxE:发送器空,高电平有效。 RxRDY:接收器准备好,高电平有效。 SYNDET/BRKDET:同步/中止检测,双功能引脚。 (2)与外设或Mode 相连的信号线: DTR:数据终端准备好,输出,低电平有效。 DSR:数据装置准备好,输入,低电平有效。 RTS:请求发送,输出,低电平有效。 CTS:准许传送,输入,低电平有效。 TxD:发送数据线。 RxD:接收数据线。 TxC:发送时钟,控制发送数据的速率。 RxC:接收时钟,控制接收数据的速率。 2、8251 的初始化编程和状态字 8251 是一个可编程的多功能串行通信接口芯片,在使用前必须对它进行初始化编程。初始化编 程包括CPU 写方式控制字和操作命令字到8251 同一控制口,在初始化编程时必须按一定的顺序。如 下面的流程图:

串口通信实验讲解

课程名称:Zigbee技术及应用实验项目:串口通信实验指导教师: 专业班级:姓名:学号:成绩: 一、实验目的: (1)认识串口通信的概念; (2)学习单片机串口通信的开发过程; (3)编写程序,使单片机与PC通过串口进行通信。 二、实验过程: (1)根据实验目的分析实验原理; (2)根据实验原理编写C程序; (3)编译下载C程序,并在实验箱上观察实验结果。 三、实验原理: 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,此时只需要一条数据线,外加一条公共信号地线和若干条控制信号线。因为一次只能传送一位,所以对于一个字节的数据,至少要分8位才能传送完毕,如图3-1所示。 图2-1串行通信过程 串行通信制式: (1)单工制式 这种制式是指甲乙双方通信时只能单向传送数据,发送方和接收方固定。 (2)半双工制式 这种制式是指通信双方都具有发送器和接收器,即可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。

(3)全双工制式 这种制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时能发送。 三种制式分别如图3-2所示 图3-2串行通信制式 3.1硬件设计原理 CC2530有两个串行通信接口USART0和USART1,两个USART具有同样的功能,可已分别运行于UART模式和同步SPI模式。 CC2530的两个串行通信接口引脚图分布如表3-1所示 表3-1 CC2530串行通信口引脚图分布 本实验CC2530模块使用的是USART1的位置2,P1_6和P1_7。

异步串行接口电路及通信系统设计设计报告

异步串行接口电路及通信系统设计 设计报告 2009级可编程逻辑课程名称: 实验题目:学生姓名: YC 开课学院: Bio开课时间: 2011课程设计可编程逻辑设计异步串行接口电路及通信系统设计、SXL、ZY、YLJ、WJ 学院至2012学年第二学期重庆大学本科学生课程设计指导教师评定成绩表学院年级学生姓名课程设计题目be学院2009级指导教师专业Zxm. Wxp. BME YC、SXL、ZY、YLJ、WJ 异步串行接口电路及通信系统设计指导教师评语课程设计成绩指导教师签名:年月日重庆大学本科学生课程设计任务书课程设计题目学院BE学院异步串行接口电路及通信系统设计专业BME 年级、班09 BME 01、02班

设计要求:设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。1)每帧数据供10 位,其中1位启动位,8位数据位,1位停止位。2)波特率为:9600。3)收发误码率摘要摘要通用串口是远程通信接口,在数字系统使用很普遍,是一个很重要的部件。本论文使用VHDL语言描述硬件功能,并适当借助Verilog HDL 语言,利用在FPGA 芯片上的综合描述,采用模块化设计方法设计UART的各个模块。其中包括波特率发生器,程序控制器,UART数据接收器和UART数据发送器,采用的外部时钟为50MHZ,波特率为9600。在QuartusII 环境下进行设计、编译和仿真。最后的程序编译仿真结果及硬件测试结果表明系统设计完全正确。关键字:VHDL; Verilog HDL;UART; 帧格式; FPGA;异步通信I 摘要Abstract In this paper, the use of

单片机串行通信实验

单片机实验报告 实验名称:串行通信实验 姓名:高知明 学号:110404320 班级:通信3 实验时间:2014-6-11 南京理工大学紫金学院电光系

一、实验目的(四号+黑体) 1、理解单片机串行口的工作原理; 2、学习使用单片机的TXD\RXD口; 3、了解MAX232芯片的作用; 二、实验原理 MCS-51单片机内部集成有一个UART,用于全双工方式的串行通信,可以发送、接收数据。他有两个相互独立的接收、发送缓冲器,这两个缓冲器同名(SBUF),共用一个地址号(99H)。发送缓冲器只能写入,不能读出,接受缓冲器只能读出,不能写入。要发送的字节数据直接写入发送缓冲器。SBUF=a;当UART接收到数据后,CPU从接收缓冲器中读取数据,a=SBUF;串行口内部有两个移位寄存器,一个用于串行发送,一个用于串行接收。定时器T1作为波特率发生器,波特率发生器的溢出信号昨接受或发送移位寄存器的位移时钟。TI与RI分别为发送完数据的中断标志,用来想CPU发中断请求。 三、实验内容 1、发送信号 1)C51程序: #include void main(void) { SCON=0X40; //设置串口为接受,REN=0 PCON=0; //波特率不倍频 REN=1; TMOD=0X20; //启动定时器1的方式2 TH1=0XFD; TL1=0XFD; //初值:0XFD TR1=1; //启动定时器1 while(1) {SBUF='U'; while(!TI); TI=0; //发送中断清0 }} 2)硬件图:

2、接受装置: 1)C51程序: #include char s[32]; void main(void) { char a,b=0; SCON=0X40; //设置串口为接受,REN=0 PCON=0; //波特率不倍频 REN=1; TMOD=0X20; //启动定时器1的方式2 TH1=0XFD; TL1=0XFD; //初值:0XFD TR1=1; //启动定时器1 a=32; for(;b

两个单片机之间的简单异步串行通信

两个单片机之间的简单异步串行通信 2009-9-1 21:13 提问者:feitian_001|悬赏分:10|浏览次数:898次 我在proteus中用两个AT89C52单片机做了一个小设计,想以来来验证两个单片之间异步串行通信功能的实现。下位机的TXD和上位机的RXD相连。下位机发送0x07给上位机,然后上位机接受0x07这个数,并将收到的这个数赋给P1口(P1口连着八个发光二极管(共阴极)),按理说如果是正常通信的话,上位机收到下位机的数据应该是0x07,也就是说P1口连接着的八个发光二极管会点亮后三个,但是我编写程序加载到proteus中的单片机中运行程序,发现数码管亮的很乱,不是预期的那种亮法,实在是找不到问题出在了哪里。下面我把程序贴一下,希望大家对异步串行通信比较懂的给我指点一下。 下位机(发送数据的单片机): #include #define uchar unsigned char #define uint unsigned int voiduart_init() { TMOD=0x20; //T1 方式2 TH1=0xFD; //baud rate 9600bit/s TL1=0xFD; TR1=1; REN=1; //允许接收 SM0=0; //串口方式1 SM1=1; TI=0; } void delay(uint z) { uintx,y; for(x=z;x>0;x--) for(y=125;y>0;y--); } void main() { uart_init(); while(1) { SBUF=0x07; while(!TI); TI=0; delay(5000); } } 上位机(接收发过来的数据的单片机): #include #define uchar unsigned char

DSP与计算机的异步串行通信

1 绪论 1.1 设计背景 在DSP芯片出现之前,数字信号处理只能依靠通用微处理器来完成,由于微处理器芯片速度较低,难以满足高速实时处理的要求。1965年库利和图基发表了著名的快速傅立叶变换FFT,极大地降低了傅立叶变换的计算量,从而为数字信号的实时处理奠定了算法的基础。与此同时,伴随集成电路技术的发展,各大集成电路厂商为生产通用DSP芯片做了大量的工作。1978年AMI公司生产第一片DSP芯片S2811。1979年美国Intel公司发布了商用可编程DSP器件Intel2920,由于内部没有单周期的硬件乘法器,使芯片的运算速度,数据处理能力和运算精度受到了很大的限制。运算速度大哟为单指令周期200~250ns,应用范围仅局限于军事或航空领域。 随着时间的推移,许多国际上著名集成电路厂家都相继推出自己的DSP产品。这个时期的DSP器件在硬件结构上更适合数字信号处理的要求,能进行硬件乘法,硬件FFT变换和单指令滤波处理,其单指令周期为80~100ns,20实际80年代后期,以TI公司的TMS320C30为代表的第三代DSP芯片问世,伴随着运算速度的进一步提高,其应用范围逐步扩大到通信,计算机领域。 在2000年以后,DSP制造商不仅信号处理能力更加完善,而且是系统开发更加方便,程序编辑更加灵活,功耗进一步降低,成本不断下降。尤其是各种通用外设集成到片上,大大地提高了数字信号处理能力。这一时期的DSP运算速度可达到单指令周期10ms左右,可在Windows环境下直接应用C语言编程,使用方便灵活,使DSP芯片不仅在通信,计算机领域得到了广泛的应用,而且逐步渗透到了人们的日常消费领域。 目前DSP芯片的发展非常迅速。硬件结构方面主要是向多处理器的并行处理结构,便于外部数据交换的串行总线传输,大容量片上RAM和ROM,程序加密,增加IO驱动能力,外围电路内装化,低功耗等方面发展。软件方面主要是综合平台的完善,使DSP的应用开发更加灵活方便。

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

实验六串行口通信实验 一、实验内容 实验板上有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]

串行通信技术-模拟信号转换接口

微机原理与应用实验报告6 实验9串行通信技术 实验10A模拟信号转换接口 实验报告

实验九串行通信技术 一、实验目的 1. 了解异步串行通信原理; 2. 掌握MSP430异步串行通信模块及其编程方法; 二、实验任务 1. 了解MSP430G2553实验板USB转串口的通信功能,掌握串口助手的使用 (1)利用PC机的串口助手程序控制串口,实现串口的自发自收功能 为实现PC串口的自发自收功能,须现将实验板上的扩展板去下,并将单片机板上的BRXD和BTXD用杜邦线进行短接,连接图如下所示: 由此可以实现PC串口的自收自发功能。 (2)思考题:异步串行通信接口的收/发双方是怎么建立起通信的 首先在异步通信中,要求接收方和发送方具有相同的通信参数,即起始位、停止位、波特率等等。在满足上面条件的情况下,发送方对于每一帧数据按照起始位数据位停止位的顺序进行发送,而接收方则一直处于接受状态,当检测到起始位低电平时,看是采集接下来发送方发送过来的数据,这样一帧数据(即一个字符)传送完毕,然后进行下一帧数据的接受。这样两者之间就建立起了通信。 2. 查询方式控制单片机通过板载USB转串口与PC机实现串行通信 (1)硬件连接图

(2)C语言程序 采用SMCLK=1.0MHz时,程序如下:

其中SMCLK=1MHz,波特率采用的是9600,采用低频波特方式,则N=1000000/9600=104.1666…,故UCA0BR1=0,UCA0BR0=104,UCBRS=1; 当采用外部晶振时,时钟采用默认设置即可,程序如下:

也是采用了低频波特率方式,所以关于波特率设置的相关计算和上面是一样的。 (3)思考:如果在两个单片机之间进行串行通信,应该如何设计连线和编程? 由于在上面的连线中将单片机上的P1.2和BRXD相连,P1.1和BTXD相连,所以若要在两个单片机之间进行通信,首先应该将两个单片机的P1.2和P1.1交叉相连,并根据上面的程序进行相同的关于端口和波特率相关的设置即可实现两个单片机之间的通信。 3. (提高)利用PC机RS232通信接口与单片机之间完成串行通信 (1)硬件连接图 在实验时,采用了将PC机的串口com1直接连接至MSP430F149的孔型D9连接器上,G2553单片机的输出引脚P1.1和P1.2分别与F149单片机上的URXD1和UTXD1相连接,连接图如下所示:

北邮设计一:异步串行通信控制器

设计一:异步串行通信控制器 一、目的: ●掌握状态机的原理与设计方法; ●了解异步通信的原理和特点; ●掌握异步通信接口的设计方法。 二、异步通信原理简介: 我们主要以接收端为例来说明异步通信的工作原理,发送端可依此类推。异步通信的特点是数据在线路上的传输是不连续的,线路上数据是以一个字符为单位来传输的。异步传输时,各个字符可以是连续传输,也可以是间隔传输,这完全由发送方根据需要来决定。另外,在异步传输时,同步时钟信号并不传送到接收端,即收发双方各用自己的时钟来控制发送和接收。 由于字符的发送是随机进行的,因此,对于接收端来说就有一个判断何时有字符来,何时是新的一个字符开始的问题。因此,在异步通信时,对字符必须规定统一的格式。 异步信息传输格式 一个字符通常由四部分组成:起始位、数据位、奇偶校验位和停止位。一个字符由起始位开始,停止位结束。奇偶校验位只占一位,为了简化分析我们暂且规定不用奇偶校验位。 起始位为0信号,占用一位,来通知接收端一个新的字符开始来到。线路上不传输字符时,应保持为1。接收端不断检测线路的状态,若连续为1以后又开始测到一个0,就知道是发来一个新字符,马上应准备接收。字符的起始位还被用来同步接收端的时钟,以保证以后的接收能正确进行。接收时钟信号RXC的频率是数据率的N倍,一般N=8,16,32,64等。由于异步通信双方各用自己的时钟源,若是时钟频率等于波特率,则频率稍有偏差便会产生接收误差,因此,采用较高频率的时钟,就能保证正确地捕获到信号。 起始位后面紧接着的是数据位,它可以是5位、6位、7位和8位。我们这里规定采用8位的数据位。注意在发送时,总是低位先发送(最低位LSB,最

串口通信实验

实验报告(附页) 一、实验内容 1、串口通信设置: 波特率为115200bps, 数据位为8位,停止位为1位; 2、按键传输数据到串口助手显示; (1)按1,串口显示:“This is Key 1”; D5亮 (2)按2,串口显示:“This is Key 2”; D6亮 (3)按3,串口显示:“This is Key 3”; D7亮 (4)按4,串口显示:“This is Key 4”; D8亮 (5)按“*”Key ,串口显示“All LEDs is Closed” ; 灯全灭; (6)按其它Key,串口显示:”Wrong Key” 3、通过串口小肋手,向实验设备发送信息: 发送字符:”D5”、”D6”、”D7”、”D8” ,则对应的D5、D6、D7、D8亮;若发送“5”、“6”、“7”、“8”则对应的D5、D6、D7、D8灭,如发送其它字符,则在串口助手中显示:“Error Code”; 二、实验方法 (1)利用参考代码构建工程。 (2)编写实验要求的实现实验要求的功能。 (3)连接实验箱,写入程序,测试代码。 三、实验步骤 1)正确连接JLINK 仿真器到PC 机和stm32 板,用串口线一端连接STM32 开发板,另一端连接PC 机串口。 2)用IAR 开发环境打开实验例程:在文件夹05-实验例程\第2 章\2.3-uart 下双击打开工程uart.eww,Project->Rebuild All 重新编译工程。 3)将连接好的硬件平台通电(STM32 电源开关必须拨到“ ON”),接下来选择Project->Download and debug 将程序下载到STM32 开发板中。4)下载完后可以点击“Debug”->“Go”程序全速运行;也可以将STM32 开发板重新上电或者按下复位按钮让刚才下载的程序重新运行。 5)通过串口小助手检验实验结果 四、实验结果 Main函数 #include"stm32f10x.h"

异步串行通信接口实验

计算机系统的通信实验 一.目的:了解计算机间的数据通信的基本技术; 了解RS─232C的结构及使用方法。RS----232C 9芯连接器插针定义如下: 二.使用设备:带有RS─232C通信接口的微型计算器及一根多芯电缆。 三.8250异步串行接口: IBM PC系统可选的串行异步通信接口板上用的UART是一片INS8250,以它为核心,附加一些辅助电路,如I / O地址译码电路电平变换电路等,组成了RS232C接口,所以,对RS232C编程实际上是对8250的编程。8250的逻辑框图如下:

(一)8250的编程模型 8250异步串行接口是用于IBM PC串行通讯的接口芯片,8250内含比特率分频器,无须外接,所以用它构成接口非常简单。有两个串口,每个串口上有10个寄存器,IBM PC系统只为这10个寄存器分配了连续的7个端口地址,其端口地址分配如下: 分配的端口地址输入还是输出相应寄存器 3F8H/2F8H*输出发送数据寄存器 3F8H/2F8H*输入接收数据寄存器 3F8H/2F8H+输出波特率分频器L(数据传输速度)3F9H/2F9H+输出波特率分频器H 3F9H/2F9H*输出中断允许寄存器 3FAH/2FAH 输入中断标识寄存器 3FBH/2FBH 输出线控制寄存器 3FCH/2FCH 输出Modem控制寄存器 3FDH/2FDH 输入线狀态寄存器 3FEH/2FEH 输入Modem狀态寄存器 注:标有*寄存器地址是线控制存器7位为0时的寄存器地址,标有+寄存器地址是线控制存器7位为1时的寄存器地址。 从功能上分,这10个寄存器可分为两组:一组用于工作方式,通信参数的控置和设置。如数据格式有关参数的设置,是否允许中断方式的设置以及是否使用RTS,DTR等联络控制信号等,属于这一组的有5个寄存器:波特率分频器L(低位)和H(高位) 线控制寄存器,Moden控制寄存器,中断允许寄存器。这5个寄存器都是在8250初始化时用OUT指令向其中置入初值的。另一组寄存器用于实现通信传输,有5个寄存器, 它包括:输入和输出的缓冲寄存器——接收数据寄存器和发送保持寄存器, 记忆当前状态的寄存器——线状态寄存器, Moden状态寄存器和中断标识寄存器。 (二)8250的初始化: 1.波特率的设置:(波特率分频器L和H)是用OUT指令向地址为3F8H和3F9H的两个波特率分频器置入合适的值实现的。 在初始化时,将线控寄存器最高为置1,然后写3F8H,3F9H便可对串行传送速率进行初始化。波特率分频器确定串行传送的速率(每秒传送的位数)如下: 波特率分频器H 分频器L 50 09H 00H 75 06H 00H 110 04H 17H 134.5 03H 59H 150 03H 00H 300 01H 80H 600 00H C0H 1200 00H 60H 1800 00H 40H 2000 00H 3AH 2400 00H 30H 3600 00H 20H

串行通信的同步传输与异步传输

------分隔线---------------------------- 这里所讲的同步传输和异步传输不同于VC 串口编程时的同步和异步,这里只讲串口硬件层传输的两种模式,有关VC 串口编程的同步模式和异步模式我将另外写一篇文章。 这里所讲的同步和异步是从硬件层级来讲的。首先要知道什么串行传输,串行传输是指数据的二进制代码在一条物理信道上以位为单位按时间顺序逐位传输的方式。串行传输时,发送端逐位发送,接收端逐位接受,同时,还要对所接受的字符进行确认,所以收发双方要采取同步措施(即判断什么时候有数据,数据是什么,什么时候结束传输)。 同步措施有两种,一种在传输的每个(帧)数据前(数据可能是5~8位)加一个起始位,后面加一位校验位及一位或两位的停止位组成一帧数据,这各方式称为异步传输;另一种是在一次传输(可能是多个字节)前加同步字节,可能不止一个字节,最后加校验字节或代表结束标志的字节,这种方式称为同步传输方式。 异步传输 异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它

们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII 代码。键盘可以在任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。 异步传输存在一个潜在的问题,即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,第一个比特已经过去了。这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位表示该次传输信息的终止。按照惯例,空闲(没有传送数据)的线路实际携带着一个代表二进制1的信号,异步传输的开始位使信号变成0,其他的比特位使信号随传输的数据信息而变化。最后,停止位使信号重新变回1,该信号一直保持到下一个开始位到达。例如在键盘上数字“1”,按照8比特位的扩展ASCII编码,将发送“00110001”,同时需要在8比特位的前面加一个起始位,后面一个停止位。 异步传输的实现比较容易,由于每个信息都加上了“同步”信息,因此计时的漂移不会产生大的积累,但却产生了较多的开销。在上面的例子,每8个比特要多传送两个比特,总的传输负载就增加25%。对于数据传输量很小的低速设备来说问题不大,但对于那些数据传输量很大的高速设备来说,25%的负载增值就相当严重了。因此,异步传输常用于低速设备。

实验1 串行通信实验

计算机通讯网络 随堂实验报告 学院计算机与电子信息学院 专业电子信息工程班级电信08 -1班 姓名程跃斌学号 08034030117 指导教师左敬龙 实验报告评分:_______

实验一串行通信实验 一.实验目的: 1.认识计算机具有串行通信的功能。 2.理解串行通信中数据位、校验位的关系。 3.能利用软件开发具有串行通信功能的程序。 二.实验原理: 计算机上的 机来说是发送数据,对另一台机就是接收数据,所以收、发数据线要换接。连接方法如下。 9芯对9芯串口 A机B机 2●←→●3 3●←→●2 5●←→●5 三.实验仪器: 计算机两台,串行通信电缆一条。 四.实验步骤: 步骤一:认识计算机上的串口,并将串口通信电缆正确的接在两台计算机上; 步骤二:通过windows已有的程序“超级终端”(打开方法:程序——附件——通信——超级终端)通过串行电缆初步认识计算机具有串行通信的功能; 步骤三:修改连接参数,测试建立的连接是否可以正常通信,如果出现异常,分析产生的原因; 步骤四:自己编程实现串口通信。在任何编程语言平台下都可以实现串口通信。同学们可根据自己熟悉的语言来编制串口通信程序。 实验程序流程图:

五.实验数据与分析: COM1参数设置:在这个对话框中,可以选择通信双方采用的通信速率、数据位的个数、奇偶校验位、停止位和可以使用的流量控制方法。不管设置什么参数,必须保证两台计算机的所有参数相同,而且数据传输速率不能超过115200bit/s。设置参数完毕后,单击“确定”按钮。 图1 COM1参数设置 通信双方可以互相发送一些字符。在缺省情况下,发送端发送的字符在本地不会显示。如果希望使用本地回显功能,则单击“文件”菜单,选择“属性”命令,在打开的窗口中选择“设置”选项卡,并单击“ASCII码设置”,打开如图2所示的对话框;选中“本地显示键 入的字符(E)”复选框,返回到超级终端窗口中,再发送一些字符,观察结果。

第4章 异步串行通信

第4章 异步串行通信 本章导读:目前几乎所有的台式电脑都带有9芯的异步串行通信口,简称串行口或COM 口.由于历史的原因,通常所说的串行通信就是指异步串行通信。USB、以太网等也用串行方式通信,但与这里所说的异步串行通信物理机制不同。 有的台式电脑带有两个串行口: COM1 口和COM2 口,部分笔记本电脑也带有串行口。随着 USB接口的普及,串行口的地位逐渐降低,但是作为设备间简便的通信方式,在相当长的时间内,串行口还不会消失,在市场上也可很容易购买到USB到串行口的转接器因为简单且常用的串行通信只需要三根线(发送线、接收线和地线),所以串行通信仍然是MCU与外界通信的简便方式之一。 实现异步串行通信功能的模块在一部分MCU中被称为通用异步收发器(Universal Asynch?ronous Receiver/Transmitters, UART ),在另一些 MCU 中被称为串行通信接口( Serial Communication Interface, SCI)。串行通信接口可以将终端或个人计算机连接到MCU,也可将几个分散的 MCU连接成通信网络, 本章的主要知识点有①阐述了串口相关的基础知识;②描述了K60串口糢块的功能概要; ③介绍了串口模块驱动构件编程时涉及的相关寄存器;④设计并封装了串行通信的驱动构件; ⑤给出第一个中断例程的执行过程和设计流程。 本章介绍的K60UART模块的工作原理以及编程实例,这些编程实例都使用了基于构件的编程思想,读者在阅读时可以仔细体会,以求得对编程方法有更深刻的理解本章所出现的UART 字眼,在没有其他说明的情况下,都是特指K60的UART模块,本章串口驱动编程涉及的寄存器全部给出其详细介绍,目的是让读者对嵌入式底层驱动编程设计的寄存器有个直观的了解,以后各章节将不再给出相关寄存器的详细介绍。 4.1异步串行通信的基础知识 本节简要概括了串行通信中常用的基本概念,为学习MCU的串行接口编程做准备。对于己经了解这方面知识的读者,可以略读本节。 4.1.1基本概念 “位”(bit)是单个二进制数字的简称,是可以拥有两种状态的最小二进制值,分别用“0” 和“1”表示。在计算机中,通常一个信息单位用8位二进制表示,称为一个“字节”(Byte)。串行通信的特点是:数据以字节为单位,按位的顺序(例如最高位优先)从一条传输线上发送出去。这里至少涉及以下几个问题:第一,每个字节之间是如何区分开的?第二,发送一位的持续时间是多少?第三,怎样知道传输是正确的?第四,可以传输多远?这些问题属于串行通信的基本概念。串行通信分为异步通信与同步通信两种方式,本节主要给出异步串行通信的一些常用概念。正确理解这些概念,对串行通信编程是有益的。

异步串行通信协议的设计与实现

10 | 电子制作 2018年10月 时传送;串行通信,即数据一位一位顺序传送。串行通信能够节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出。现在流行的高级语言一般都支持对串口的直接操作,常用的单片机也把串行通讯口作为一个标准接口集成在单片机内,串行通讯接口的开发具有开发周期短,开发简单等特点。目前异步串行通信已广泛用于微机之间的通信、工业控制系统中的数据采集与控制、远程数据的传送等方面。 1 串口通信的基本原理 串口在嵌入式系统当中是一类重要的数据通信接口,其本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位;在接收数据时,串行的位被转换为字节数据。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送数据线,(3)接收数据线。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:波特率是一个衡量通信速度的参数,它表示每秒钟传送的bit的个数;数据位是衡量通信中实际数据位的参数,当计算机发送一个信息包,标准的值是5、7和8位。如何设置取决于你的需求;停止位用于表示单个包的最后一位,典型的值为1,1.5和2位,停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会;奇偶校验位是串口通信中一种简单的检错方式,有四种检错方式——偶、奇、高和低,也可以没有校验位。做出统一规定。 在控制系统中,单片机间通信一般采用异步串行通信,传统的异步串行通信协议一般采用如图1所示的命令格式,命令消息包括帧头(命令码)、数据帧、校验帧;响应消息为ACK信号(ACK取不同的值,例如:正确响应 ACK = 0x55;错误响应 ACK = 0xAA)。由于在串口通信中还存在很多不可靠的因素,例如由于电磁干扰造成的帧字节丢失、传输误码,以及因主从单片机处理繁忙而造成的响应延迟等。传统的通信协议难以克服由于单片机处理繁忙而造成的响应延迟现象。如图2所示,当主芯片发送[命令1]后,当超过响应等待时间而没有得到ACK时,主芯片发[命令2],而此时在下一个响应等待时间内收到两次[ACK],这时将导致主芯片做出错误判断,调用并非本意的程序执行,严重影响系统的正常运行。因此,本文在通信协议的设计中,采用响应消息加权的方法,提高了通信的可靠性,保证系统正常运行。 图1 通信命令格式 图2 通信时序 本响应消息加权式通信协议,实现方式如下:通信协议

串行通信实验16550

(一)实验名称 串行通信实验16550 (二)实验内容 1)串行通讯基础实验。编写程序,向串口连续发送一个数据(55H),将串口输出连 接到示波器上,用示波器观察数据输出产生的波形。 2)串口自发自收应用实验。编写程序,将一串数据发送至串口,再接收回来显示。(三)实验目的 1)学习和掌握有关串行通信的知识 2)学习和体会16550的工作原理、工作方式,利用其进行应用编程 3)学习和掌握PC机串口的操作方法 (四)实验日期、时间和地点 2011—1—4 6,7节 2011-1-7 1,节 微机高级实验室 (五)实验环境(说明实验用的软硬件环境及调试软件) PC机一台,PIT-B实验箱一套,TDPIT、td-debug软件环境一套 (六)实验步骤(只写主要操作步骤,要简明扼要,还应该画出程序流程图或实验电路的具体连接图) 一:

二:自发自收

(七)实验结果(经调试通过的源程序的所有代码,应包含必要的说明文字) MY_03F8 EQU 0E480H MY_03FB EQU 0E483H MY_03FD EQU 0E485H DATAS SEGMENT NUM DB 55H;此处输入数据段代码 DATAS ENDS STACKS SEGMENT DW 10 DUP(0);此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;初始化16550 MOV DX,MY_03FB ;16550控制寄存器地址送DX MOV AL,80H ;置DLAB=1,设置除数寄存器 OUT DX,AL CALL DALLY MOV DX,MY_03F8 ;除数寄存器地址送DX MOV AX,03C0H ;波特率为1200bit/s OUT DX,AL CALL DALLY MOV AL,AH INC DX OUT DX,AL CALL DALLY MOV DX,MY_03FB ;16550控制寄存器地址送DX MOV AL,0BH ;8位数据位,奇校验,1位停止位 OUT DX,AL CALL DALLY CALL GO MOV AH,4CH INT 21H GO PROC NEAR LOP1: MOV DX,MY_03FD ;通信状态寄存器地址送DX IN AL,DX CALL DALLY

STM32 USART同步异步串行通讯

慢慢的看一下,应该容易理解. 在网络通信过程中,通信双方要交换数据,需要高度的协同工作。为了正确的解释信号,接收方必须确切地知道信号应当何时接收和处理,因此定时是至关重要的。在计算机网络中,定时的因素称为位同步。同步是要接收方按照发送方发送的每个位的起止时刻和速率来接收 数据,否则会产生误差。通常可以采用同步或异步的传输方式对位进行同步处理。 1. 异步传输(Asynchronous Transmission):异步传输将比特分成小组进行传送,小组可以是8位的1个字符或更长。发送方可以在任何时刻发送这些比特组,而接收方从不知道它们会在什么时候到达。一个常见的例子是计算机键盘与主机的通信。按下一个字母键、数字键或特殊字符键,就发送一个8比特位的ASCII代码。键盘可以在 任何时刻发送代码,这取决于用户的输入速度,内部的硬件必须能够在任何时刻接收一个键入的字符。 异步传输存在一个潜在的问题,即接收方并不知道数据会在什么时候到达。在它检测到数据并做出响应之前,第一个比特已经过去了。这就像有人出乎意料地从后面走上来跟你说话,而你没来得及反应过来,漏掉了最前面的几个词。因此,每次异步传输的信息都以一个起始位开头,它通知接收方数据已经到达了,这就给了接收方响应、接收和缓存数据比特的时间;在传输结束时,一个停止位表示该次传输信息

的终止。按照惯例,空闲(没有传送数据)的线路实际携带着一个代表二进制1的信号,异步传输的开始位使信号变成0,其他的比特位使信号随传输的数据信息而变化。最后,停止位使信号重新变回1,该信号一直保持到下一个开始位到达。例如在键盘上数字“1”,按照8比特位的扩展ASCII编码,将发送“00110001”,同时需要在8比特位的前面加一个起始位,后面一个停止位。 异步传输的实现比较容易,由于每个信息都加上了“同步”信息,因此计时的漂移不会产生大的积累,但却产生了较多的开销。在上面的例子,每8个比特要多传送两个比特,总的传输负载就增加25%。对于数据传输量很小的低速设备来说问题不大,但对于那些数据传输量很大的高速设备来说,25%的负载增值就相当严重了。因此,异步传输常用于低速设备。 2. 同步传输(Synchronous Transmission):同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。我们将这些组合称为数据帧,或简称为帧。 数据帧的第一部分包含一组同步字符,它是一个独特的比特组合,类似于前面提到的起始位,用于通知接收方一个帧已经到达,但它同时还能确保接收方的采样速度和比特的到达速度保持一致,使收发双方

实验四-串口通信实验

实验报告 课程名称:微机原理与接口技术 指导老师:张军明 成绩:__________________ 实验名称:实验四 串口通信实验 实验类型:________________同组学生姓名:吴越 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 一、实验目的 1、掌握80C51串行口工作方式选择、理解串行口四种通讯模式的区别、波特率发生器的作用及通讯过程中的时序关系。 2、掌握串口初始化的设置方法和串行通信编程的能力。 3、了解PC 机通讯的基本要求,掌握上位机和下位机的通讯方法。 4、编写简单的通信协议(如串行口工作方式、波特率、校验方式、出错处理等)。 二、实验器材 1、Micetek 仿真器一台。 2、实验板一块。 3、PC 机电脑一台。 4、九针串口线一条。 三、实验原理 串口通讯对单片机而言意义重大,不但可以实现将单片机(下位机)的数据传输到PC 端(上位机),而且也能实现PC 对单片机的控制,51单片机有一个全双工的串行通讯口,所以单片机和PC 之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL 电平的,两者之间必须有一个电平转换电路,本实验采用专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。 3.1 RS232九针串口基本功能简介 九针串口即RS-232接口,是个人计算机上的通讯接口之一,由电子工业协会(Electronic Industries Association ,EIA) 所制定的异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现,一般个人计算机上会有两组RS-232接口,分别称为COM1和COM2。该接口分为公头子和母头子。九针串口(母头)的功能如下,请见图1: 专业:电子信息工程 姓名:彭嘉乔 学号:3130104084 日期:2015.05 地点:东3-409

相关文档
最新文档