基于ARM的串口通信系统的设计方案Word格式文档下载.docx
- 文档编号:20058256
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:12
- 大小:294.74KB
基于ARM的串口通信系统的设计方案Word格式文档下载.docx
《基于ARM的串口通信系统的设计方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于ARM的串口通信系统的设计方案Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
3.3.6串口电路·
7
3.4软件设计·
8
3.4.1Bootloader工作原理·
3.4.2第一阶段·
9
3.4.1第二阶段·
10
总结与致谢·
11
参考文献·
12
摘要
串口通信是目前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种非常重要且普遍使用的通信方式。
在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,同时还要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同。
串行端口的本质功能是作为CPU和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS232串口的计算机或设备进行通信。
本系统中目标机开发板的内核采用的是三星的S3C2410,工作非常可靠,可稳定运行在203MHz的时钟频率下。
其外设非常丰富,功能强大,完全可以满足设计需要。
串口线采用常用的RS232型接口模式,能实现计算机与开发板间的数据传输与控制。
关键词:
ARM;
串口通信;
串行端口;
RS232
1设计目的
以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、电源电路、存储器电路和串口电路等硬件组成。
在ADS环境下自制的最小Boobtloader程序开发并调试。
2设计要求
串口通信是嵌入式设备必备的通信方式之一,选用ARM芯片和电平转换芯片完成出口通信的设计,并设计完整物理接口。
根据设计题目的要求,选择确定ARM芯片型号、电平转换芯片型号,完成系统硬件设计和程序设计。
3设计内容
3.1S3C2410与串口通信概述
3.1.1S3C2410处理器概述
S3C2410是Samsung公司基于ARM920T内核的嵌入式微处理器.本文以S3C2410为核心,配置了最基本外围电路构成了最小的嵌入式系统,并在ADS上开发了启动程序,完成硬件初始化,配置运行环境,串日调试功能。
Samsung公司推出的16/32位RISC处理器S3C2410A,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。
为了降低整个系统的成本,S3C2410A提供了以下丰富的内部设备:
分开的16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&
TFT),支持NANDFlash系统引导,系统管理器(片选逻辑和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定时器,I/O端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,IIC-BUS接口,USB主机,USB设备,SD主卡&
MMC卡接口,2通道的SPI以及内部PLL时钟倍频器。
S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。
它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。
同样它还采用一种叫做AdvancedMicrocontrollerBusArchitecture(AMBA)新型总线结构。
S3C2410A的显著特性是它的CPU核心,是一个由AdvancedRISCMachines(ARM)有限公司设计的16/32位ARM920TRISC处理器。
ARM920T实现了MMU,AMBABUS和Harvard高速缓冲体系结构。
这一结构具有独立的16KB指令Cache和
16KB数据Cache,每个都是由8字长的行(line)构成。
通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了为系统配置额外器件的需要。
本文档将介绍S3C2410A中集成的以下片上功能:
●1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;
●具备16KB的I-Cache和16KB的D-Cache/MMU;
●外部存储控制器(SDRAM控制和片选逻辑)
●LCD控制器(᳔大支持4K色STN和256K色TFT)提供1通道LCD专用DMA。
●4通道DMA并有外部请求引脚。
●3通道UART(IrDA1.0,16字节TxFIFO,和16字节RxFIFO)/2通道SPI
●1通道多主IIC-BUS/1通道IIS-BUS控制器。
●兼容SD主接口协议1.0版和MMC卡协议2.11兼容版。
●2端口USB主机/1端口USB设备(1.1版)
●4通道PWM定时器和1通道内部定时器
●看门狗定时器
●117个通用I/O口和24通道外部中断源。
●功耗控制模式:
具有普通,慢速,空闲和掉电模式。
●8通道10比特ADC和触摸屏接口
●具有日历功能的RTC
●具有PLL片上时钟发生器
3.1.1串口通信
串口通信的概念,即串口按位(bit)发送和接收字节
通信协议是指通信双方按照约定的数据格式、同步方式、传送速度、传送步骤等规程来进行数据传输
本次采用异步通信,其特点是通信双方以一个字符(包括特定附加位)作为数据传输单位,且发送方传送字符的间隔时间是不定的。
在传输一个字符时总是从起始位开始,以停止位结束。
如图1所示:
图1串行数据帧格式
S3C2410的UART提供3个独立的异步串行通信端口,每个端口可以基于中断或者DMA进行操作。
换句话说,UART控制器可以在CPU和UART之间产生一个中断或者DMA请求来传输数据。
UART在系统时钟下运行可支持高达230.4K的波特率,如果使用外部设备提供的UEXTCLK,UART的速度还可以更高。
每个UART通道各含有两个16位的接收和发送FIFO。
S3C2410的UART包括可编程的波特率,红外接收/发送,一个或两个停止位插入,5-8位数据宽度和奇偶校验。
每个UART包括一个波特率发生器、一个发送器、一个接收器和一个控制单元,如图11-1所示。
波特率发生器的输入可以是PCLK或者UEXTCLK。
发送器和接收器包含16位的FIFO和移位寄存器,数据被送入FIFO,然后被复制到发送移位寄存器准备发送,然后数据按位从发送数据引脚TxDn输出。
同时,接收数据从接收数据引脚RxDn按位移入接收移位寄存器,并复制到FIFO。
特性
—RxD0,TxD0,RxD1,TxD1,RxD2,和TxD2基于中断或者DMA操作
—UARTCh0,1,和2具有IrDA1.0&
16字节FIFO
—UARTCh0和1具有nRTS0,nCTS0,nRTS1,和nCTS1
—支持发生/接收握手
3.2方案设计
图2通信系统的组成框图
本系统是以嵌入式芯片S3C2410为核心的最小嵌入式系统构建方法,给出了S3C2410的复位电路、调试接口、电源电路、存储器电路和串口电路等硬件组成。
3.3电路设计
3.3.1电源设计
S3C2410工作时内核需要1.8V电压,I/O端口和外设需要3.3V电压.VDDi/VDDiarm引脚口是供S3C2410内核的1.8V电压;
VDDalive引脚是功能复位和端口状态寄存器电压.M12引脚RTCVDD是RTC模块的1.8V电压,用电池供电保证系统的掉电后保持实时时钟.VDDOP引脚是I/O端口3.3V电压;
VDDMOP引脚是存储器I/O端口电压;
还有一系列VSS引脚需要接到电源地上.3.3V电压从SV用AMS1117-3.3转换得到如图3所示;
1.8V从3.3V通过MIC5207-1.8转换得到。
如图3所示。
图3电源电路
3.3.2晶振电路
S3C2410内部有时钟管理模块,有2个锁相环,其中MPLL能够产生CPU卞频FCLK,AHB总线外设时钟HCLK和APB总线外设时钟PCLK;
UPLL产生USB模块的时钟。
OM3,OM2都接地时,主时钟源和USB模块时钟源都由外接晶振产生。
在XTIpll和XTOpll之间连接主晶振,可以选择12MHz品振,通过内部寄存器的设置产生不同频率的FOLK,HCLK和PCLK;
在XTIrtc和XTOrtc上需要接32.768kHz的晶振供RTC模块使用.同时在MPLLCAP和UPLLCAP上也要外接5pF的环路滤波电容。
晶振电路如图4所示。
图4晶振电路
3.3.3复位电路
S3C2410的J12引脚为nRESET复位引脚,nRESET上给4个FOLK时间的低电平后就可以复位.可以设计如图5所小的复位电路,其中上电复位是靠RC电路特性完成,开关二极管1N4148在手动复位时对电容起快速放电的作用,因此可以把复位电平快速拉到OV。
反响门74HC14可以起到延时作用,保证有足够的复位时间。
图5复位电路
3.3.4JTAG接口
S3C2410有标准的JTAG接口,TCI(H6)为测试时钟输入;
TDI(J1)为测试数据输入;
TDO(JS)为测试数据输出;
TMS(J3)为测试模式选择,TMS用来设置JTAG接日处于某种特定的测试式;
nTRST(H5)为测试复位,输入引脚,低电平有效。
其nTRST,TMS,TCK,TDI需要接10K的上拉电阻。
通过,JTAG日可以完成芯片测试或在线编程。
3.3.5存储器设计
S3C2410有32根数据线和27根地址线,因此地址线的寻址范围为128M;
但是S3C2410还有8根存储器芯片片选信号线nGCSO--nGCS7,因此总的寻址空间为128M*8=1G。
NandFlash启动模式下复位时S3C2410的存储器映射如图6所示。
如当访问物理地址Ox08000000-0x10000000内的地址则nGCSl自动为低电平,以此类推。
通过图6可知SDRAM只能连接在nGCS6和nGCS7片选引脚上。
S3C2410提供了SDRAM的接口,其中包括nSRAS:
行信号锁存;
nSCAS:
列信号锁存;
nSCS(就是nGCS6):
片选信号;
图6
DQM[3:
0]:
数据屏蔽;
SCLI[1:
0];
时钟;
SCKE:
时钟有效;
nBE[3:
0]:
高/低字节有效;
nWBE[3:
0]:
写有效。
MT48LC16M16A2P是4块16位32M的SDRAM存储器。
MT48LC16M16A2P的行地址13位为A0--A12,列地址9位为CAO-CA8,行和列地址是复用的。
MT48LC16M16A2P包括4个块,通过BA0,BA1的组合选择块。
MT48LC16M16A2P是16位存储器,因此数据线为DQO--DQ15,还有CS片选,CLK时钟,CKE时钟使能,RAS行锁存,CAS列锁存,WE写使能等引脚.图7表示MT48LC16M16A2P和S3C2410的连接方法,其中BA0,BA1需要连接ADD24和ADDR25,通过S3C2410的说明可知,因为内存总大小是64M因此块选择信号必须使用ADDR24和ADDR25。
S3C2410内部有NANDFlash控制器,支持从NADNFlash启动.图7是K9F120864MFlash芯片和S3C2410的连接方式.S3C2410采用一组内部寄存器来完成NANDFlash的操作.
图7存储器连接电路
3.3.6串口电路
S3C2410的DART提供了二个同步串行IO日,图8是COMO的连接方式。
串口数据的收发有查询方式、中断方式和DMA方式等,这些可以在UCONO寄存器中设置。
UTXH0把要发送的数据写入此寄存器。
URXH0读此寄存器获得串日接收的数据。
串日一般可以用程序运行信息的输出和程序调试。
图8串口连接电路
3.4软件设计
在本系统中,指纹图像识别部分的算法主要通过S3C2410芯片来完成。
当S3C2410的OM0,OM1引脚接低电平时S3C2410就从NADNFlash启动.在NANDFlash启动模式下上电后NANDFlash控制器自动将NANDFlash的最前面的4k区域拷贝到所谓的"
steppingstone"
单面.这一过程完全由硬件自动实现."
steppingstone”实际上是S3C2410内部的一个SRAM,因为NADNFlash不支持程序片内运行,因此必须把NANDFlash内的指令拷贝到SRAM或SDRAM中才可以运行.在拷贝完前4k代码后,NANDFlash控制器自动将“steppingstone”映射到arm地址空间0x00000000开始的前4k区域.在映射过程完成后NANDFlash控制器将pc指针直接指向arm地址空间的0x00000000位置,准备开始执行“steppingstone”上的代码。
而“steppingstone”上从NANDFlash拷贝过来的4k代码,是程序员写的bootloader的前4k代码。
bootloader之前写好,并己经被烧写到NANDFlash的。
x00000000开始区域。
3.4.1Bootloader工作原理
Bootloader是引导操作系统的程序,也是开发阶段目标板和PC机的通信工具。
Bootloader一般都放在NANDFlash的起始位置,这样上电后Bootbader的第一个指令被自动执行。
由于BootLoader的实现依赖于CPU的体系结构,因此大多数BootLoader都分为stage1和stage2两大部分.依赖于CPU体系结构的代码,比如设备初始化代码等,通常都放在stagel中,而目通常都用汇编语言来实现,以达到短小精悍的目的。
而stage2则通常用C语言来实现,这样可以实现复杂的功能,而目代码会具有更好的可读性和可移植性。
阶段1和阶段2的工作流程如图9。
图9程序流程图
3.4.2第一阶段
第一阶段的卞要工作是硬件设备初始化,加载BootLoader的stage2,准备RAM空;
拷贝BootLoader的stage2到RAM空间中;
设置好堆栈;
跳转到stage2的C入日点
下面介绍ADS环境下开始制作简单Bootloader的方法.
先建立工程命名为myBoot,定义出程序的基本结构如下:
AREAmvBoot,CODE,READONLY;
声明一个代码段,名称为mvBooL
ENTRY;
程序入口声明,程序的开始执行位置
__ENTRY;
入口名称为_ENTRY
…………;
中间写主要代码
END;
程序结束
在myBoot工程的Settings中做一些设置.首先设置Target/TargetSettings/postLink中选择“ARMfromELF"
。
Linker/ArmLinker/0utput/LinkType选Simple简单连接方式;
ROBase设置为0x30008000代码段连接地址。
实际上ROBASE指定了程序的静态连接地址。
程序真正被执行时所在的内存地址叫做运行地址。
如果连接时用到绝对地址的话运行地址和链接地址保持一致时程序才能正常运行,这种代码叫做与位置有关代码。
如果连接时没有涉及到绝对地址那么连接地址和运行地址不一样程序也可以正常运行,这种代码叫做位置无关的代码.但是Bootloader一开始时被加载在0x00位置开始运行,这会不会和ROBas。
设置地址冲突呢?
实际上是会冲突的,解决冲突的办法就采用位置无关代码(PIC)。
实际上Boodloader的绝大部分代4i最后想让它运行在0x30000800开始的SDRAM单,只有第一阶段代码运行在0x00开始的SRAM单,因此把阶段1用位置无关的汇编代码实现整个程序就正常运行了。
RWBase是数据段的开始位置,如果不指定数据段,就紧接着代码段放置。
在Options->
Imageentrypoint指定代码的入口__ENTRY。
程序的第一步要设置中断向量表。
S3C2410有7种中断,中断入日地址在0x00开始处,每个中断占用4个字节,正好可以放一个跳转指令.程序如下:
bResetHandler;
复位中断,也是整个程序的入口,b指令是根据当前PC进行跳转,因此可以实现位置无关代码引.在ResetHandler中需要做的工作有:
关闭看门狗、关闭所有中断、设置主频、初始化SDRAM、设置中断堆栈,最后搬移代码到SDRAM中。
最后一步跳转到C程序的入口函数main中。
3.4.3第二阶段
这阶段代码用C语言编写,从main函数开始.这个阶段的卞要任务有串日初始化、MMU的初始化、USB初始化、以太网初始化等.Bootloader工作时显示屏可能还没有工作,或者日标板根本就没有显示屏或键盘等设备,因此人机交匀_一般通过串日来实现.因此必须初始化串口,通过串日打印运行信息或者接收用户输入.用串日连接到PC上,用专用或通用的串口软件来接收信息或输入信息。
总结与致谢
本次课程设计所设计的系统具有成本低廉,体积小,功耗低等特点,并且可靠性、可扩展性、同时节省硬件资源。
但同时存在一些不足,本系统中的代码是顺序执行的,运行时间较长。
通过本次课程设计,使我对ARM嵌入式开发有了一定的掌握和理解,巩固了我在《ARM嵌入式系统开发及应用》课程中所学的基本理论知识和实验技能,使我对《ARM嵌入式系统开发及应用》课程有了更深入的了解,熟悉了S3C210的串口的使用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ARM 串口 通信 系统 设计方案