微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > USBCNT0 USBF0 USBCS0

USBCNT0 USBF0 USBCS0

时间:10-02 整理:3721RD 点击:

最近做usb hid相关的功能,途中遇到很多问题,请问上面的参数表示啥。假设我想知道第四个endpoint上有数据到来(out到usb),怎确定数据的长度,烦请ti大神告知为谢。

关于USBCNT0 USBF0 USBCS0等的含义,您可以参考

http://www.ti.com/lit/ug/swru191f/swru191f.pdf

第193页USB Registers的相关说明

Susan Yang,非常感谢,能否再次请教一下问题?

我自定义一个usb hid设备,主机第一次向usb写入数据没有问题,之后再次写入一致提示写入超时:sh: write error: Connection timed out。我写入的endpoint是4,usbHidProcessEvents函数第一次处理endpoint4的收到的数据并清空事件标记,之后再次写入数据,不成功超时,此时也没有进入usbHidProcessEvents函数中处理endpoint4相关的逻辑,能给点指导或者思路么?

另外,也想想问一下endpoint4接收到数据的长度在哪里可以得到?

也想想问一下endpoint4接收到数据的长度在哪里可以得到?这个已经在文档中看到了!

再次非常感谢,已经没有问题了。在此也用代码总结一下读取usb endpoint数据的代码。

下面的代码嵌入在usbHidProcessEvents函数中,当收到数据时候,直接原样写回主机。

/*仅仅是测试没有那么多的讲究*/

static void s_handle_endpoint4_out(void)
{
uint8 cnt,cnt1;
char rcv[64] = {'\0'};
int i = 0;
uint8 ep = USBFW_GET_SELECTED_ENDPOINT();
USBFW_SELECT_ENDPOINT(4);
if (USBFW_OUT_ENDPOINT_DISARMED())
{
halIntState_t intState;

HAL_ENTER_CRITICAL_SECTION(intState);
// Get length of USB packet, this operation must not be interrupted.
cnt = USBFW_GET_OUT_ENDPOINT_COUNT_LOW();
cnt += USBFW_GET_OUT_ENDPOINT_COUNT_HIGH() >> 8;
HAL_EXIT_CRITICAL_SECTION(intState);
cnt1 = cnt;
while (cnt--)
{
rcv[i++] = USBF4;
}
USBFW_ARM_OUT_ENDPOINT();
}
hidSendHidInReport(rcv, 2, cnt1);
USBFW_SELECT_ENDPOINT(ep);
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top