基于LPC2138芯片与PC机的串行通信设计.docx
- 文档编号:25328639
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:31
- 大小:278.52KB
基于LPC2138芯片与PC机的串行通信设计.docx
《基于LPC2138芯片与PC机的串行通信设计.docx》由会员分享,可在线阅读,更多相关《基于LPC2138芯片与PC机的串行通信设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于LPC2138芯片与PC机的串行通信设计
LPC2138芯片与PC机的串行通信设计
摘要:
串口通信是一种广泛使用且实用的通信方式,介绍RS232串行通信的联结方式,研究利用c语言编程实现RS232串行通信的过程.结合实际应用,在约定双方串行通信协议的基础上,运用C语言开发的串行通信软件,LPC2138芯片与PC机的串行数据通信。
关键词:
ARM嵌入式系统、LPC2138芯片、RS232串行通信
第一章设计的目的和要求
1.1设计的目的………………………………………………………………………………3
1.2设计要求…………………………………………………………………………………3
第二章方案论证
2.1设计方案…………………………………………………………………………………4
2.2方案选择…………………………………………………………………………………4
第三章硬件电路设计
3.1设计思路…………………………………………………………………………………5
3.2主电路设计………………………………………………………………………………5
3.2.1LPC2138芯片……………………………………………………………………5
3.2.2晶振电路…………………………………………………………………………9
3.2.3复位电路…………………………………………………………………………10
3.2.4电源电路…………………………………………………………………………10
3.3RS232电平转换电路设计………………………………………………………………11
3.4硬件电路连线图…………………………………………………………………………12
第四章软件设计
4.1串行通信协议设计………………………………………………………………………13
4.2程序设计…………………………………………………………………………………14
4.2.1流程图……………………………………………………………………………14
4.2.2程序清单…………………………………………………………………………16
第五章总结………………………………………………………………………………………19
参考文献…………………………………………………………………………………………20
第一章
设计的目的和要求
1.1设计目的
1、了解LPC2138各个引脚功能,工作方式,计数/定时,I/O口,中断等的相关原理,并巩固学习嵌入式的相关内容知识。
2、培养综合运用所学知识、独立分析和解决实际问题的能力,培养创新意识和创新能力,并获得科学研究的基础训练。
3、掌握LPC2138芯片及PC机RS232通信原理。
1.2设计要求
利用LPC2138芯片与PC机实现信息的串行通信:
1、课程设计论文内容要正确,概念要清楚;
2、完成任务书所规定的内容;
3、附有电路原理图及程序流程图,以及程序清单;
4、文字要通顺,书写要工整,设计图纸必须符合规范。
第二章
方案论证
2.1设计方案
方案一:
采用单片机89S51芯片和MAX3232芯片与PC机进行RS232串行通信;
方案二:
采用LPC2114芯片和SC161S752芯片与PC机进行RS232串行通信;
方案三:
采用LPC2138芯片和MAX3223芯片PC机进行RS232串行通信;
2.2方案选择
MCU-51系列芯片主要是8位单片机,而LPC2000系列芯片是32位的微处理器,因此采用单片机芯片相对来说会比其余方案的功能来的简单,性能会比较差。
MAX3223芯片与SC161S752芯片都能实现RS232电平的转换,但MAX3223芯片的设计简单,成本更低廉。
因此我们组选择方案三。
根据系统设计的要求,对系统设计的总体方案进行论证分析如下:
1.当使用串口进行数据传送时,虽然同步通信速度远远高于异步通信,可达500kbit/s,但由于其需要有一个时钟来实现发送端和接收端之间的同步,硬件电路复杂,通常计算机之间的通信只采用异步通信。
2.本设计中采用外接晶振的方法。
3.RS232接口具有良好的抗噪声干扰性、长的传输距离和多点连接能力等优点,所以选用RS232接口。
因普通PC机串口遵循标准的RS232通讯协议,所以在PC机串口与通信电缆间安装一RS232/485协议转换器实现协议转换。
4:
程序采用C语言来实现来实现。
第三章
硬件电路设计
3.1设计思路
LPC2138具有片内Flash程序存储器,需3.3V电源、复位电路、晶振电路,P0.14接一个上拉电阻禁止ISP功能。
LPC2138的UART0没有完整的Modem接口信号,仅提供TXD、RXD信号引脚,使用UART0与RS-232接口进行串行通信需要一个RS-232转换器(MAX3223芯片)将TTL电平转换成RS-232电平。
3.2主电路设计
3.2.1LPC2138芯片
1、简介
LPC2138是基于一个支持实时仿真和嵌入式跟踪的32/16位ARM7TDMI-STMCPU的微控制器,并带有512kB的嵌入的高速Flash存储器。
片内128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。
由于LPC2138较小的封装和极低的功耗,多个32位定时器,4路10位ADC或8路10位ADC,PWM通道和46个GPIO以及多达9个边沿或电平触发的外部中断。
可理想地用于小型系统中,如访问控制和POS机。
宽范围的串行通信接口和片内32kB的SRAM使LPC2138非常适用于通信网关、协议转换器、软modem、声音辨别和低端成像,为它们提供巨大的缓冲区空间和强大的处理功能。
LPC2138集成了一个512kB的FLASH存储器系统。
该存储器可用作代码和数据的存储。
对FLASH存储器的编程可通过几种方法来实现。
可通过串口进行在系统编程。
应用程序也可以在程序运行时擦除和/或编程FLASH,这样为数据存储和现场固件的升级都带来了极大的灵活性。
当使用片内bootloader时,512kB的Flash存储器可作用户代码使用。
2、引脚描述
图3.1LPC2138芯片引脚图
表3-1LPC2138引脚功能介绍
引脚
名称
引脚
号
类
型
描述
P0.0~P0.31
I/O
P0口:
P0口是一个32位双向I/O口。
每个位都有独立的方向控制。
有31个P0口可用作通用双向数字I/O口,P0.31只用作输出口。
P0口管脚的操作取决于管脚连接模块所选择的功能。
P0.24不可用。
P0.0
19
O
O
TxD0-UART0的发送器输出
PWM1-脉宽调制器输出1
P0.1
21
I
O
I
RxD0-UART0的接收器输入
PWM3-脉宽调制器输出3
EINT0-外部中断0输入
P0.2
22
I/O
I
SCL0-I2C0时钟输入/输出。
开漏输出
CAP0.0-定时器0捕获输入0
P0.3
26
I/O
O
I
SDA0-I2C0数据输入/输出。
开漏输出
MAT0.0-定时器0匹配输出0
EINT1-外部中断1输入
P0.4
27
I/O
I
I
SCK0-SPI0串行时钟,主机输出或从机输入的时钟
CAP0.1-定时器0捕获输入0
AD0.6-A/D转换器0输入6。
该模拟输入总是连接到相应的管脚。
P0.5
29
I/O
O
I
MISO0-SPI0主机输入/从机输出,从机到主机的数据传输
MAT0.1-定时器0匹配输出1
AD0.7-A/D转换器0输入7。
该模拟输入总是连接到相应的管脚。
P0.6
30
I/O
I
I
MOSI0-SPI0主机输出/从机输入,主机到从机的数据传输
CAP0.2-定时器0捕获输入2
AD1.0-A/D转换器1输入0。
该模拟输入总是连接到相应的管脚。
P0.7
31
I
O
I
SSEL0-SPI0从机选择,选择SPI接口用作从机。
PWM2-脉宽调制器输出2
EINT2-外部中断2输入
P0.8
33
O
O
I
TxD1-UART1的发送器输出
PWM4-脉宽调制器输出4
AD1.1-A/D转换器1输入1。
该模拟输入总是连接到相应的管脚。
P0.9
34
I
O
I
RxD1-UART1的接收器输入
PWM6-脉宽调制器输出6
EINT3-外部中断3输入
P0.10
35
O
I
I
RTS1-UART1请求发送输出
CAP1.0-定时器1捕获输入0
AD1.2-A/D转换器1输入2。
该模拟输入总是连接到相应的管脚。
P0.11
37
I
I
I/O
CTS1-UART1的清零发送输入
CAP1.1-定时器1捕获输入1
SCL1-I2C1时钟输入/输出。
开漏输出
P0.12
38
I
O
I
DSR1-UART1的数据设备就绪输入
MAT1.0-定时器1匹配输出0
AD1.3-A/D转换器1输入3。
该模拟输入总是连接到相应的管脚。
P0.13
39
O
O
I
DTR1-UART1的数据终端就绪输出
MAT1.1-定时器1匹配输出1
AD1.4-A/D转换器1输入4。
该模拟输入总是连接到相应的管脚。
P0.14
41
I
I
I/O
DCD1-UART1数据载波检测输入
EINT1-外部中断1输入
SDA1-I2C1数据输入/输出。
开漏输出
P0.15
45
I
I
I
RI1-UART1铃声指示输入
EINT2-外部中断2输入
AD1.5-A/D转换器1输入5。
该模拟输入总是连接到相应的管脚。
P0.16
46
I
O
I
EINT0-外部中断0输入
MAT0.2-定时器0匹配输出2
CAP0.2-定时器0捕获输入2
P0.17
47
I
I/O
O
CAP1.2-定时器1捕获输入2
SCK1-SSP串行时钟,主机输出或从机输入的时钟
MAT1.2-定时器1匹配输出2
P0.18
53
I
I/O
O
CAP1.3-定时器1捕获输入3
MISO1-SSP主机输入/从机输出,从机到主机的数据传输
MAT1.3-定时器1匹配输出3
P0.19
54
O
I/O
I
MAT1.2-定时器1匹配输出2
MOSI1-SSP主机输出/从机输入,主机到从机的数据传输
CAP1.2-定时器1捕获输入2
P0.20
55
O
I
I
MAT1.3-定时器1匹配输出3
SSEL1-SSP从机选择,选择SSP接口用作从机。
EINT3-外部中断3输入
P0.21
1
O
I
I
PWM5-脉宽调制器输出5
AD1.6-A/D转换器1输入6。
该模拟输入总是连接到相应的管脚。
CAP1.3-定时器1捕获输入3
P0.22
2
I
I
O
AD1.7-A/D转换器1输入7。
该模拟输入总是连接到相应的管脚。
CAP0.0-定时器0捕获输入0
MAT0.0-定时器0匹配输出0
P0.23
58
I/O
通用数字输入/输出口。
P0.25
9
I
O
AD0.4-A/D转换器0输入4。
该模拟输入总是连接到相应的管脚。
AOUT-D/A转换器输出
P0.26
10
I
AD0.5-A/D转换器0输入5。
该模拟输入总是连接到相应的管脚。
P0.27
11
I
I
O
AD0.0-A/D转换器0输入0。
该模拟输入总是连接到相应的管脚。
CAP0.1-定时器0捕获输入1
MAT0.1-定时器0匹配输出1
P0.28
13
I
I
O
AD0.1-A/D转换器0输入1。
该模拟输入总是连接到相应的管脚。
CAP0.2-定时器0捕获输入2
MAT0.2-定时器0匹配输出2
P0.29
14
I
I
O
AD0.2-A/D转换器0输入2。
该模拟输入总是连接到相应的管脚。
CAP0.3-定时器0捕获输入3
MAT0.3-定时器0匹配输出3
P0.30
15
I
I
I
AD0.3-A/D转换器0输入3。
该模拟输入总是连接到相应的管脚。
EINT3-外部中断3输入
CAP0.0-定时器0捕获输入0
P0.31
17
O
通用数字输出口。
重要:
当RESET管脚为低电平或禁止JTAG端口时,该管脚必须不能外部拉低。
P1.0~P1.31
I/O
P1口:
P1口是一个32位双向I/O口。
每个位都有独立的方向控制。
P1口管脚的操作取决于管脚连接模块所选择的功能。
P1口的P1.0~P1.15不可用。
P1.16
16
O
TRACEPKT0-跟踪包位0,带内部上拉的标准I/O口。
P1.17
12
O
TRACEPKT1-跟踪包位1,带内部上拉的标准I/O口。
P1.18
8
O
TRACEPKT2-跟踪包位2,带内部上拉的标准I/O口。
P1.19
4
O
TRACEPKT3-跟踪包位3,带内部上拉的标准I/O口。
P1.20
48
O
TRACESYNC-跟踪同步。
带内部上拉的标准I/O口。
当RESET为低时,TRACESYNC上的低电平使P1.16~P1.25在复位后作为跟踪端口。
P1.21
44
O
PIPESTAT0-流水线状态位0,带内部上拉的标准I/O口。
P1.22
40
O
PIPESTAT1-流水线状态位1,带内部上拉的标准I/O口。
P1.23
36
O
PIPESTAT2-流水线状态位2,带内部上拉的标准I/O口。
P1.24
32
O
TRACECLK-跟踪时钟。
带内部上拉的标准I/O口。
P1.25
28
I
EXTIN0-外部触发输入。
带内部上拉的标准I/O口。
P1.26
24
I/O
RTCK-返回的测试时钟输出。
JTAG端口的额外信号。
当处理器频率变化时帮助调试器保持同步。
带内部上拉的双向口。
当RESET为低时,RTCK上的低电平会使P1.26~P1.31在复位后作为调试端口。
P1.27
64
O
TDO-JTAG接口测试数据输出。
P1.28
60
I
TDI-JTAG接口测试数据输入。
P1.29
56
I
TCK-JTAG接口测试时钟。
P1.30
52
I
TMS-JTAG接口的模式选择。
P1.31
20
I
TRST-JTAG接口的测试复位。
RESET
57
I
外部复位输入:
该管脚的低电平将器件复位,并使I/O口和外围功能恢复默认状态,处理器从地址0开始执行。
带迟滞的TTL电平,管脚可承受5V电压。
XTAL1
62
I
振荡器电路和内部时钟发生器的输入。
XTAL2
61
O
振荡放大器的输出。
RTXC1
3
I
RTC振荡电路的输入。
RTXC2
5
O
RTC振荡电路的输出。
VSS
6,18,25,4250
I
地:
0V参考点。
VSSA
59
I
模拟地:
0V参考点。
标称电压与VSS相同,但应当互相隔离以减少噪声和故障。
VDD
23,4351
I
3.3V电源:
内核和I/O口的电源电压。
VDDA
7
I
模拟3.3V端口电源:
标称电压与VDD相同,但应当互相隔离以减少噪声和故障。
该电压也用来向片内PLL供电。
VREF
63
I
A/D转换器参考电压:
标称电压与VDD相同,但应当互相隔离以减少噪声和故障。
该管脚的电平用作A/D和D/A转换器的参考电压。
VBAT
49
I
RTC电源:
RTC的3.3V电源端。
3.2.2晶振电路
LPC2138ARM晶体振荡器可以使用外接晶体产生时钟,称之为“振荡模式”,硬件连接如图3.2所示。
微控制器内部的振荡电路仅支持1~30MHZ的外部晶体。
由于芯片内部已经集成了反馈电阻,所以只需在外部连接一个晶体和电容C1、C2就可以形成基本模式的振荡。
图3.2晶振电路
3.2.3复位电路
一些微控制器自己在上电时会产生复位信号,但大多数微控制器需要外部输入这个信号。
因为这个信号会使微控制器初始化为某个确定的状态,所以这个信号的稳定性和可靠性对微控制器的正常工作有重大影响。
SP708S芯片属于微处理器(up)监控器件,可有效的监测up及数字系统中的供电及电池的工作情况,以提高系统的可靠性。
带手动复位的复位电路如图3.3所示。
图3.3复位电路
3.2.4电源电路
电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位,但却往往被忽略。
如果电源系统处理的好,那么整个系统的故障往往减少了一大半。
设计电源电路必须考虑的因素有:
输出的电压、电流和功率;输入的电压、电流;安全因素;输出波纹;电磁兼容和电磁干扰;体积限制;功耗限制;成本限制。
电源电路如图3.4所示。
图3.4电源电路
3.3RS232电平转换电路设计
1、串口原理
串口,简单地说,就是串行收发数据的接口。
串口通信是一种异步通信方式(串口通信也有同步通信的标准,但实际应用很少),其中负责异步串行收发数据的模块叫UART(UnivesalAsynchronousReceiver/Transmitter)。
由于异步通信的数据发送方和数据接收方的系统时钟不是同步的,数据通信过程中也不携带任何时钟信息,因此他的速度收到了很大限制,目前较常用的串口速率最快的也只能达到115200bit/s。
串口发送的数据都是以字节为单位的,一个字节发送的过程分为起始位、数据位和结束位三部分。
所有数据的起始位和结束位都分别是逻辑0和1。
串口通信是异步通信,因此设备两端需要一个时钟同步的过程,这在高速数据通信中往往由采用锁相环技术的时钟恢复电路来完成。
但是在低速率的串口通信中,人们设计了一种更为简单的方式实现时钟同步。
串口数据线平时的状态总是逻辑1,而设计接收方采用比线路速率高得多的时钟对数据线进行采样,一旦在线路上采到逻辑0,则表示线路上有新的数据发送了,接收方根据事先约定好的串口速率,以自己的高速时钟计数,在每一个数据位的有效期内采样到正确的数值。
当一个字节发送完毕,为了让数据接收方有足够的准备时间接收下一个字节,因此又定义了停止位。
停止位是逻辑1,因此相当于强迫数据线回到空间状态至少一个数据周期。
2、串口电平
串口设备实际使用时,人们为了让它的信号可以传输的更远,并不会直接将逻辑电平放到传输线上,而是会做电平转换。
这个电平标准就是RS232标准,它规定逻辑1(也称为mark)的电平范围是-5~-15V;逻辑0(也称为space)的电平范围是5~15V。
3、电平转换电路
串口信号要传输必须进行电平转换,而所有的串口芯片,包括处理器内部集成的串口模块都不会直接输出RS232电平的串口信号,因此都需要进行串口电平转换。
完成串口电平转换电路设计很简单,最简单的能进行双向通信的串口只需要3根信号线,这种串口实际使用的也最多。
图3.5给出了利用电平转换芯片MAX3223完成串口电平转换的电路。
图3.5串口电平转换电路
3.4硬件电路连线图
本次设计的硬件电路连线图如图3.6所示。
图3.6硬件电路连线图
第四章
软件设计
4.1串行通信协议设计
无论是异步串行通信还是同步串行通信、为了保证通信的正确,发送方和接收方事先必须有一个双方共同遵守的协议,来规定数据传送格式、起始标志、结束标志、校验方式等。
例如PC系列微机中广泛采用的异步串行通信方式,其通信协议规定的信息传输格式如图4.1所示。
按该格式,每帧信息(即每个字符)由4部分组成:
图4.1异步串行通信格式
(1)1位起始位,规定为低电平“0”。
(2)5~8位数据位,它紧跟在起始位后面,是要传送的有效信息。
规定从低位至高位依次传送。
(3)0位或1位奇偶校验位。
(4)1位,112位或2位停止位,规定为高电平“1”。
其中采用相反极性的起始位和停止位起着至关重要的作用。
起始位标志每个字符的开始,通知接收器开始装置一个字符,以便和发送器取得同步;停止位标志每个字符的结束。
利用前一个字符的高电平停止位到后一个字符的低电平起始位的负跳变,接收器便知道这是一个字符的开始,可以以此作为新字符内位检测与采样的时间基准。
正是为了保证这种从一个字符到另一个字符的转换必须以负跳变开始,通信协议规定在字符与字符之间出现空闲状态时,空闲位也一律用停止位的“1”填充。
除此之外,通常还采取以下两项措施来进一步消除因收发双方时钟的相对偏差而可能导致的接收端采样错误:
(1)接收器在每位码元的中心采样,以获得最大的收/发时钟频率偏差容限。
(2)接收器采用比传送波特率更高频率的时钟来控制采样时间,以提高采样的分辨能力和抗干扰能力。
例如,利用图4.2所示的这种经16倍频的接收时钟对串行数据流进行检测和采样,接收器能在一个位周期的1/16时间内决定出字符的开始。
如果采样频率和传送波特率相同,没有这种倍频关系,则分辨率会很差。
比如在起始位前沿出现前夕刚采样一次,则下次采样要到起始位结束前夕才进行。
而假若在这个位周期期间因某种原因恰恰使接收端时钟往后偏移了一点点,就会错过起始位而导致整个后面各位检测和识别的错误。
图4.2用16倍波特率接收时钟控制采样过程示意图
4.2程序设计
4.2.1流程图
远端ARM嵌入式系统LPC2138芯片采用中断方式进行数据接收,基于软件编程与上位机进行通讯,下位机中断子程序流程、数据发送流程、串口初始化流程和数据接收流程分别如图4.3、图4.4、图4.5和图4.6所示:
图4.3中断子程序流程图
图4.4数据发送流程图
图4.5串口初始化流程图图4.6数据接收流程图
控制中心上位PC机始终在循环发送指令,当远端单元接收到与本机地址相同的指令时,置接收数据标志,接收到自己的指令后,远端单元开始上传数据到上位PC机,与此同时PC机停止发送指令并处于接收数据状态,等到接收数据完毕并检验数据
合格后发送确认命令到此远端单元;如果没收到数据或数据不合格,则发送错误标志到此远端单元;如果收到的指令与本机地址不同时,程序返回中断入口处,继续执行其它操作。
这样可保证远端单元把数据准确地发送到上位机。
图4.7PC机通讯子程序流程图
4.2.2程序清单
/****************************************************************************
*文件名:
main.c
*功能:
向串口发送数据。
*说明:
使用外部11.0592MHz晶振,根据CONF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LPC2138 芯片 PC 串行 通信 设计