USB总线接口芯片CH371及其应用.docx
《USB总线接口芯片CH371及其应用.docx》由会员分享,可在线阅读,更多相关《USB总线接口芯片CH371及其应用.docx(6页珍藏版)》请在冰点文库上搜索。
USB总线接口芯片CH371及其应用
USB总线接口芯片CH371及其应用
摘要:
CH371是一种新型USB通用总线接口芯片。
利用该芯片可在不了解任何USB协议或固件程序甚至驱动程序的情况下,轻松地将并口或串口产品升级到USB接口。
文中介绍了该接口芯片的主要特点和引脚功能,给出了CH371与其它总线进行接口的几种应用电路,同时给出了CH371与MCS-51单片机的接口程序。
关键词:
USB总线接口芯片CH371单片机
1引言
CH371是一种USB总线通用接口芯片。
该芯片具有8位数据总线以及读、写、片选控制线和中断输出,可以方便地挂接到单片机、DSP、MCU等控制器的系统总线上;在计算机系统中,通过CH371的配套软件可提供简洁易用的操作接口,从而使其与本地端的单片机通讯就如同读写硬盘中的文件一样简单。
由于CH371屏蔽了USB通讯中的所有协议,因而可在计算机应用层与本地端控制器之间提供端对端的连接。
在不需要了解任何USB协议或者固件程序甚于驱动程序的情况下,就可轻松地将并口、串口产品升级到USB接口。
CH371的主要特点
●屏蔽了USB协议,可在计算机应用层与本地端之间实现端对端的连接。
●具有单向数据流和请求加应答两种通讯模式,并支持伪中断。
●可自动完成USB配置过程,完全不需要本地端控制器作任何处理。
●采用标准的接口,即插即用,D+引脚内置上接电阻。
●内置4个端点,支持USB的控制传输、批量传输、中断传输。
●带有通用Windows驱动程序,可提供设备级接口和应用层接口。
●具有通用本地8位数据总线,可用4线控制读选通、写选通、片选输入和中断输出。
●占用16个地址,可选择直接地址方式或者复用地址方式。
●内置输入输出缓冲区,能以中断方式通知本地端控制器传输数据。
●内置I2C主接口,因而应用层可以直接读写外挂的I2C从设备。
●在主控方式下可以提供16根据输入信号线或12根独立控制的输出信号线。
●内置上电复位电路,可提供高电平有效复位输出和低电平有效复位输出。
●内含可选的看门狗电路Watch-Dog,能为本地端控制器提供监控。
●具有DIP28、SOP28、DIP24、CHIP等多种封装形式。
2引脚功能
CH371的引脚排列如图1所示,表1所列是其引脚功能。
表1CH371的引脚功能
28脚封装
的引脚号24脚封装
的引脚号引脚名称类型引脚说明2824VCC电源电源正端129GND电源接地1411XI输入晶体振荡输入端,带偏置电阻1310XO输出晶体振荡反相输出端107D+双向USBD+数据线,内置上拉电阻可控118D-双向USBD-数据线96OFF输入用于关闭D+上位电阻,高有效,带下拉22151912D7D0双向8位双向数据总线,带上拉,可直接输入和独立控制输出44RD输入读选通输入,低有效,带上拉,同时用于看门狗的清除输入33WR输入写选通输入,低有效,带上拉2723CS输入片选输入,低有效,带下拉22ALE输入地址锁存使能,高有效,带上拉,在下降沿可锁存数据总线的复用地址11INT输出中断输出,传输成功,低有效585部分支持A3A0双向4位地址输入线,带上拉,可直接输入和独立控制输出2421SCL输出I2C接口时钟线2320SDA双向I2C接口数据线,开漏输出,带上拉2522RST输出上电复位和看门狗复位,高有效26不支持RST输出上电复位和看门狗复位,低有效
3应用
与USB总线的连接
图2是CH371与USB总线的接口连接电路,CH371芯片可以直接使用USB总线的5V电源。
电容C3和C4用于电源退耦;将电阻R1和R2串接在CH371与USB总线之间可进行阻抗匹配;晶振X1、电容C1和C2用于CH371芯片的时钟振荡电路。
CH371芯片的SCL和SDA信号线可以直接连接I2C接口的从设备,如连接24COX器件以用来存储系统断电后不能丢失的重要数据,也可以存储身份识别数据、记费数据等,由于24COX中的数据只有计算机应用层才能够存取。
与单片机的接口电路
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。
CH3
71的中断输出INT连接到U2的外部中断INTO,反相器U5用于简单的地址译码,SRAM器件62256的地址为8000H-FFFFH,CH371的地址为0000H-7FFFH。
主控方式应用
图4是CH371在主控方式下的应用电路。
该电路实际是基于CH371的主控方式设计的8通道数据采集器。
可以看出:
包括CH371在内,该电路只用到了三个集成电路,并且不需要任何单片机、DSP、MCU等控制器。
CH371芯片的双向引脚A3~A0应该设置为输出,其中A3用于以低电平启动模数转换,A2~A0用于选择采集通道,双向引脚D7~D0应该设置为输入,用于输入采集到的结果,CS、ALE用于输入采集状态。
实际电路应该采用精确的参考电压,并添加辅助电路。
另外,也可以用自带多通道选择器的模数转换芯片来代替U6和U7,如8通道AD芯片MAX158等。
与单片机的接口程序
下面是U2与U1的接口参考程序
;*********************
;需要主程序定义的参数
;CH371_PAGEEQU00H;CH371所在的页面地址,地址译码后自动片选
;CH371_SYSTEMEQU02H;CH371系统功能设定寄存器的地址偏移
;CH371_CONFIGEQU02H;CH371设备配置信息寄存器的地址偏移
;CH371_INT_SETEQU06H;CH371中断数据设定寄存器的地址偏移
;CH371_STATUSEQU06H;CH371传输状态信息寄存器的地址偏移
;CH371_LENGTHEQU07H;CH371数据长度寄存器的地址偏移
;CH371_BUFFEREQU08H;CH371O数据缓冲区的起始地址偏移
;SAVE_STATUSDATA29H;保存传输状态信息,根据需要可选
;SAVE_LENGTHDATA2AH;当前数据缓冲区中的长度,用于保存下传长度
;SAVE_BUFFERDATA30H;数据缓冲区,用于保存接收到的下传数据
;*********************
;初始化子程序
;USE:
ACC,DPTR
CH371_INIT:
MOVDPH,#CH371_PAGE
;CH371所在的页面地址,地址译码后自动片选MOVDPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
MOVA,#OFH
MOVX@DPTR,A;置上传数据长度寄存器为15,暂时没有数据上传
CLRA;尚未有数据下传
MOVSAVE_LENGTH,A;保存下传数据长度
SETBITO;置外部信号为下降沿触发
CLRIEO;清中断标志
SETBPXO;置高优先级
SETBEXO;允许中断
RET
;上传数据子程序
;ENTRY:
RO指向存放了准备上传数据的缓冲区,R7准备上传的数据长度0至8
;USE:
ACC,B,R0,R7,DPTR
CH371_UPLOAD:
MOVB,R7;将数据长度暂存到B中
MOVDPH,#CH371_PAGE;CH371所在的页面地址,地址译码后自动片选
MOVDPL,#CH371_BUFFER;CH371数据缓冲区的起始地址偏移
MOVA,R7;上传数据长度
JZCH371_UPLOAD_O;数据长度为0则不必写入
CH371_UPLOAD_1:
MOVA,@RO;读取一字节的数据
INCRO;指向下一个数据的地址
MOVX@DPTR,A;写到CH371的上传数据缓冲区
INCDPL
DJNZR7,CH371_UPLOAD-1;继续读取上传数据直至结束
CH371_UPLOAD_0:
MOVDPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
MOVA,B
MOVX@DPTR,A;将本次数据的长度置入上传数据长度寄存器
RET
;中断服务子程序
;USE:
堆栈6字节,工作寄存器组1的RO,R7
CH371_INTER:
PUSHPSW;现场保护
CLRIEO;清中断标志,防止重复执行,对应于INTO中断
PUSHACC
PUSHDPL
PUSHDPH
SETBRSO;,切换至工作寄存器组1
MOVDPH,#CH371_PAGE;CH371所在的页面地址,地址译码后自动片选
MOVDPL,#CH371_STATUS;CH371传输状态信息寄存器的地址偏移
MOVXA,@DPTR;读取传输状态信息寄存器
MOVSAVE-STATUS,A;保存传输状态
MOVDPL,#CH371_LENGTH;CH371数据长度寄存器的地址偏移
JB,CH371_INT_UP;传输状态信息寄存器位0为1,则指示上传完成
;是数据下传完成中断
MOVXA,@DPTR;读取下传数据长度寄存器
MO
VSAVE_LENGTH,A;保持下传数据长度
JZCH371_INT_RET;下传数据长度为0,则直接退出中断
MOVDPL,#CH371_BUFFER;CH371数据缓冲区的起始地址偏移
MOVRO,#SAVE-BUFFER;单片机内部的数据缓冲区,用于存放下传数据
MOVR7,A;用于读取数据的计数
CH371_INT_DOWN:
MOVXA,@DPTR;读取一字节的下传数据
INCDPL;指向下一个数据的地址
MOV@RO,A;保存到数据缓冲区
INCRO
DJNZR7,CH371_INT_DOWN;继续读取下传数据直至结束
SJMPCH371_INT_RET;接收完下传数据,退出中断
;是数据上传完成中断
CH371_INT_UP:
MOVA,#0FH;15
MOVX@DPTR,A;置上传数据长度寄存器为15,暂时没有后续数据
CH371_INT_RET:
;中断返回
POPDPH
POPDPL
POPACC
POPPSW;恢复寄存器并选择工作寄存器组0
RETI;中断返回
;
;*********************
4结束语
CH371芯片具有通用的被动并行接口,可以直接连接多种单片机、DSP、MCU等。
可以预见,CH371将在USB产品设计中大显身手。