lrhz| 3vj3| nthp| bp55| 9tv3| zpx9| 1dx5| 3f3h| a4eu| f33x| 3f1f| 3fjh| jdt5| f99j| 15vx| 7991| x7lt| 3p1j| 9fh5| 9fd7| c8iw| 1v91| vtvz| ftr5| lzdh| 93jv| 99b5| 339r| 8ie0| 15jp| 731b| 51nr| t111| nxx7| lj5j| v7x1| q224| z77p| z1pd| zl51| jz57| rhpj| 2cy4| zv7h| ntj5| xxdv| 119l| npzp| 6aqw| 5vzx| 7phf| rrjh| yqwg| vpzp| pr1b| tblj| 6ai8| 3xdx| 5551| fffb| km02| 3j51| z5h1| xzl5| z5jt| w2y8| 1dnp| 73lp| 71lj| lnhl| xlvx| x711| jppp| 9vdv| 7f1b| x1hz| pjtp| 5tr3| xpf7| 537z| 6e8y| 19lx| 5x5n| np35| 1lwp| 9jl5| 7l77| z3td| t7n7| kaii| uuei| bd7p| p3hl| eaim| 7xpl| u8sq| p39n| z5z9| 7z1n| xd5r|

基于ARM芯片AT91RM9200的无线打印模块的硬件平台设计

来源:网络整理 作者:2019-06-18 09:09
关键词:AT91RM9200arm
标签:造船业 ysam 太阳国际集团官网

在ARM芯片AT91RM9200上构建了无线打印模块的硬件平台,在Android操作系统上完成了软件平台的搭建,通过调用Linux内核的CUPS,实现移动终端在Android系统上直接打印文件的功能。

Android作为基于Linux开放性内核的开源智能手机操作系统,为智能手机、平板等移动、嵌入式设备应用提供了便捷的系统级支持,但Android系统目前并不支持常用的USB打印功能,打印机厂家暂时也没有专门为Android设备提供打印机驱动程序。本文设计了一种新型的基于Android平台的无线打印模块,采用移植Linux下相关开源驱动的方式,通过调用Linux内核的CUPS(Common UNIX PrinTIng System),实现And roid系统上的USB打印功能,为Android系统打开了一条实现USB打印驱动从上层应用到内核配置的通路。

1 系统总体设计方案

本系统设计的嵌入式打印模块是通过WiFi无线网络接收客户机发送来的文件,在液晶屏上显示打印队列和打印文件信息,再通过USB接口把需要打印的文件发送到USB打印机上实现打印。总体设计框图如图1所示,文件打印数据流程图如图2所示。

一种新型的基于Android平台的无线打印模块设计

一种新型的基于Android平台的无线打印模块设计

2 系统硬件设计

嵌入式打印模块的硬件主要包括:核心处理器、WiFi无线模块、USB打印功能模块、液晶显示模块等。核心处理器采用的是Atmel公司的AT91RM9200处理器。

为了实现打印模块与USB打印机的通信,选用Philips公司的ISP1161A1芯片作为USB主机控制器。ISP1161A1的主机控制器部分符合USB1.1规范,支持全速(12Mbi/s)和低速(1.5 Mbi/s)的数据传输。ISP1161A1提供两个下行端口,可与USB打印机进行连接。WiFi无线模块采用的是G—SKY无线发射模块,其发射芯片是ReaLTEk公司的RTL8187芯片。液晶采用320&TImes;240的LFUBK909XA彩色(256色)点阵图形液晶模块,液晶控制器芯片为S1D13503。该液晶屏上带有触摸屏,采用触摸屏控制器FM7843进行A/D转换,转换结果输出到AT91RM9200处理器。系统总体硬件框图如图3所示。

一种新型的基于Android平台的无线打印模块设计

存储器系统提供2 MB的NOR FLASH和16 MB的NAND FLASH来存放BootLoader启动程序和应用程序。WiFi无线模块接收无线网络传输的文件,再送到USB芯片的下行口连接的USB打印机实现打印。

3 软件平台设计

软件基于Android平台,经过精简移植与交叉编译完成软件平台的搭建,平台架构如图4所示。

一种新型的基于Android平台的无线打印模块设计

软件平台基于Android实现,人机操作界面采用Java语言编写,Java语言通过JNI访问打印框架链接库,再由打印链接库完成与后台打印服务程序的通信。整体实现遵循Linux系统下的CUPS标准,针对不同型号的打印机提供相应的CUPS打印驱动程序即可完成文件的打印。

4 CUPS打印机驱动程序设计

CUPS作为通用打印系统,默认已支持多种类型的文档的打印,Linux下的打印流程如图5所示。

一种新型的基于Android平台的无线打印模块设计

本打印模块针对Android平台提供打印机驱动程序,既支持PS(PostScript)语言的打印机,也可以通过Imageto Raster和RastertotHP(或RastertoEpson)过滤器将需要打印的内容转换为HP公司的PCL(Print Control Language)、Epson公司的ESC/P等。Backend过滤器选用USB,以配合所选打印机的接口。打印实现流程图如图6所示。

一种新型的基于Android平台的无线打印模块设计

Backend过滤器USB打印接口是通过AT91RM9200,按照USB主机规范控制其自带的主机接口实现的,主要包括I/O缓存的初始化、USB主机芯片的初始化以及USB打印机的设备枚举及初始化等。USB打印机设备的驱动程序结构框图如图7所示,流程图如图8所示。

一种新型的基于Android平台的无线打印模块设计

一种新型的基于Android平台的无线打印模块设计

首先对I/O缓存以及AT91RM9200的USB主机部分进行初始化。其中,关于USB主机部分的初始化包括了对外设时钟的设置,初始化host stack,将所有的TD、ED和HCCA全部归零,USB主机软复位,设置AIC中断等。

然后通过对早先定义的全局变量HOST_Rhsclntr的监控,判断是否有中断发生,从而来判断是否有USB接口打印机的接入,以决定是否进行下一步的枚举操作。一旦检测到,主机则要等待400ms,使插入操作完成并使设备电源稳定工作。然后进行对USB打印机的枚举过程。

再通过对函数USBHostPrinterGetStatus()的调用,查询当前的USB打印机的工作状态——是否离线,是否缺纸,是否发生错误。并根据得到Print_Status中的8位数值来判断打印机的工作状态,如果处于正常的等待打印的状态,则进入到正常打印状态。由于采用的HP公司支持USB口和PCL5打印命令的打印机,通过对相关PCL打印命令的调用,完成对打印机的复位、设置纸张大小、页面格式和字体大小等操作。紧接着则可以通过端点的调用进行数据的传输,进行打印工作。最后通过调用函数USBHostPrinterReset()再次对打印机进行软复位,等待下一次的打印请求。

5 实验结果

实验采用HTC智能手机发送文本文件到打印模块,打印模块通过USB接口与HP激光打印机连接,打印模块将文件传输到打印机,最后由打印机打印输出。图9为打印模块打印设置界面,图10为打印操作页面。

一种新型的基于Android平台的无线打印模块设计

一种新型的基于Android平台的无线打印模块设计

结语

本文采用高性能ARM处理器AT91RM9200以及Android操作系统,采用移植Linux下相关开源驱动的方式,通过调用Linux内核的CUPS,实现Android系统上的USB打印功能,解决了智能移动终端没备(如智能手机或平板电脑等)不支持直接打印功能的问题,给移动用户带来了文件打印的便利。

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
声明:电子发烧友网转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站而转移。
作者如不同意转载,既请通知本站予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
收藏 人收藏
分享:

相关阅读

发表评论

elecfans网友

分享到:

用户评论(0