This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我修改了您的示例 USB_DEV_serial、使其在没有 UART 的情况下运行。 我的程序只回波我在串行终端上键入的任何内容。 我已附上下面的完整计划。 我有以下问题。
我 在 RxHandler 中处理事件 USB_EVENT_DATA_LEARTENT、只需按如下方式返回0即可。 这是可以的吗?
// We are being asked how much unprocessed data we have still to // process. We send 0 if USB Tx buffer can take data case USB_EVENT_DATA_REMAINING: { return(0); }
在 ControlHandler 中、我通过忽略多个事件来处理它们(见下文)。 它们在示例代码中处理 UART 事件。
case USBD_CDC_EVENT_GET_LINE_CODING: case USBD_CDC_EVENT_SET_LINE_CODING: case USBD_CDC_EVENT_SET_CONTROL_LINE_STATE: break;
case USB_EVENT_DATA_REMAINING: { return(0); }
谢谢、
Dhammikae2e.ti.com/.../4834.usb_5F00_dev_5F00_serial_5F00_without_5F00_UART.zip
Dhammika、您好!
这些实际上是特定于应用的问题。 如果您不会收到数据、则无需处理该事件。 CDC 事件通常是枚举的一部分、但可能不需要。
我不会说这是典型的实现方式、但只要它能满足您的需求、就不会导致库错误、除非您处理 RX 数据的速度不够快、并且无法跟踪您需要清除的缓冲区空间大小等
此致、
Ralph Jacobi
您好、Ralph、
感谢您的快速回复。
返回0表示 USB_EVENT_DATA_LE余 留事件一直对我有效。 但是、我在今天早上发现、需要 正确处理事件、USBD_CDC_EVENT_GET_LINE_Coding 和 USBD_CDC_EVENT_SET_LINE_C编码。 也就是说 、我们必须为事件 USBD_CDC_EVENT_SET_LINE_Coding 返回1、并且必须使用 一些值填充 USB 控制回调的 pvMsgData 输入/输出。 请在您的结尾确认
谢谢、
Dhammika
Dhammika、您好!
基于我们的 Windows 驱动程序是如何设置 CDC 器件的枚举的、这对我来说很有意义。 我有点惊讶的是,它在没有诚实的人的情况下工作。
使用这些命令的想法是、它有助于设置 COM 端口波特率和数据大小等。因此、虽然演示中可能会让您认为这些命令通常与 UART 绑定、但您使用的是与相同的终端 USB COM 端口的 UART 连接、因此应用相同的设置。
可以通过 USB 驱动程序避免这种情况、但我不确定。
此致、
Ralph Jacobi
您好、Ralph、
再次感谢您的快速回复。 我已经使用 USBD_CDC_EVENT_GET_LINE_Coding 指定了奇偶校验、位数和停止位数 。 但是我没有定义波特率。
然后、我忽略 USBD_CDC_EVENT_SET_LINE_Coding 事件。 这似乎工作正常。
进行串行连接时、我可以指定任何波特率。 CAD 驱动程序似乎具有自动检测波特率的机制。
谢谢、
Dhammika
您好、Ralph、
我甚至更改了奇偶校验和串行连接期间停止位的编号等内容。 即使进行了这些更改、也能正常工作。 CDC 驱动程序似乎能够在通信开始之前识别所有内容。
谢谢、
Dhammika