采用S3C24449芯片在TQ2440开发板实现串口扩展

随着     计算机   网络的发展,以及现场总线等技术的广泛使用,串口通讯在各种场合的应用越来越广泛。在集中控制系统中,需要在多个串口间进行通信,而在一般计算机上,只有1~3个串口,为了实现对多点的控制,需要对串口进行扩展。

    ARM   芯片是目前在嵌入式系统中应用比较广泛的一种芯片,由于可以运行操作系统,以及拥有包括LCD、串口通讯、网络通讯、存储芯片等大量外围     接口芯片   的支持,使得ARM广泛应用于检测、通讯、控制等领域。

本文以ARM920T核的S3C24449芯片作为微控制器,在TQ2440开发板进行串口扩展,利用开发板上的系统总线     接口   和通用输入输出接口分别与扩展串口相连,达到同时与多台串口设备并行通信的目标。

1、硬件介绍

1.1异步通信芯片——TL16C554A

TL16C554A含有4路异步通信单元(AsynchronousCommunica  TI onsElementACE),每路ACE均可接收外围设备的串行数据,并将其转换为并行数据供     CPU   使用,也可将CPU的并行数据转换为串行数据发送到外围设备。

TL16C554A引脚如图1所示。各主要引脚的功能说明如下:A0—A2用于选择片内寄存器;D0—D7进行数据传输;IOR和IOW进行读写;CSA,CSB,CSC,CSD用于选定具体串口;XTAL1,XTAL2可接     晶振   或外部     时钟   信号;INTA,INTB,INTC,INTD为4个独立外部中断信号;RXA,RXB,RXC,RXD:串行接收数据;TXA,TXB,TXC,TXD:串行发送数据。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

1.2系统总线接口、GPIO接口

TQ2440开发板以S3C2440芯片作为控制器,主频400MHz,外扩64M内存,256M闪存,并集成了多种接口,本设计中使用开发板上的系统总线接口与GPIO(通用输入输出接口)和TL16c554A相连。

1.2.1系统总线接口

本开发板上的系统总线接口中共包含8根地址线(A0~A6,A24),16根数据线(DATA0~DATA15),4个中断,4个片选等信号,该总线接口集成了IDE所需的所有引出点,方便用户扩展,接口     电路   如图2所示。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

1.2.2GPIO接口

GPIO是通用输入输出口的简称,本开发板带有一个40     Pi   n2.0mm间距的GPIO接口,如图3所示。不仅包含很多富余的GPIO引脚,还包含了一些其他CPU引脚,如     AI   N0~AIN3,CLKOUT等。如SPI接口、     I2C   接口、     LED   1~LED4(实际就是GPB5~GPB8),它们其实也是GPIO,不过是以特殊功能接口来标称定义的,这些都可以通过相应的CPU     寄存器   来设置更改它们的用途。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

2、硬件设计

在硬件设计中,将TQ2440开发板扩展口的地址线ADDR0,ADDR1,ADDR2与16C554A的A0,A1,A2直接相连,TL16C554A芯片A0,A1,A2的不同的组合代表芯片内不同的寄存器。

在与TL16C554A的连接中,由于TL16C554A只有8位,只需TL16C554A的D0~D7和开发板的DATA0~DATA7相连。读写信号直接相连(开发板的nOE、nWE分别与串口的IOE、IOW直连)。由于16C554芯片启动要有一定的宽度的脉冲,可以从GPA12输出一定的宽度的脉冲来完成。

每片16C554A可以将数据总线上的数据和4个串行端口的数据进行相互的转化,两片16C554A芯片共有8个串行口,通过3根地址线ADDR4,ADDR5,ADDR24经过74LS138选择8个串口中的任意一个。

因为方案采用中断方式,所以将NSEL置高位,即允许芯片中断。16C554A有INTA、INTB、INTC、INTD4个中断线,第一片扩展串口与系统总线的EINT1,EINT2,EINT5,EINT6相连,第二片扩展串口与GPIO中的EINT11,EINT13,EINT15,EIN39中断相连,使得任一片芯片的任意的端口都能产生中断。

S3C2440的A0,A1,A2,A4,A5,A24通过不同组合可以选择8个不同的端口。nGCS5与74LS138译码器片选脚相连,根据S3C2440对地址空间的定义,这样就确定了第一片16C554A扩展芯片4个端口的访问地址为0X28000000,0X28000010,0X28000020,0X28000030,第二片16C554A扩展芯片4个端口的访问地址为0X29000000,0X29000010,0X29000020,0X29000030,根据端口基地址就可以确定片内的各个寄存器地址。具体连接如图4所示。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

3、驱动程序移植

软件设计主要是为设备编写驱动程序。设备驱动是介于硬件和操作系统之间的软件接口,主要功能包括:探测和初始化设备;从设备接收数据并提交给内核;从内核接收数据送到设备;检测和处理设备错误。

串口驱动程序从上到下分为4层:终端设备层、行规程、串口抽象层、串口芯片层。其中,串口芯片层与具体的芯片相关,主要是向串口抽象层提供串口芯片所用的资源,还进行一些与芯片相关的设置。

TL16C554A扩展串口芯片属于标准串口,内核的串口驱动程序对它支持它的驱动程序就是     Linux   内核代码中的driver/seria/8250.c.入口函数是serial8250_init,它用于向串口抽象层提供注册串口的物理信息。串口的物理信息主要有两类:访问地址和中断号。所以只要设置好这两类物理信息,就可以驱动扩展串口了,图5为驱动程序移植流程。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

3.1构建扩展串口的数据结构

串口的物理信息存储在内核源程序arch/arm/plats3c24xx/common-smdk.c中,所以主要工作是在commonsmdk.c源文件中增加三段代码:

1)增加头文件

源程序中要包含头文件linux/serial_8250.h,用于告诉编译器使用8250.c作为扩展串口的源程序;

2)增加串口的物理信息

在common-smdk.c文件中增加8个元素的structplat_serial8250_port结构数组,并加入数据项,如每个串口使用的物理地址和中断号等信息,使系统启动后能找到串口。下面以第1片TL16c554A的第1个串口CSA为例说明如何在源程序中添加数据结构:

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

3)加入内核设备列表中

把串口设备(s3c_deviee_8250代表TL16c550A芯片)加入到内核的platform_device结构中

sta  TI cstructplatform_device_initdata*smdk_devs[]={&s3c_device_8250,};

3.2增加开发板代码使串口可用

主要修改drivers/serial/8250.c文件,使BANK5以8位的位宽访问TL16c554A芯片,并指定芯片的中断触发方式。

1)增加头文件asm/areh-s3c2410/regs-mem.h,定位TL16c554A所在的地址空间;

2)设置存储控制器的BANK5的位宽(8位)

在serial8250_init(void)初始化函数中把存储控制器的位宽寄存器设为0X22011110;

3)指定中断触发方式

因为TL160554A的中断信号INTA、INTB、INTC、INTD为高电平有效,所以需将INTA、INTB、INTC、INTD上升沿触发,在调用中断函数req-uest_irq前应设置中断标志为IRQF_TRIGGER_RISING。

3.3增加内核配置项

在内核源代码的driver/serial/Kconfig中增加config条目CONFIG_SERIAL_EX     TE   ND_S3C24XX,内核编译时选定该选项可以把驱动程序编译进系统中。

4、     测试   扩展串口

测试的工作包括编译内核、在根文件系统中增加设备文件、修改系统初始化脚本、测试扩展串口几个步骤。图6为串口测试流程图。

 采用S3C24449芯片在TQ2440开发板实现串口扩展_设计制作_光电显示

1)配置、编译内核

配置内核时增加配置选项CONFIG_SERIAL_EXTEND_S3C24XX,执行“makeuImage”命令,编译内核。

2)修改根文件系统

在Linux系统中通过设备文件来访问具体的物理设备,故使用mknod命令,增加ttyS0,ttyS1,…,ttyS7设备文件,分别对应两片TL16c554A的8个串口。命令格式如下:

#mknod/dev/ttyS0c464

3)修改配置文件

在/etc/inittab配置文件中添加ttyS0::askfirat:-/bin/sh

4)测试

把第一个串口与主机相连,设置U-Boot的启动参数为:noinitrdroot=/dev/mtdblock2init=/linuxrcconsole=ttyS0,重新启动开发板,就能在超级终端下看到linux系统启动信息了。

5、结束语

本文提供了在原有TQ2440开发板中扩展8个串口,采用中断服务的方案,提高了ARM9系统运行效率。在此基础上可以进一步扩大,将串口扩展到12个、16个或者更多。

责任编辑:gt

36
193
0
62

相关资讯

  1. 1、2013华语银幕劳模榜出炉任达华居首周秀娜上位598
  2. 2、王宝强离婚案告终,马蓉需归还9台豪车8栋别墅?4246
  3. 3、《粉红女郎》曝诱惑篇特辑阿雅“色诱”范逸臣826
  4. 4、如何融入《蜘蛛侠3》?章鱼博士演员透露,17年后回归的感想2051
  5. 5、《他在逆光中告白》再更新,厉总主动当保镖,安全感爆棚!1519
  6. 6、狭路相逢!孙俪、杨紫和赵丽颖新剧或将撞档上线,谁能赢?2694
  7. 7、创投会趋同文本审美疲劳?不怕,这里有强势逼人的生命力1555
  8. 8、23岁凭偶像剧走红,为拍文艺片消失数年,39岁再翻红丈夫喜感3092
  9. 9、《虎胆龙威5》发特辑布鲁斯威利斯霸气归来954
  10. 10、《人潮汹涌》凭口碑逆袭,但这部质量更好的特效大片却输给了偏见3302
全部评论(0)
我也有话说
0
收藏
点赞
顶部