有关CH372或CH375的USB通讯的问题解答

* 需要设计参考资料(光盘资料可以参考FILELIST.TXT文档,网上资料更新) 1、如果是在没有单片机的情况下,进行简单的I/O输入输出,那么可以参考CH341的资料,CH341不需要 单片机就能独立工作,可以提供串口、并口、兼容IIC或I2C的2线接口、兼容SPI及JTAG的4线接口、 5线接口等,可以提供多个GPIO通用I/O,可以用于控制低速模数转换AD、DA、数字I/O、I/O扩展等。 2、如果是单片机/DSP等与计算机相连接,也就是USB设备方式的应用,那么参考CH372的资料。可以下 载CH372+CH451评估板/演示板的资料CH372EVT.ZIP,有PDF文档和例子程序,例如,评估板说明及USB 设备应用参考CH375451,参考电路和PCB,小数据量交互传输/应用层中断演示的例子DEMO,含MCS51 单片机C程序和汇编程序,批量数据传输的例子BULK测试速度,USB外置固件的C和汇编例子XFIRM, VC/VB/BC/DELPHI的例子等。另外,可以下载CH37X在计算机WINDOWS下的简单调试工具CH372DBG.ZIP, 其中有MCS51单片机上位机与下位机的C源程序,PC机程序可以通过USB对MCS51进行简单仿真和控制, 其中的C程序稍作修改就可以用于其它单片机。调试工具DEBUG372可以用于调试和检查下位机的程序。 3、如果是单片机/DSP等控制其它USB设备,也就是USB主机方式的应用,那么可以参考CH375的资料。 如果是读写U盘并且用量较少或者是系统集成,关心快速入门并且简单易用,那么可以参考半成品U盘 文件读写模块的说明CH375HM.ZIP;如果是做原始产品设计,关心成本,那么可以参考CH375评估板资 料CH375EVT.ZIP,其中有单片机读写U盘的例子和U盘文件级子程序库的API说明;如果是单片机控制 USB打印机等,或者CH375与CH372等其它USB产品通讯,可以参考USB主机方式应用参考CH375HST.ZIP。 在设计USB-HOST电路和PCB之前,强烈建议参考CH375的设计注意事项README.PDF。 * 关于电源 优先使用5V电源,CH37X在5V电源时的性能高于3.3V,可以作为工业级使用。 对于USB-HOST应用,建议参考CH375的设计注意事项README.PDF,要考虑USB带电插拔的实际情况。 我们的样板中的电阻R1(串在USB电源与本板电源之间)是为了便于双电源供电,防止两个电源电压不同 冲突。如果仪器本身有电源,或者不需要计算机双电源供电,那么可以去掉该电阻。 * 单片机无法与CH372或者CH375进行通讯,例如CMD_CHECK_EXIST不成功或者CMD_SET_USB_MODE返回错误 通常是硬件问题,例如: 1、CH375没有时钟,可能是晶体不良未振荡,电容或者晶体漏电,CH375的时钟必须是12MHz。 2、CH375没有成功复位,可能是RSTI引脚没有0.47uF上拉电容,也可以用单片机I/O口或者uP监控电路为 其提供复位,注意CH375的RSTI引脚内部有下拉电阻。对于CH372应该确保电源完全放电后再通电。 3、CH375的片选地址译码错误,例如,与RAM地址范围冲突 4、数据总线或者读写线连接错误等 5、用CMD_CHECK_EXIST命令测试硬件问题,该命令必然返回数据,如果返回数据不是0FFH,那么通常是 数据总线连接错误,这种问题容易处理,可以根据返回的值分析是哪个数据线有误。 如果返回数据是0FFH,那么可能CH375不正常,例如,无时钟、未复位、读写片选线有误、工作于串 口方式等,如果复位期间CH375的TXD引脚是高电平,那么CH375工作于串口方式,当然并口操作无效 * 测量CH375的晶体振荡时好象不振荡 为了降低EMI,CH375的振荡为接近正弦波,所以振荡相对较弱,而一般单片机的振荡接近方波,振荡较 强但是电磁辐射大很多。当测量仪器接入CH375的引脚时,由于引入电容,在3.3V电源电压时容易导致 CH375停振,当去掉测量仪器时通常会恢复。如果是在3.3V电源电压下,建议使用有源晶振或者外部振 荡,或者将XI引脚的电容换为10pF。振荡后XO引脚的电压在一半电源电压附近。 * 连接到计算机没有反应 当单片机控制CH37X执行CMD_SET_USB_MODE命令,选择模式2后,首次连接计算机,计算机就应该提示找 到新硬件,否则应该检查CH37X是否正常工作(看前面的问题)。如果确认单片机端没问题,那么可以 用万用表测量CH37X的UD+和UD-引脚,也就是USB信号线,应该UD+为3V以上,UD-为0.4V以下,否则说明 CH375未工作或者未收到CMD_SET_USB_MODE命令,只有模式1和2会导致UD+上拉到3V电压以上。 * 连接到计算机,无法安装驱动,提示未知设备 1、CH375的GND以及单片机的GND必须与USB的GND可靠地连接,USB的VBUS/+5V可以不连接。 2、USB的D+和D-信号线接反,导致通讯失败,USB线4个,分别是+5V,D-,D+,GND,顺序不能错。 3、USB信号线必须用标准的USB线,不能用普通排线等代替,D+和D-布线要平行,附近铺地减少干扰。 4、由于CH37X内置了USB电阻,所以外部电路中D+和D-不需要串电阻,如果一定要串也不能大于5欧姆。 5、如果是5V工作电压,CH37X的V3引脚必须与VCC断开,如果是3.3V工作电压,那么V3应该连接VCC。 6、建议调试初期不要设置USB-ID,也就是单片机不要执行CMD_SET_USB_ID命令,等调通后再尝试修改。 如果单片机执行CMD_SET_USB_ID命令,那么必须在CMD_SET_USB_MODE之前执行。如果单片机执行 CMD_SET_USB_ID命令修改了USB-ID,那么必须同步修改驱动程序INF中的ID才能安装驱动。 * 计算机成功安装驱动程序,但是无法进行任何USB通讯 通常是单片机未收到或者未处理USB中断,驱动的安装与初始化是由CH372和CH375内置USB固件实现的, 不需要单片机的任何干预,而USB数据通讯需要由单片机收到USB中断并由程序实现 * 在与计算机连接时,为什么不能对单片机进行程序单步调试 标准的USB传输都是时间限制,单步调试容易导致USB超时,尤其在外置固件模式下,更容易超时。 解决方法是,用CH375作为USB-HOST,代替计算机单步调试您的USB设备,CH375可以不超时。 * 如何用一个CH375实现USB-HOST和USB-DEVICE CH375的串口连接只支持USB-HOST,所以必须通过8位并口与单片机连接。由于CH375自身没有主导权, 只能在单片机的控制下,切换为主机或者设备模式,所以单片机应该决定是主机还是设备,具体可以参 考USB电路及PCB设计注意事项README中的说明,在CH375评估板资料中,EXAM0是主从切换应用的例子。 * 关于应用层USB中断服务的特点 CH372的动态锭接库DLL提供了伪中断服务,实际的中断服务仍然是在驱动程序库完成的,只是在完成后 向DLL发了个通知,由DLL再调用伪中断服务子程序。由于涉及到系统层与应用层切换以及线程切换, 所以中断频率不能太高,如果太高,虽然驱动程序能够收到中断,但是等到通知到应用层,再调用客户 的伪中断服务程序,最慢可能需要10毫秒,从而在应用层丢失中断。自己写驱动可以提高响应速度。 * 关于USB传输速度 CH372/CH375与计算机通讯时,默认的CH37X驱动程序和DLL提供的API是同步I/O而非异步I/O,所以API 返回就说明该API执行完成,由于WINDOWS要提前安排USB帧调度,所以两次USB传输之间的间隔总是会大 于1mS,例如传两个64字节的包可能需要2mS,而传一个256字节的包可能只需要1mS。这种情况可以通过 修改驱动程序在驱动程序层传输数据或者用异步I/O解决,注意异步I/O在API返回时不代表该API完成。 计算机单次收发的数据块越大平均速度越快(单次最大4KB),CH372/CH375实测传输速度最高为400K字 节每秒(在10秒内连续测试的平均值),但是实际应用考虑到留些余量,考虑到应用程序在收发数据之 外还要分析处理数据,通常应该按200K计算。USB作为串行总线,采用包传输的方法,实时性不如PCI总 线,PCI能达到微秒级,而USB的响应时间只有几百微秒到几毫秒,在驱动程序中实现的性能要好些。 * 如何做WINDOWS驱动程序,WINDOWS DDK如何获得 我们的驱动程序全部使用WINDOWS 98/2000/XP DDK编译,同时支持WINDOWS 98/ME/2000/XP。DDK可以从 微软官方网站免费下载(订购芯片时如果需要我们也可以提供刻录光盘),除此之外,只需VC 5.0或者 VC 6.0编译器,完全不需要额外软件支持。这样做出的驱动程序代码效率高并且文件短小,通常我们用 INF安装信息文件而不是SETUP可执行程序,可以算是绿色软件。用户如果希望有更友好或者更简单的编 译方法,那么可以使用第三方的驱动程序生成工具,当然,那些软件通常都不便宜。 对于非WINDOWS驱动程序,可以参考其它USB设备的驱动源码修改,大多数USB设备的枚举、初始化过程都 是一样的,区别仅在于端点/管道:CH372/CH375除端点0外有三个端点,地址分别是02H、82H、81H,依 次为主输出BULK-OUT/64字节,主输入BULK-IN/64字节,辅输入INTERRUPT-IN/8字节/1mS,通常只用前两 个主端点,一个从计算机输出到CH375,一个从CH375输入到计算机。 * 数据采集中,单片机如何设计USB程序 简单的做法是,单片机开两个64字节的缓冲区,主程序定时采集数据,累加到第一个64字节缓冲区中, 当第一个缓冲区满时,使用CMD_WR_USB_DATA7命令上传64字节,然后主程序切换到第二个缓冲区继续采 集数据,当第二个缓冲区满时,首先检查上次的上传是否成功(上传成功会收到CH37X的中断),如果成 功则继续上传64字节,如果不成功,说明计算机应用程序没有来取走数据(正忙或者未执行采集程序), 那么可以忽略或者另行处理(提示计算机未连接)。该方法不使用中断,但是需要计算机不断地来读取 数据,实际的计算机程序可以设置USB读取超时,防止在单片机不上传数据时计算机一直等待。 [color=Red]* 设计的计算机端应用程序在读写USB时有时会死

我用CH375当372来用. 可是刚插上USB线时,设备是正常的. 但过了一段时间就不正常了.我的系统是XP. 不正常时,计算机根本发现不了375,有时竟是其它设备,或未知设备, 请问,这是什么原因呢? 想作控制和采集用,有点怕. 谢谢. 个人信息保护,已隐藏


检查CH37X的时钟XI/XO和复位RSTI,必须是稳定的。如果硬件检查无误,可以贴出你的程序来检查。 实在不行,上位机和下位机可以先试用我们的DEMO或者BULK测试程序,连续24小时测试看是否有问题。 如果有问题,那么硬件问题,否则是软件问题。


谢谢, 硬件方面应该没问题. 软件方面现在还不确定. 但在不同的PC上,表现好像是不同的, 有时还要求重装USB驱动. 我再试试.


新来的,报个到。


把USB口与计算机连接后,计算机有时提示找到新硬件,有时就没有那个发现硬件的标志,没标志时,用万用表测UD+和UD-十无电压,出现标志时,装不上驱动程序,


怎么就没人说一下呢? 郁闷.


请您详细检查您的电路确认无误(最好对照我们给的原理图检查),因为这更象是硬件问题. 然后在检查是否在CH375/CH372复位后正确启动模式.


斑竹及各位大家好: 请问用三用表如何才能判断372是否起振?电源是5伏。我实测晶振一端到地电压是4.76v(DT830 20vDC档),晶振另一端到地电压是5.16伏,实测电源电压是5.16伏(来自USB口),用示波器测量无信号。不知道372的晶振工作了没有?


如果正常起振波形为正玄波,万用表测试电压应为平均电压,大概在两伏左右.


收藏!!


我做一个数据采集系统,需要把A/D转换器,单片机还有USB芯片连接起来,有没有只有CH372和单片机连接的板块?


单片机只连CH372的板子没有,你可以拿CH372DEMO板作实验.


我想用PIC单片机控制CH375读写U盘,不只能否用文件方式?怎用建立后查找文件?清个位高手指教!


请问: 从贵公司的网站上下载的CH372DGB,编译后配合PC机端(win XP)的VB6.0运行,读取单片机的RAM、SFR等,有时正常、有时没有反应,就像程序死了一样,但是拔掉USB的接头,却有正常了,是何原因?


下位机程序需要单片机执行,当然用到相关的SFR和RAM,这个工具写的不是很严谨,而且读写SFR和RAM要注意副作用,说不定被你从PC机上人为修改的RAM正是当前USB缓冲区,外部RAM不要读写到CH375的端口地址中,那也会导致CH375误认为是数据或者命令


只有登录才能回复,可以选择微信账号登录