- 相关推荐
USB总线接口芯片CH371及其应用
摘要:CH371是一种新型USB通用总线接口芯片。利用该芯片可在不了解任何USB协议或固件程序甚至驱动程序的情况下,轻松地将并口或串口产品升级到USB接口。文中介绍了该接口芯片的主要特点和引脚功能,给出了CH371与其它总线进行接口的几种应用电路,同时给出了CH371与MCS-51单片机的接口程序。关键词:USB 总线接口芯片 CH371 单片机
1 引言
CH371是一种USB总线通用接口芯片。该芯片具有8位数据总线以及读、写、片选控制线和中断输出,可以方便地挂接到单片机、DSP、MCU等控制器的系统总线上;在计算机系统中,通过CH371的配套软件可提供简洁易用的操作接口,从而使其与本地端的单片机通讯就如同读写硬盘中的文件一样简单。由于CH371屏蔽了USB通讯中的所有协议,因而可在计算机应用层与本地端控制器之间提供端对端的连接。在不需要了解任何USB协议或者固件程序甚于驱动程序的情况下,就可轻松地将并口、串口产品升级到USB接口。
(范文先生网www.fwsir.com收集整理)
CH371的主要特点如下:
●屏蔽了USB协议,可在计算机应用层与本地端之间实现端对端的连接。
●具有单向数据流和请求加应答两种通讯模式,并支持伪中断。
●可自动完成USB配置过程,完全不需要本地端控制器作任何处理。
●采用标准的USB1.1接口,即插即用,D+引脚内置上接电阻。
●内置4个端点,支持USB的控制传输、批量传输、中断传输。
●带有通用Windows驱动程序,可提供设备级接口和应用层接口。
●具有通用本地8位数据总线,可用4线控制读选通、写选通、片选输入和中断输出。
●占用16个地址,可选择直接地址方式或者复用地址方式。
●内置输入输出缓冲区,能以中断方式通知本地端控制器传输数据。
●内置I2C主接口,因而应用层可以直接读写外挂的I2C从设备。
●在主控方式下可以提供16根据输入信号线或12根独立控制的输出信号线。
●内置上电复位电路,可提供高电平有效复位输出和低电平有效复位输出。
●内含可选的看门狗电路Watch-Dog,能为本地端控制器提供监控。
●具有DIP28、SOP28、DIP24、CHIP等多种封装形式。
2 引脚功能
CH371的引脚排列如图1所示,表1所列是其引脚功能。
表1 CH371的引脚功能
28脚封装
的引脚号
24脚封装
的引脚号
引脚名称
类 型
引 脚 说 明
28 24 VCC 电源 电源正端 12 9 GND 电源 接地 14 11 XI 输入 晶体振荡输入端,带偏置电阻 13 10 XO 输出 晶体振荡反相输出端 10 7 D+ 双向 USB D+数据线,内置上拉电阻可控 11 8 D- 双向 USB D-数据线 9 6 OFF 输入 用于关闭D+上位电阻,高有效,带下拉 2215 1912 D7D0 双向 8位双向数据总线,带上拉,可直接输入和独立控制输出 4 4 RD 输入 读选通输入,低有效,带上拉,同时用于看门狗的清除输入 3 3 WR 输入 写选通输入,低有效,带上拉 27 23 CS 输入 片选输入,低有效,带下拉 2 2 ALE 输入 地址锁存使能,高有效,带上拉,在下降沿可锁存数据总线的复用地址 1 1 INT 输出 中断输出,传输成功,低有效 58 5部分支持 A3A0 双向 4位地址输入线,带上拉,可直接输入和独立控制输出 24 21 SCL 输出 I2C接口时钟线 23 20 SDA 双向 I2C接口数据线,开漏输出,带上拉 25 22 RST 输出 上电复位和看门狗复位,高有效 26 不支持 RST 输出 上电复位和看门狗复位,低有效3 应用
3.1 与USB总线的连接
图2是CH371与USB总线的接口连接电路,CH371芯片可以直接使用USB总线的5V电源。电容C3和C4用于电源退耦;将电阻R1和R2串接在CH371与USB总线之间可进行阻抗匹配;晶振X1、电容C1和C2用于CH371芯片的时钟振荡电路。CH371芯片的SCL和SDA信号线可以直接连接I2C接口的从设备,如连接24COX器件以用来存储系统断电后不能丢失的重要数据,也可以存储身份识别数据、记费数据等,由于24COX中的数据只有计算机应用层才能够存取。
3.2 与单片机的接口电路
CH371芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP和MCU。图3所示是CH371与MCS-51系列单片机的接口电路,CH371可通过D7~D0、RD、WR、CS、ALE直接挂接到AT89C51的系统总线上。连接ALE而不连接A3~A0则采用复用地址方式,连接A3~A0而不连接ALE则采用直接地址方式。当采用复用地址方式时,CH371的A3~A0脚空闲,此时可以参考主控方式将A3~A0用于LED驱动或状态输入等;当采用直接地址方式时,应该将CH371芯片的ALE引脚悬空或者接高电平,然后通过A3~A0直接输入地址。该电路中,CH371可向AT89C51提供上电复位信号RST。CH371的中断输出INT连接到U2的外部中断INTO,反相器U5用于简单的地址译码,SRAM器件62256的地址为8000H-FFFFH,CH371的地址为0000H-7FFFH(实际只需要16个地址)。
3.3 主控方式应用
图4是CH371在主控方式下的应用电路。该电路实际是基于CH371的主控方式设计的8通道数据采集器。可以看出:包括CH371在内,该电路只用到了三个集成电路,并且不需要任何单片机、DSP、MCU等控制器。CH371芯片的双向引脚A3~A0应该设置为输出,其中A3用于以低电平启动模数转换,A2~A0用于选择采集通道,双向引脚D7~D0应该设置为输入,用于输入采集到的结果,CS、ALE用于输入采集状态。实际电路应该采用精确的参考电压,并添加辅助电路(如电源退耦电容等)。另外,也可以用自带多通道选择器的模数转换芯片来代替U6和U7,如8通道AD芯片MAX158等。
3.4 与单片机的接口程序
下面是U2(MCS-51单片机)与U1(CH371)的接口参考程序:
;* * * * * * * * * * * * * * * * * * * * *
;需要主程序定义的参数
;CH371_PAGE EQU 00H;CH371所在的页面地址,地址译码后自动片选
;CH371_SYSTEM EQU 02H;CH371系统功能设定寄存器的地址偏移
;CH371_CONFIG EQU 02H;CH371设备配置信息寄存器的地址偏移
;CH371_INT_SET EQU 06H;CH371中断数据设定寄存器的地址偏移
;CH371_STATUS EQU 06H;CH371传输状态信息寄存器的地址偏移
;CH371_LENGTH EQU 07H;CH371数据长度寄存器的地址偏移
;CH371_BUFFER EQU 08H;CH371O数据缓冲区的起始地址偏移
;SAVE_STATUS DATA 29H;保存传输状态信息,根据需要可选
;SAVE_LENGTH DATA 2AH;当前数据缓冲区中的长度,用于保存下传长度
;SAVE_BUFFER DATA 30H;数据缓冲区,用于保存接收到的下传数据
;* * * * * * * * * * * * * * * * * * * * *
;初始化子程序
;USE:ACC,DPTR
CH371_INIT:MOV DPH,#CH371_PAGE
;CH371所在的页面地址,地址译码后自动片选MOV DPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
图3
MOV A,#OFH
MOVX @DPTR,A;置上传数据长度寄存器为15,暂时没有数据上传
CLR A;尚未有数据下传
MOV SAVE_LENGTH,A;保存下传数据长度
SETB ITO;置外部信号为下降沿触发
CLR IEO;清中断标志
SETB PXO;置高优先级
SETB EXO;允许中断
RET
;上传数据子程序
;ENTRY:RO指向存放了准备上传数据的缓冲区,R7准备上传的数据长度0至8
;USE:ACC,B,R0,R7,DPTR
CH371_UPLOAD:MOV B,R7;将数据长度暂存到B中
MOV DPH,#CH371_PAGE;CH371所在的页面地址,地址译码后自动片选
MOV DPL,#CH371_BUFFER;CH371数据缓冲区的起始地址偏移
MOV A,R7;上传数据长度
JZ CH371_UPLOAD_O;数据长度为0则不必写入
CH371_UPLOAD_1:MOV A,@RO;读取一字节的数据
INC RO;指向下一个数据的地址
MOVX @DPTR,A;写到CH371的上传数据缓冲区
INC DPL
DJNZ R7,CH371_UPLOAD-1;继续读取上传数据直至结束
CH371_UPLOAD_0:MOV DPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
MOV A,B
MOVX @DPTR,A;将本次数据的长度置入上传数据长度寄存器
RET
;中断服务子程序
;USE:堆栈6字节,工作寄存器组1的RO,R7
CH371_INTER:PUSH PSW;现场保护
CLR IEO;清中断标志,防止重复执行,对应于INTO中断
PUSH ACC
PUSH DPL
PUSH DPH
SETB RSO;PSW.3,切换至工作寄存器组1
MOV DPH,#CH371_PAGE;CH371所在的页面地址,地址译码后自动片选
MOV DPL,#CH371_STATUS;CH371传输状态信息寄存器的地址偏移
MOVX A,@DPTR;读取传输状态信息寄存器
MOV SAVE-STATUS,A;保存传输状态
MOV DPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
JB ACC.0,CH371_INT_UP;传输状态信息寄存器位0为1,则指示上传完成
;是数据下传完成中断
MOVX A,@DPTR;读取下传数据长度寄存器
MOV SAVE_LENGTH,A;保持下传数据长度
JZ CH371_INT_RET ;下传数据长度为0,则直接退出中断
MOV DPL,#CH371_BUFFER;CH371数据缓冲区的起始地址偏移
MOV RO,#SAVE-BUFFER;单片机内部的数据缓冲区,用于存放下传数据
MOV R7,A ;用于读取数据的计数
CH371_INT_DOWN:MOVX A,@DPTR;读取一字节的下传数据
INC DPL ;指向下一个数据的地址
MOV @RO,A;保存到数据缓冲区
INC RO
DJNZ R7,CH371_INT_DOWN;继续读取下传数据直至结束
SJMP CH371_INT_RET ;接收完下传数据,退出中断
;是数据上传完成中断
CH371_INT_UP:MOV A,#0FH;15
MOVX @DPTR,A ;置上传数据长度寄存器为15,暂时没有后续数据
CH371_INT_RET: ;中断返回
POP DPH
POP DPL
POP ACC
POP PSW ;恢复寄存器并选择工作寄存器组0
RETI ;中断返回
;
;* * * * * * * * * * * * * * * * * * * * *
4 结束语
CH371芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP、MCU等。可以预见,CH371将在USB产品设计中大显身手。
【USB总线接口芯片CH371及其应用】相关文章:
PCI总线接口芯片9050及其应用08-06
PCI总线通用接口芯片CH361及其应用08-06
基于CH371的实用USB接口设计08-06
PCI接口芯片s5935及其应用08-06
基于CH371的USB接口虚拟示波器设计08-06
USB接口芯片FT245AM的原理08-06
FPGA芯片APA150及其应用08-06
电力载波芯片ST7538及其应用08-06