WCH沁恒单片机
直播中

刘静

7年用户 1168经验值
私信 关注
[问答]

为什么CH559只能操作带有串口的usb标签打印机,而只有USB口的标签打印机却不行?

通过CH559连接USB打印机,如果打印机带有串口,通过USB口操作标签打印机,正常;如果打印机本身不带串口只有USB口,无法操作标签打印机通过调试发现
UINT8   USBHostTransact( UINT8 endp_pid, UINT8 tog, UINT16 timeout )
里面
            if ( U_TOG_OK )
            {
                return( ERR_SUCCESS );
            }
U_TOG_OK 的问题



sbit U_TOG_OK      = USB_INT_FG^6; // ReadOnly: indicate current USB transfer toggle is OK


为什么559 只能操作带有串口的usb标签打印机  ,而只有USB口的标签打印机却不行
  

回帖(3)

李悠冉

2022-5-30 10:47:44
这个toggle是USB数据包的一个简单的校验机制,在物理层中是按照一定的逻辑进行DATA0和DATA1的交换,这个是和传输过程紧密相关的。
打印机带串口和不带串口,那显然的就是不同的打印机,可能在USB通讯的整个过程中会有不同,这时候可以对USB底层进行抓包,看一下DATAX到底是多少,定位一下是设备传输错误还是芯片判断错误。还有我们在初始化USB的时候通常会打开AUTO_TOGGLE同步标志自动翻转功能,检查一下发送接收控制寄存器的自动翻转功能是否打开。
举报

张秀荣

2022-5-30 10:47:56
  
  两个打印机的 描述 对比了一下 不同


不知道如何修改
举报

徐娟

2022-5-30 10:48:01
这个是打印机的静态的一个描述符信息,我们需要关注的是USB枚举、传输过程中的动态的东西。简单的可以在电脑端用bushound软件看一下通讯过程,对比主机代码中是否有缺少的操作步骤(电脑软件抓包只具有参考意义,同时也无法排除单片机操作代码问题),最好是能够从硬件层面抓取电脑操作打印机的过程,和单片机操作的过程对比,即可找出问题
举报

更多回帖

发帖
×
20
完善资料,
赚取积分