请教关于CH372和CH375的两个问题

问题1: CH372(或用作device的CH375)在收到来自PC机的数据后会向单片机申请中断,单片机在相应的中断服务例程中接收和处理数据。按照CH372EVT提供的例子,如果是端点2收到数据,在执行 CH375_CMD_PORT = CMD_RD_USB_DATA; 后就将缓冲区释放了,这是不是意味着此时CH372可以再次接收来自PC机的数据呢?但这时候我们还没有把缓冲区中的数据读到程序缓冲区里。这样不是会造成数据丢失么?

问题2: CH375和控制它的单片机是否必须使用相同频率的晶振?我的实验板上开始都使用12MHz的,读写U盘都没有问题,但是将单片机的晶振提高到24MHz后,写U盘就出问题了,执行CH375FileCreate无返回(如果返回了会有printf输出)。如果可以使用不同晶振的话,最可能需要改动的地方是哪些呢?

谢谢。[Emot]10[/Emot]

问题1:CMD_RD_USB_DATA是在CH372读完最后一个字节解锁.


不会的,如果用这个命令,在读完数据后会自动释放缓冲区. 不一定要用相同频率的晶振,和晶振无关,CH372一定要用12MHZ的.不能工作的原因可能是时序过快导致读写不正常.另外在CH375FileCreate以前读写是否正常?


(1)对于主机发起的OUT事务,CH372将数据保存之后才释放缓冲区的. (2)CH375和单片机的晶振可以相同,也可以不一样,但是CH372(CH375)必须为12MHZ.你需要在软件对于时序做相应的调整.


明白了,例子的注释说的不是很明确,建议修改一下。

调整晶振的问题,上午我把延时程序的参数修改了一下,还是没有效果。 CH375FileCreate查询磁盘容量都是没有问题的,接下来调用CH375FileCreate就不知道执行到什么地方去了,很奇怪。。。 另外,因为画板子的时候考虑到其它用途,所以做这个实验用了很多飞线,是不是晶振频率高了也会有影响啊?


影响肯定是有的,在频率比较高的情况下进行测试命令,看是否成功,如果成功的话说明操作CH375就没有问题,你用示波器看一下USB信号线的波形如何.建议USB外壳接地,USB平行走线.USB信号线上不要串接大于3欧姆的电阻.


接入U盘后ACT引脚电平有变化,并且可以CH375DiskSize查询磁盘容量,能够说明芯片是正常的吗? 你说的方法,我明天再试一下


可以说明芯片是正常的


上午测试了一下,可以通过CHECK_EXIST测试 然后把晶振换回12MHz的,也出现CH375FileCreate不返回问题了 这下搞大了。。。


CH375DiskReady通过了没呢?


可以确定片子是没有问题的 单片机使用12MHz晶振,扩展总线或是IO模拟方式,都可以正常写文件 使用24MHz晶振,扩展总线方式控制CH375,就出现第一贴所述问题了。。。 FileOpen也一样,总之貌似一操作U盘文件就会死机 但此时拔出U盘会报告0x82错误

我已经修改了CH375HF4.h中的两个延时函数,还是不行。


可以使用库5试试,在三个读写函数中加2uS的延时.


哈,库5可以的,之前一直以为库5只能用于非总线IO呢

那么,单指令周期51片子,22.1184MHz晶振,只能使用库5咯?

本来期望提高晶振以提高U盘写入速度的,似乎并没有明显的改善


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