如何实现手动的断开ch374的连接? 我尝试着:Write374Byte(REG_SYS_CTRL,BIT_CTRL_OSCIL_OFF | BIT_CTRL_RESET_NOW); 但是之后再初始化CH374 无法正常连接
还是做设备模拟U盘么? 若是,那么REG_USB_SETUP中BIT_SETP_PULLUP_EN位清0后,主机则会认为设备断开
不是的 是自定义设备 应用中我的设备要通过PC控制 引入一次单片机的软件复位 启动后需要重新连接USB 不过我刚测了一下 不做任何操作 直接复位单片机 然后重新初始化CH374 还是能正常通信的
另外,芯片的软件复位和硬件复位有什么区别吗?软件复位一般用在什么场合呢? 上电复位有标志位BIT_INFO_POWER_RST,那么软件复位的有对应标志位吗?
没有相应的标志位 只要对REG_SYS_CTRL这个寄存器的BIT_CTRL_RESET_NOW操作即可复位 顺序: 复位 延时50MS 停止复位 Write374Byte(REG_SYS_CTRL,Read374Byte( REG_SYS_CTRL ) | BIT_CTRL_RESET_NOW); Delay50ms(); Write374Byte(REG_SYS_CTRL,Read374Byte( REG_SYS_CTRL ) &~ BIT_CTRL_RESET_NOW); 部分寄存器软件复位后的值不会被改变。CH374DS1上有说明. 一般来说可以看做和硬件复位一样。
测试了一下1楼的办法 没有问题~多谢~ 也谢谢4楼关于复位的解释 不知道哪里能找到更加详细的文档参考呢?这样也免得总上论坛来
呵呵 又想到个小问题 记得芯片在初始化之后 也需要一段时间的延时 这段时间是跟PC的响应有关吗? 还是芯片的其他操作?
我测试了一下 在枚举成功(Write374Byte( REG_USB_ENDP0, M_SET_EP0_TRAN_NAK( 0 ) ); // 结束)设置标志位 然后立刻结束初始化 还是无法正常连接 还没找到原因
不知道你在哪里看到的程序,请到在线下载里搜索CH374EVT.ZIP,里面有DEVIC.C 应该是在初始化之前延时,芯片上电自复位不能立即操作,可能正在复位。50MS延时足够。 不知道7楼是什么意思。如果枚举成功则肯定能连接。否则就不叫枚举成功了。 case DEF_USB_SET_CONFIG: UsbConfig = SetupReqBuf.wValueL; break; 这一步才是最后一步枚举成功。
我7楼的意思是想在枚举的最后一步设置一个标志位告单片机已经枚举完成 只是我把枚举完成的时间搞错了~
可否检测BIT_INFO_POWER_RST判断是否复位完成,而省去那个延时?
再有关于枚举结束的问题 我在跟踪枚举过程的时候 发现最后一步“设置配置信息”是由两个事务构成: 先是 OUT事务 进入case DEF_USB_SET_CONFIG: 然后是 IN 事务 进入case USB_INT_EP0_IN: 的default分支