基于S3C2410的嵌入式串口通信设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于S3C2410的嵌入式串口通信设计
刘智国 张海春
摘要: 本文通过基于S3C2410的嵌入式串口通信的实现,按照嵌入式系统的软、硬件结构组成,较为详细地介绍了串行通信的硬件电路和软件实现方法。该系统的硬件主体设计以三星
S3C2410处理器为核心控制器件,通过与计算机串口间的连接以及单片机通信软件的分层设计,实现在ARM 平台上访问外部设备的基本功能。
关键字: 嵌入式系统;S3C2410;串口通信
中图分类号: TP368 文献标识码:B
Design of Embedded Serial Communication Based on S3C2410
Liu Zhiguo Zhang Haichun
Abstract: In this paper, based on the S3C2410 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 system hardware design to the main processor as the core of Samsung S3C2410 control devices, with the computer serial port connection between the microcontroller and communications software layered design, and the ARM platform access to external device's basic functions.
Keywords: embedded system;S3C2410 ; serial communication
1 S3C2410硬件平台简介
S3C2410是韩国三星公司生产的新一代高性能微处理器,它是基于ARM920T内核的16/32位RISC处理器,主要应用于嵌入式系统中。
S3C2410拥有强大的数据处理能力,又有着低成本,低功耗等优点,在各种手持及移动设备上的应用越来越广泛,基于其平台的程序功能也越来越复杂。于是,在其平台上架构多线程的操作系统已成为越来越多系统设计者的诉求,本文介绍多线程在S3C2410上的具体实现过程。
2 系统结构分析
串行端口的本质功能是作为CPU和串行设备间的编码转换器,一般微机内都配有通信适配器,使计算机能够与其他具有RS 232C 串口的计算机或设备进行通信。本系统主要目的是实现宿主机与目标机之间的近距离串行通信,采用的宿主机是Intel X86 架构的Red Hat Linux 9.03 环境PC 机,而目标机是ARM 架构的开发板。
本系统中目标机开发板的内核采用的是三星的S3C2410 ,该开发板采用核心板加底板的模式,核心板接口采用DIMM 200 标准连接器,工作非常可靠,可稳定运行在203 MHz 的时钟频率下。其外设非常丰富,功能强大,完全可以满足设计需要。串口线采用常用的RS 232C 型 接口模式,能实现计算机与开发板间的数据传输与控制。
3 系统硬件结构原理
串行通信可以在DOS 或Windows环境下进行,可以用汇编或高级语言编写通信程序, 本文介绍如何在Linux操作系统下来实现串口间的通信。
在串口通信的实现过程中,要保证数据传输的可靠性和稳定性, 其硬件设计是必不可少的, 本文中选用S3C2410 芯片作为核心器件。S3C2410芯片是SAMSUNG公司16/32位的RISC处理器,采用ARM920T内核,内部具有2 个独立的UART 控制器以及分开的16 kB的指令Cache 和16 kB 数据Cache ,每个控制器支持的最高波特率可达到230.4 kb/s 。S3C2410 芯片的这些特点,为实现在Linux 操作系统下计算机与开发板间的串口通信提供了可靠的保证。基于
S3C2410 的嵌入式串口通信的硬件结构原理如图1所示。
宿主机(计算机系统)目标机(开发版)
图1 系统硬件结构原理图
宿主机即计算机系统中,在Linux操作系统下编写好串口通信的程序,通过JTAG接口模块下载至目标机即开发板中,在相应的软件控制命令下,通过串行接口线即可实现宿主机与目标机间数据的发送和接收。目标机中电源模块提供了开发板系统工作所需的正常电压,各种数据信息可以通过液晶显示模块及时显示出来,还可以通过键盘控制模块来实现对目标机操作的控制,外扩存储器模块可以由FLASH或SDRAM构成,当然作为一个完整的系统,还必须配有其他外围电路,以保证系统的正常工作。
4 软件实现
串口通信软件的设计是系统成功运行的关键, 如何保证通信的效率、可靠性、实时性以及节约系统的资源是设计者关心的问题,因此通信协议的定义、软件开发的结构设计、程序开发工具的选择在系统设计中极其重要。PC 端串口通信程序的开发是基于Windows环境面向对象的设计方法, 开发环境选用VC++,实现的方法有多种, 对此作介绍的文献也较多, 在此不详述。对于单片机端的串口通信程序, 有文献介绍基于汇编语言的程序框架, 但基于分层结构的C 语言实现却少有介绍。下面将具体介绍在Keil C51 中, 分层结构框架下串口全双工通信程序的设计与实现。
4.1 通信协议
基于串口的通信模式有同步通信和异步通信两种, 这里采用的是异步串行通信。在通信过程中, 单片机应处理以下问题: (1) 识别命令。PC 机将命令传送给单片机, 单片机能够识别不同的命令而且根据不同的命令内容完成不同的操作。(2) 识别数据。单片机能识别附加在命令后的数据, 传送数据的最大位数由设置的缓冲区大小决定。(3) 出错处理。包括识别无效命令和处理通信错误。当单片机接收到系统没有定义过的命令, 或者收到的命令不符合预先定义的格式时, 它应该做出响应, 向系统报错并能进行错误处理, 错误类型编号应事先定义。(4) 正确应答。当单片机系统接收到一条没有通信错误且符合通信协议的信息时, 应根据所接收的命令进行相应操作, 并把操作结果返回PC 机, 如发一个“OK”信息以示确认。
PC 机应处理的问题: (1) 采集单片机发送的数据,如某设备模块的状态信息; (2) 接收单片机的正常响应和错误响应信息, 若是错误响应信息, 应根据错误类型予以处理。由于控制的设备模块可能有多个, 通过对设备模块统一编址, 给不同的设备设置唯一的16位地址加以区分。这样在PC 机和单片机进行数据传送时, 双方能够识别数据的来源及需控制的对