gpt4 book ai didi

c - LPC2148 USB 发送/接收数据

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:58 26 4
gpt4 key购买 nike

使用 Keil USB HID 示例,我终于能够让我的设备使用 LPC2148 在 Windows 中成功枚举; USB HID 示例需要进行一些调整。我正在使用中断传输方法。我正在使用 USBlyzer 来嗅探我的 USB 数据传输。

在 Windows 方面,我目前正在使用 C# USB 库 ( http://www.codeproject.com/Articles/18099/A-USB-HID-Component-for-C ) 连接到我的设备。

我测试数据传输的目标是向设备发送一个字节,让它执行一些简单的数学运算(例如加 2)并发回新值,这样我就可以验证数学是否正确完成以及数据是否正确正确发送和接收。

现在它已被枚举,但我无法让 LPC2148 发送/接收数据。我找到了这篇文章 ( http://www.keil.com/forum/19713/),其中解释了如何向主机发送数据。

它有以下代码:

usbuser.c

#if USB_CONFIGURE_EVENT
void USB_Configure_Event (void) {
if (USB_Configuration) { /* Check if USB is configured */
GetInReport();
USB_WriteEP(0x81, &InReport, sizeof(InReport));
}
}
#endif

void USB_EndPoint1 (DWORD event) {

switch (event) {
case USB_EVT_IN:
GetInReport();
USB_WriteEP(0x81, &InReport, sizeof(InReport));
break;
}
}

我使用了这种技术,但发现了几个问题:1. 它连续且非常快速地发送,而我只希望它在收到一个字节的数据后发送数据,我只希望它发送一次。2. 看起来好像 GetInReport 什么也没做,因为在我的这个名称的方法中,我让它用一个不断递增 1 的变量更新 InReport。但是在我收到的数据中,它始终保持默认值并且从未改变。3.这段代码没有地方让我从电脑接收数据。

最佳答案

尝试将“usbdesc.c”中的接收端点从中断模式更改为批量模式,如下所示:

/* Endpoint, HID Interrupt In */
USB_ENDPOINT_DESC_SIZE, /* bLength */
USB_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
USB_ENDPOINT_IN(1), /* bEndpointAddress */
//USB_ENDPOINT_TYPE_INTERRUPT, /* bmAttributes */
USB_ENDPOINT_TYPE_BULK, //--Here
WBVAL(0x0004), /* wMaxPacketSize */
...........

关于c - LPC2148 USB 发送/接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com