历史上的今天
今天是:2025年07月29日(星期二)
2019年07月29日 | STM32 LibUsbDotNet 开发CDC记录
2019-07-29 来源:eefocus
1,一定要注意端点是分方向的,在ST的USB库中使用类似如下方式来表示端点。
第7bit为1,0x80表示IN端点。为0表示OUT端点。
这里千万不要看到IN OUT 端点都是EP1就认为EP1是一个双向端点。按照USB规范,只有EP0是双向端点,其他都只能是单向端点,所以实际上,如下表示是两个不同的端点,这里千万不要混淆了。
#define CDC_IN_EP 0x81 /* EP1 for data IN */
#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
2,LibUsbDotNet在调用Read Write后出错,或者在USB总线上无数据活动,先检查一下LibUsbDotNet的IN OUT端点配置正确了没。在LibUsbDotNet中使用枚举ReadEndpointID,WriteEndpointID表示端点。千万不要混淆了。
3,ST的CDC库存在一些不完整的地方。
在CDC_Control_HS 或者CDC_Control_FS中,里面的指令的收发全是空的,这里必须要添加上对应的实现代码。否则,当USB主机发起一个GET的请求时,device会返回随机的数据。所以最好把CDC中常用的一些指令的收发给添加完整,这里主要是CDC_SET_LINE_CODING, CDC_GET_LINE_CODING两个指令,如果不处理,看返回的随机值情况,有可能在枚举阶段就会出错。
4,ST的USB库在使用DMA时,存在BUG,此BUG从V1.15版本的库函数开始存在,到最新的1.21.0依然存在。表现为当使用了usb的DMA功能后,USB EP0 IN传输出错。这会导致枚举出错,因为枚举使用EP0传输。原因如下:以1.21.0库函数举例说明:
在USB_EP0StartXfer函数中,官方的函数在IN传输时先开启了EP,后使能的DMA,导致传输出错。代码需要修改如下,这里必须要在配置好DMA后才能使能端点。
if (dma == 1) {
USBx_INEP(ep->num)->DIEPDMA = (uint32_t) ( ep->dma_addr );
} else {
/* Enable the Tx FIFO Empty Interrupt for this EP */
if (ep->xfer_len > 0U) {
USBx_DEVICE->DIEPEMPMSK |= 1U << ( ep->num );
}
}
//注意:这里经过修改,必须要配置好DMA后才能使能EP,否则传输会出错
/* EP enable, IN data in FIFO */
USBx_INEP(ep->num)->DIEPCTL |= ( USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA );
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 7月12日消息,据国外媒体报道,本周二,时代华纳表示计划于8月初公布旗下互联网部门AOL的商业战略计划,并否认了《华尔街日报》此前的一份报道,该报道称由于AOL打算提供免费服务,因此到2009 ...… 查看全部问答> |
|
汽车环境对电子产品而言是非常苛刻的:任何连接到12V电源上的电路都必须工作在9V至16V的标称电压范围内,其它需要迫切应对的问题包括负载突降、冷车发动、电池反向、双电池助推、尖峰信号、噪声和极宽的温度范围。在负载突降时,交流发电机的输出电 ...… 查看全部问答> |
|
项目经理掌控着产品从立项、开发到市场,到技术支持等整个环节。硬件工程师要想成为一个项目经理除了要拓宽自己的知识面,提高自己的技术外,要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等 ...… 查看全部问答> |
|
从加入安防的那天起,有种如鱼得水的感觉。一转眼几个年头过去了,感受颇深。安防行业跟其他行业一样,职位很多,销售、技术、工程管理、调试、研发(个人一直认为研发不该属于安防,应属于电子或软件),你对哪个有兴趣?如果你选择了销售,那么恭 ...… 查看全部问答> |
|
公司历经三年,耗资3000万始终没有解决问题。我们系统中GPRS wifi 等大功率大电流的模块都是实时工作 在他们工作的时候 系统中模拟电路 始终受到大功率模块的 辐射干扰和传导干扰导致系统无**常工作。 现在我们系统重新架构如上图所示。所有模块 ...… 查看全部问答> |
|
同步连接问题: 请问谁用过串口或以太网实现过ActiveSync连接啊,我的USB从接口有问题了,所以想改用那些串口,但不知道要修改或设置什么参数,请用过的大虾多指教一下,谢了。… 查看全部问答> |
|
单片机的各种应用产品设计中,LCD和触摸屏作为人机交换的界面使其应用越来越广泛,但在实际应用中单片机要去直接控制大尺寸的彩色LCD(5.6寸以上)是比较困难的。我公司推出的智能显示产品正是为了单片机可以直接控制大尺寸LCD和触摸屏而 ...… 查看全部问答> |
|
接上arm板,可以接收到armlinux启动的信息,但是arm却无法接受键盘的信息!再其他电脑测试下,arm正常 就是串口无法接受信息 这是什么问题??会是串口烧掉了么?烧掉了 为什么还可以发送信息?? 需要换串口芯片??… 查看全部问答> |




