完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
else if( end_num == 2 )
{ if( rx_token == PID_IN ) { } else if( rx_token == PID_OUT ) { rx_len = USBHS->RX_LEN; for( i=0; iUEP2_CTRL &= 0xffff0000; USBHS->UEP2_CTRL |= rx_len; // IN -DATAx-ACK( len =rx_len ) } } USBHS->STATUS = USBHS_ACT_FLAG; 在中端服务程序中,实例端口2, 接收到OUT数据包后,对接收到的数据取反,后发回给主机。有几个问题想请教。 设备向主机传回数据的发送启动指令是否就是 USBHS->UEP2_CTRL |= rx_len,向EP2控制寄存器写入发送长度就自动启动发送? 如果我暂时不想让EP2接收OUT 数据。如何禁止? 当前实例,EP2接收到OUT数据后,不做任何处理,不清 USBHS_ACT_FLAG标志,主机如果再次发送,会覆盖上次的数据吗? |
|
相关推荐
4个回答
|
|
您好,
关于问题1: 并不是向EP2控制寄存器写入发送长度就自动启动发送,在此处只配置端点2发送长度主要是由于在USB2.0高速设备端点初始化函数(USBHS_Device_Endp_Init)中已对端点2控制寄存器进行配置; 关于问题2: 如果不想让EP2接收OUT数据,需要在 USBHS_Device_Endp_Init 函数中将端点2 USBHS_EP_R_RES_ACK改成USBHS_EP_R_RES_NAK,具体如下图: 关于问题3: 若不清USBHS_ACT_FLAG标志,主机再次发送会覆盖上次数据 补充说明: UEP2_CTRL寄存器主要由以下三个寄存器组合而成: |
|
|
|
谢谢回复。
另有一个问题:PC上位机 WINUSB 发送OUT数据 使用: WinUsb_WritePipe(hWinusb, 0x01, pBuffer, DataLen, &length, NULL); //EP1 (OUT) 发送长度是不限止的,可以是xMB. 发送时,WINUSB自动分成多个512字节的数据包。 下位机接收时,应如何应答及重组?(重组需要时间,如果重组完成前,第2个512字节开始发送,有没有可能产生数据错误 ) 例 if( end_num == 2 ) { if( rx_token == PID_IN ) { } else if( rx_token == PID_OUT ) { rx_len += USBHS->RX_LEN; //1,此处是否该暂停接收 //2.比喻写入到U盘,时间比较长. writetodisk(rxbuf,USBHS->RX_LEN) //3.重新开始端点2接收数据 if(rx_len==MyPkt_LEN) { //接收全部数据完成 } // USBHS->UEP2_CTRL &= 0xffff0000; // USBHS->UEP2_CTRL |= rx_len; // IN -DATAx-ACK( len =rx_len ) } } USBHS->STATUS = USBHS_ACT_FLAG; |
|
|
|
你好,可以做协议握手处理,收到主机下发数据并重组完成后,给应答信号,通知上位机可以下发下一包。依次类推,完成所有数据的发送。
|
|
|
|
试了好久,终于搞明白了,实例代码有个错误,反向回转数据到主机,实际USB设备没有启动发送。
USBHS->UEP1_CTRL = USBHS_EP_R_AUTOTOG | USBHS_EP_R_RES_ACK | USBHS_EP_R_TOG_0 | USBHS_EP_T_AUTOTOG | USBHS_EP_T_RES_ACK | USBHS_EP_T_TOG_0 | Len; 设置长度时直接敷值了一下,发送正常 |
|
|
|
只有小组成员才能发言,加入小组>>
482 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2879 浏览 2 评论
2366 浏览 1 评论
821浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
654浏览 1评论
502浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
368浏览 1评论
645浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 16:09 , Processed in 3.285394 second(s), Total 106, Slave 88 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号