基于MCU和CH375的并口转USB口驱动器的设计

www.elecfans 电子发烧友 bbs.elecfans 电子技术论坛
基于 MCU 和 CH375 的并口转 USB 口驱动器的设计
郑宽磊1,赵娟2,王典洪1,强伟锋3
(1.中国地质大学机械与电子工程学院 武汉 430074; 2.中国地质大学教学实验中心 武汉 430074 北京 100081) 3.北京普析通用仪器有限公司
【摘要】:为解决传统仪器只支持并口打印机的问题,提出了一种基于 CH375 的并口转 USB 口的驱动器的 设计,实现了并行数据到 USB 数据的转换,该驱动器可以方便地移植进智能仪器中,为仪器扩展 USB 接口,并 有望成为一种通用的并口转 USB 口驱动器。 关 键 词:USB 主机、CH375、设备枚举、控制传输 中图分类号:TP302.1 文献标识码:B
Design of LPT to USB Driver Based on MCU & CH375
ZHENG Kuanlei1, ZHAO Juan2, WANG Dianhong1, QIANG Weifeng3
(1.Faculty of Mechanical & Electronic Engineering, China University of Geosciences, Wuhan, 430074,China; 2.Teaching & Experiment Center, China University of Geosciences, Wuhan, 430074, China; 3.Beijing Purkinje General Instrument CO.LTD,Beijing,100081,China)
Abstract:To resolve the issue that many traditional instruments can’t support USB printer, a design of LPT to USB driver based on CH375 is put forward in this paper. The driver can convert parallel data to USB data and can be conveniently transplanted into the instruments, expanding easily USB interface for them. The driver will hopefully become a universal LPT to USB driver. Key words: USB HOST, CH375, Device Enumeration, Control transmission
0、引言
在现代工业控制和研究过程中,人们常常会使用到一些外设接口只有并口的仪器,单一的 老式并口外设决定了要打印仪器分析和测量的数据只能使用传统的并口打印机,同时数据只能 打印而无法通过 Flash 设备存储下来,为此给工业生产与研究也带来极大不便。与此同时传统 的并口打印机,由于其速度较慢,且拔插也不方便,因而逐渐被 USB 打印机所代替,USB 接口 具有即插即用、热插拔以及较高的传输速率,也逐渐成为 PC 机以及一些智能仪器与外设连接 的普遍标准。因此迫切需要设计一种并口转 USB 口的驱动器∗以支持流行的 USB 打印机,基于 此设计开发了一款 USB 打印机驱动器的转接板来支持只有并口外设接口的分析仪器和 USB 打 印机的连接。 该驱动器的主要功能是:接收仪器的打印指令,并将指令转换为指定打印机的指令,使单 片机接收并口数据并发送数据给 USB 打印机达到控制 USB 打印机打印数据。 USB 打印机接口驱动器的设计由硬件部分和软件部分构成, 而硬件部分主要有四部分组成: 电源、MCU 控制器、USB 主控制器。其中:MCU 采用华邦电子生产的
一款可在线升级的标准 8052 单片机 W78E516B,而 USB 主控芯片采用南京沁恒电子生产的一款 USB 总线通用接口芯 片 CH375。
1、USB 主控制器介绍
USB 主控制器 CH375 支持 USB HOST 主机方式和 DEVICE 设备方式。 在本地端, CH375 的 USB 主机方式支持并行接口和串行接口。在主机方式下,CH375 支持各种常用的 USB 全速设 备,外部单片机需要编写固件程序按照相应的 USB 协议与 USB 设备通讯。CH375 芯片在本地 端提供了通用的被动并行接口和点对点的串行接口。并口信号线包括:8 位双向数据总线 D7~ D0、读选通输入 RD#、写选通输入 WR#、片选输入 CS#、中断输出 INT#以及地址输入线 A0。 通过被动并行接口,CH375 芯片可以很方便地连接到 W78E516B 系统总线上。 CH375 芯片内部集成了 USB 接口 SIE、数据缓冲区、被动并行接口、串行接口、命令解释 器、控制传输的协议处理器、通用的固件程序等。USB 接口 SIE 是 USB 主机方式和 USB 设
基金项目:科技部“十五”国家科技攻关项目(2004BA210A06) 《分析仪器产业化应用示范》
www.elecfans 电子发烧友 bbs.elecfans 电子技术论坛
usb转换
备方式的一体式 SIE, 用于完成物理的 USB 数据接收和发送, 自动处理位跟踪和同步、 NRZI 编 码和解码、位填充、并行数据与串行数据之间的转换、CRC 校验、事务握手等。数据缓冲区用 于缓冲 USB 接口 SIE 收发的数据。被动并行接口用于与外部单片机交换数据。串行接口用于 代替被动并行接口与外部单片机交换数据。命令解释器用于分析并执行外部单片机提交的各种 命令。控制传输的协议处理器用于自动处理常用的控制传输的多个阶段,简化外部固件。 CH375 与单片机的连接框图如图 1 所示:
ISP 计算机 CTRL 或 单片机 仪器 D[7-0] DSP 等 并口 BUSY D [7-0] INT# CS# A0 RD# WR# USB 主控制 器 D+ D- U 盘等 USB 打印机
图 1. 系统原理框图
2、系统硬件设计
系统硬件部分最重要的两部分单片机控制部分、USB 主控制器部分,电源部分较为简单, 可以采用开关电源、电源适配器直接得到+5V 直流电压,出于操作方便以及设计简单考虑,我 们使用了性能良好的电源适配器,其优点是体积小,交流输入电压 100~240V,适用面广,其直 流输出电压稳定,一般为 5.1V,完全能满足该驱动器的设计要求。 CPU USB主控芯片
VCC U1 8 VCC SO 7 R1 10k 3 4 RESET SI WP SCK VSS CS X25045 REST U2 2 5 6 1 X_SO X_SI X_SCK X_CS ERROR BUSY ISP RES_375 CTRL INT0 PE DIR VCC Y1 C12 30P 24M C11 30P X1 X2 2 3 4 5 6 7 8 9 15 14 17 16 35 21 20 P10 P11 P12 P13 P14 P15 P16 P17 /INT1 /INT0 T1 T0 EA/VP X1 X2 RESET RD WR RXD TXD ALE/P /PSEN 11 13 33 32 P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27 43 42 41 40 39 38 37 36
D0 D1 D2 D3 D4 D5 D6 D7
U3 15 16 17 18 19 20 21 22
CH_A0 8 RD 4 WR 3 CH_CS 27 INT0 1
VCC VCC V3 TXD GND GND VDVD+ RSTI X0 28 9 5 12 23 11 10 C7 VCC 2 RES_375 103 14 Y2 13 C10 30P 24M C9 30P D3 C6 103
R2 3R3 C8
D0 D1 D2 D3 D4 D5 D6 D7 A0 RD WR CS INT RST RST
D1 D2 10uF/16V CN1 R3 3R3 DD+ R4 3R3 D4 1 2 3 4 USB
24 25 26 27 28 29 CH_A0 30 CH_CS 31 PR_CS
25 26
X1
REST 10 RD WR 19 18
D0~D7 通过245 驱动
并口
W78E516BP-40
图 2 系统硬件电路图
系统设计引入看门狗定时复位芯片 X5045,主要完成上电复位控制、看门狗定时器及降压 管理功能。单片机 W78E516B 是具有带 ISP 功能的 Flash EPROM 的低功耗 8 位微控制器;ISP 功能可用于固件升级, 连到并口一脚由上位机程序和 W78E516B 的 4K LDROM 中的 ISP 程 ISP 序共同完成单片机的 64K APROM。 CH375 芯片的 RD#和 WR#可以分别连接到单片机的读选通 输出引脚和写选通输
出引脚。CS#可以直接连到 P2 口的除 P2.0 外的任一脚。INT#连接到单片 机的中断输入引脚,低电平有效。当 CS#和 RD#以及 A0 都为低电平时,CH375 中的数据通过 D7~D0 输出; CS#和 WR#以及 A0 都为低电平时, 当 D7~D0 上的数据被写入 CH375 芯片中; 当 CS#和 WR#都为低电平而 A0 为高电平时,D7~D0 上的数据被作为命令码写入 CH375 芯片 中。其他 IO 口,如 BUSY 信号连接到仪器的打印并口,CH375 主要配合单片机完成 USB 传输 协议的解释, 识别 USB 外设, 完成对 USB 打印机枚举, 同时接收单片机发来的数据发送给 USB 打印机;而单片机主要协助 CH375 完成 USB 传输协议的解释,实现并口与 USB 口之间的数据 通信,一方面接收仪器通过并口发送来的数据,另一方面通过与 CH375 通信完成 USB 打印机 的枚举后发送数据到 USB 打印机。
3、系统软件设计
单片机与 CH375 的通信主要靠单片机给 CH375 发命令和数据来完成的,而 CH375 给出了
www.elecfans 电子发烧友 bbs.elecfans 电子技术论坛
许多常用命令以及操作状态的代码,比如:从 USB 中断的端点缓冲区读取数据块命令 CMD_RD_USB_DATA , 向 USB 主 机 端 点 的 发 送 缓 冲 区 写 入 数 据 块 命 令 CMD_WR_US B_DATA7 等,这样就可以将这些命令做成函数,通过函数实现该命令,在编写其他函数时就可 以直接调用这些命令函数。单片控制主程序主要三部分组成:第一、初始化看门狗、单片机及 CH375;第
二、复位 USB 打印机,完成打印机枚举;第三、发送数据给打印机。系统主程序流 程图如图 3 所示:
图 3 系统软件主程序流程图
图 4 USB 打印机枚举初始化流程图
打印机驱动器上电,程序开始执行,首先对硬件进行初始化,硬件初始化包括单片机的看 门狗初始化,调用函数 watchdog_init()设置喂狗参数来实现,以及单片机 IO 口的初始化;然后 对 CH375 进行复位,使用命令函数 set_usb_mode(6)设置 CH375 主机工作方式。接下来,系 统开始对打印机进行初始化,完成任何一个 USB 设备插入主机接口后必须经过的枚举过程。 3.1 USB 打印机的枚举初始化过程 (1)主机检测设备,发出复位。通过 CH375 提供的 USB 主机操作状态代码 USB_INT_CO NNECT 检测是否有 USB 设备连接事件,一旦检测到,主机等待 400ms 后,使插入操作完成并 使设备电源稳定工作,并获得该打印机是全速设备还是低速设备,并向 USB 信号线的 D+和 D输出低电平,复位 USB 打印机。 (2)设备默认状态。集线器向端口持续 10ms 的复位信号,复位信号撤销,打印机设备处在 默认状态,设备寄存器及状态已被复位,设备可以使用默认地址 00H 产生响应。 (3)地址分配。当主机接收到有设备对默认地址 00H 进行响应的时候,主机给设备分配一个 唯一的地址,以后设备只对该地址进行响应。 (4)读取设备描述符。主机读取 USB 打印机的设备描述符,确认 USB
设备的属性。主要通 过 CH375 提供的命令代码 CMD_GET_DESCR 获取描述符。一旦数据传输完成后,将获取的描 述符数据从 CH375 中读出到单片机的 RAM 缓冲区中,并返回描述符长度。然后使用命令代码 CMD_SET_ADDRESS 和 CMD_SET_USB_ADDR 分别对 USB 设备端和主机端设置地址。 (5)读取完整的配置描述符,配置 USB 设备。一旦地址设置完成,CH375 就开始获取完整 的配置描述符,完整的配置信息包括配置、接口、接口、端点和设备类及厂商定义的描述符, 在打印机设备返回给 CH375 的配置描述符的总长不超过 64 字节时,我们同样可以直接使用 CMD_GET_DESCR 命令来获取配置描述符,但长度一旦超过 64 字节,就需要外部单片机通过 ISSUE_TOKEN 命令自行处理控制传输。该命令使 CH375 发出令牌,执行事务。
www.elecfans 电子发烧友 bbs.elecfans 电子技术论坛
控制传输的建立阶段:设置主机端点的发送器的同步触发标志为 0,发送 DATA0,将 8 个 字节的请求数据写入输出缓冲区, 发出 ISSUE_TOKEN 命令执行事务, 向默认端点 0 发出 SETUP 令牌。如果事务执行成功,则控制传输的建立阶段完成。 数据阶段: 设置主机端点的接收器的同步触发标志为 1, 接收 DATA1, 执行 ISSUE_TO- KEN 命令向默认端点 0 发出 IN 令牌, 然后从 CH375 的端点缓冲区读取描述符, 读出到单片机的 RAM 缓冲区中, 读出的最前 8 个字节的数据判断实际描述符的字节数, 如小于 64 字节可以一次读完, 大与 64 字节则多次读取。 状态阶段:设置主机端点的发送器的同步触发标志为 1,发送 DATA1,将 0 长度的状态数 据写入输出缓冲区,执行 ISSUE_TOKEN 命
令,向默认端点 0 发出 OUT 令牌。单片机在等待 事务完成,获取中断状态,并分析中断状态,如事务执行成功,则状态阶段完成。 至此,完整的设备描述符的控制传输完成,主机读取描述符并分析该设备的端点、接口以 及其他配置信息,主机使用 CH375 提供的命令代码 CMD_SET_CONFIG 给设备确定一个配置 值,设备就完全处于设置完成状态。从设备的角度来讲,打印机已经准备就绪,枚举过程完成。 最后就是发送数据了,一旦 CTRL 信号置低,单片机立即响应仪器中断接收数据,并发送 到 CH375 的数据缓冲区,然后再由 ISSUE_TOKEN 命令请求 CH375 将接收到的数据逐字节发 送给 USB 打印机的接收端点。 自此,软件设计路程完成,以下是 CH375 读取 USB 打印机配置描述符的源程序: unsigned char get_full_descr(unsigned char *cBuffer) {unsigned char code Descr_Buf[8] = {0x80, 0x06, 0x00, 0x02, 0x00, 0x00, 0xff, 0x00}; unsigned char ss, *pBuf = cBuffer; unsigned int len, nLen = 0xFFFF; tog_send = 0; tog_recv = 0; //控制传输的建立阶段 toggle_send(tog_send); /*0 写入读描述的命令字*/ wr_usb_data(8, Descr_Buf); /*8 个字节的请求数据写入输出缓冲区*/ ss = issue_token(0x0D); /*向默认端点 0 发出 SETUP 令牌*/ //控制传输的数据阶段 if (ss == USB_INT_SUCCESS) //正常 { while(1) { tog_recv = !tog_recv; //切换接收 toggle_recv(tog_recv); //1 ss = issue_token(0x09); /*主机端点接收*/ if(ss == USB_INT_SUCCESS) { len = rd_usb_data(pBuf); if(nLen == 0xFFFF) /*读出的最前 8 个字节的数据*/ { nLen=pBuf[3]*0x100 + pBuf[2]; //配置描述符返回的整个数据长度 if(nLen > 64) nLen = 64; } if(nLen <= 8) break; /*已经将最后的 8 个数据读出*/ nLen -= len; /*减去上一次读出的数个数*/ pBuf += len; if(nLen == 0) break; tog_send = !tog_send; //切
换发送 toggle_send(tog_send); //1 } else break; } } //控制传输的状态阶段 toggle_send(1); //最后必须为 1
www.elecfans 电子发烧友 bbs.elecfans 电子技术论坛
wr_usb_data(0, Descr_Buf); /*结束,发送 0 个字节的数据*/ issue_token(0x01); //控制传输完成 return(USB_INT_SUCCESS) ; }
4、结论
本文作者创新点:首次提出并使用国产 USB 主控芯片 CH375 实现了并口到 USB 接口的转 换,为传统分析仪器轻松简单的扩展了 USB 接口,使得仪器通过该驱动器可以直接支持 USB 打印机外设。项目所验证的几款惠普 PCL 语言的打印机中,如 HP5748、5652、1022、HP7268 和 7458,这五款打印机均能正常完成仪器并口发送数据给 USB 打印机打印。 此外, 考虑到 CH375 内置了处理 Mass-Storage 海量存储设备的专用通讯协议的固件, 只需 对枚举初始化程序稍加改动,即可方便的支持 U 盘读写,存储仪器的试验数据。同时,配合上 位机驱动程序的开发,该并口转 USB 口的驱动器有望成为一种通用的并口转 USB 口转接器。 参考文献: [1] 杨锐,赵剡. ARM 系统设计及其 USB 主机扩展方案[J].微计算机信息.2005.3.[P12-13] [2] 杨金岩,郑应强,张振仁.8051 单片机数据传输接口扩展技术与应用实例[M].北京:人民 邮电出版社,2005:[64~92] [3] 周立功等.PDIUSBD12USB 固件编程
与驱动开发[M].北京:北京航空航天大学出版社,2002 [4] 张弘.USB 接口设计[M].西安:西安电子科技大学出版社,2002:[50~67] 作者简介: 郑宽磊,男,1981年11月出生,中国地质大学(武汉)机电学院通信与信息系统专业硕士研究生, 主要从事ARM嵌入式系统研究和开发,USB系统接口设计与研究等领域。 赵 娟,女,1979年8月出生,中国地质大学(武汉)教学实验中心,主要从事USB接口设计研究。 王典洪,男,1957年9月出生,中国地质大学机电学院院长,教授,博导,主要从事计算机图像 处理与图像通信,智能控制与智能仪器等领域的研究。 强伟锋,男,1978 年 8 月出生,北京普析通用仪器有限公司,高级工程师,主要从事 USB 接 口设计,嵌入式系统设计开发。
文 章:基于
MCU 和 CH375 的并口转 USB 口驱动器的设计
姓 名:郑 宽 磊 :430074 通信地址:武汉市中国地质大学研究生院硕 1200318 班 E-mail:zhengkuanlei@163 中图分类号:TP302.1 文献标识码:B 基金资助:科技部“十五”国家科技攻关项目(2004BA210A06) 《分析
仪器产业化应用示范》

本文发布于:2024-09-22 01:35:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/380532.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   打印机   设备   仪器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议