ATmega128+CH375B,有没有什么办法让CH375在主机和从机模式间自动切换?比方说,插上U盘,进入主机模式,用USB线连接到PC机,进入从机模式。另外,我看的例子中大多是单片机通过CH375写U盘,单片机通过CH375读U盘可以参考哪个例程?用的单片机是ATmega128。
这个操作起来比较麻烦,我们这边有一个操作的流程,你按照我们的流程来写程序就可以了: ...... while(1){ set_mode(1){ if(setup)set_mode(2){ while(1){ PC-372 transfer data if(SUSPEND)break; } } else{ set_mode(6){ while(1){ if(INT==0)device_inter else break; //需要加超时,正常为100-200MS退出 } } } } }
外置固件的setup如何判断呢?
set_mode(1)先要设置模式1,看看有没有SETUP下来,如果有,则是设备模式。否则在启动主机模式,看看中断引脚是否产生了中断。产生中断就去设置初始化设备 以上过程要不断的重复,缺点是占用CPU时间。
设置模式1的时候,好像不连上位机也能setup成功,这样就无从判断有没有连上位机啊?有没有设置模式,判断setup的例程?
有没有设置模式1,判断setup的例程?
那怎么可能呢。SETUP本身就是USB HOST发的。如果不连上位机,那是谁发出来的呢?你参考CH372EVT.ZIP,里面XFIRM文件夹下面的代码即可。
上位机的程序在哪里有啊?
就是说上位机如何对USB设备进行设置?
这不需要上位机程序。USB设备只要插在PC上,PC就会主动通讯进行枚举设备的。这还没涉及到上位机软件
PC机即使找到CH375,是不是CH375也发现不了上位机,得上位机向CH375发数据才行,这样的话,如果是分时操作,一段时间设置为主机,一段时间设置为从机,设置为从机时,从上位机发现CH375到上位机发出数据这一系列操作必须在规定时间内完成才行,否则CH375就又被设置成主机了。
CH375当然可以发现上位机,只所以让你设置模式1的目的就可以让上位机不发数据,下位机就可以实现和计算机连接。即使在前一个时间段计算机没发现,那么最多也就几百毫秒,又设置成设备模式,计算机还是可以发现设备的。
我看了CH372EVT.ZIP里面的XFIRM,是一个设置为模式1的例程,在这个例程里,CH375设置为模式1后,如果连上上位机,是不是USB线一插上,INT脚就会发生中断,而不需要上位机发数据。
如果你还不理解,建议你还是电话沟通吧。