基于VCP的数据传输:
固件修改:开发板自带的固件是利用开发板的串口与虚拟串口通信,这里需要删除串口通信的部分,然后将数据直接通过虚拟串口返回给PC机。
主要修改:移除固件工程中的usbd_cdc_vcp.c文件,直接在设备文件usbd_cdc_core.c文件中发送接收数据。
usbd_cdc_core.c文件主要定义了一个CDC的Callback结构体,包含了处理函数的接口,如下:
/* CDC interface class callbacks structure */
USBD_Class_cb_TypeDef USBD_CDC_cb =
{
usbd_cdc_Init,
usbd_cdc_DeInit,
usbd_cdc_Setup,
NULL, /* EP0_TxSent, */
usbd_cdc_EP0_RxReady,
usbd_cdc_DataIn,
usbd_cdc_DataOut,
usbd_cdc_SOF,
NULL,
NULL,
USBD_cdc_GetCfgDesc,
#ifdef USE_USB_OTG_HS
USBD_cdc_GetOtherCfgDesc, /* use same cobfig as per FS */
#endif /* USE_USB_OTG_HS */
};
usbd_cdc_DataIn,usbd_cdc_DataOut,函数分别是发送和接收函数。
其他部分,需修改下LED的管脚,描述符不需要修改。
测试工具利用的是董小飞推荐的AccessPort串口调试软件。可利用文件传输功能测试速度。
测试的速度:FS模式下,大约为700KB/s,HS模式下约为10MB/s。
|