本例程中实现了CDC设备类的相关请求,包括SET_LINE_CODING、GET_LINE_CODING、SET_CONTROL_LINE_STATE等。后续将会在代码解析章节进行介绍。 有关CDC协议可以通过以下USB官网下载或者通过红枫派开发板配套资料获取。 大家可以在学习的过程中结合历程代码和协议进行理解。 28.3 硬件设计 ...
为了实现CDC设备类,设备需要支持一些设备类专用请求,这些类专用请求的处理在cdc_acm_req_handler()函数中,该函数的定义如下所示,其中SET_LINE_CODING命令用于响应主机向设备发送设备配置,包括波特率、停止位、字符位数等,收到的数据保存在noti_bu内。GET_LINE_CODING命令用于主机请求设备当前的波特率、停止位、奇偶校验...
CDC类请求实现一些CDC设备的标准请求,调用函数uhost_request_handler GET_LINECODING 代码如下: CDC类数据处理 CDC枚举设置完成之后,USB主机可以请求设备数据,通过调用uhost_process_handler来处理。 通过set_linecoding和get_linecoding配置linecoding 通过cdc_process_reception(puhost)函数给设备发送IN请求 通过cdc_process...
可知上图获取波特率为:115200 SET LINE CODING 类似GET LINE CODING,用于主机设置从机当前属性,可修改波特率、停止位、校验位及数据位 SET CTRL LINE STATE 该请求没有数据输出阶段,作用是设置设备的DTR和RTS引脚电平,D0位表示DTR,D1位表示RTS 类请求回调函数内容如下: usb_status_t USB_DeviceCdcVcomCallback(cl...
Buf[6] = linecoding.datatype;break;case SET_CONTROL_LINE_STATE:break;case SEND_BREAK:break;default:break;}return USBD_OK;}//发送一个字节给虚拟串口(发给电脑)//data:要发送的数据//返回值:USBD_OKuint16_t VCP_DataTx (uint8_t data){APP_Rx_Buffer[APP_Rx_ptr_in]=data;//写入发送 buf...
f. SET_DESCRIPTOR g. GET_CONFIGURATION h. SET_CONFIGURATION i. GET_INTERFACE j. SET_INTERFACE k. SYNCH_FRAME 2. DATA阶段 【Data In过程】 【Data Out过程】 3. STATUS过程 【Status In过程】 【Status Out过程】 实例 总结一下STM32F103的USB端点0的数据处理过程。一个请求过程可能包含三个过程。第一...
SET_LINE_CODING GET_LINE_CODING 代码如下: IN传输处理 OUT传输处理(接收数据) 如何根据vcp_loopback例程进行开发本章将简单描述如何修改cdc例程的代码来进行开发,根据应用具体的需求来修改代码。 根据功能需求修改设备描述信息(cdc_desc.c, cdc_desc.h) ...
在插入usb设备后,拿到的event会变为USB_STATUS_CONFIGURED,这时候FSP已经帮我们枚举好了设备,可以直接进行控制。下一步是发送SetLineCoding和SetControlLineState来配置串口,例如波特率和奇偶校验位等。使用hostControlTransfer发起一个控制传输。 所有配置工作都结束后,就可以使用R_USB_Read和R_USB_Write两个接口来接收和...
类请求 Get coding line Set coding line 表 19. CDC 类请求 说明 获取当前数据帧参数.在 HOST_CLASS_REQUEST 阶段发送该请求. 设定数据帧参数 (比如波特率,奇偶性,停止位).在 HOST_CLASS 阶 段发送该请求. 5.4.3 5.4.4 CDC 类处理 CDC 类的后台函数处理批量管道中的数据接收与传输. 通过回调函数在...
USBD_CDC_LineCodingTypeDef LineCoding = { 115200, /* 波特率 */ 0x00, /* 停止位,默认1位 */ 0x00, /* 校验位,默认无 */ 0x08 /* 数据位,默认8位 */ }; /* usb_printf发送缓冲区, 用于vsprintf */ ...