历史上的今天
返回首页

历史上的今天

今天是: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 );


推荐阅读

史海拾趣

Hitachi Metals公司的发展小趣事

自1956年成立以来,Hitachi Metals便逐步在电子材料领域建立了坚实的基础。公司早期便专注于研发和生产用于电子设备的核心部件,如磁性材料。随着电子行业的蓬勃发展,日立金属迅速抓住了市场机遇,推出了高性能的Nd-Fe-B系列烧结磁石和高性能铁氧体烧结磁石,这些材料广泛应用于计算机、半导体集成电路器件及平板显示屏等高科技产品中。凭借其卓越的产品质量和稳定的市场供应,Hitachi Metals在电子材料市场上赢得了广泛的认可。

Continental公司的发展小趣事

Continental公司,即大陆集团,始建于1871年,总部位于德国的汉诺威市。最初,公司的主营业务是生产橡胶制品以及实心马车和自行车轮胎。在公司的早期历史中,一个关键的转折点出现在1882年,公司决定以猖獗的烈马作为品牌LOGO,象征着所生产的轮胎像强壮的烈马一般所向披靡。这一标志不仅赋予了轮胎强大的象征意义,还让人们开始将这些轮胎称为“马牌轮胎”。进入19世纪90年代,大陆集团成为了第一家生产充气马车和自行车胎的德国公司,这标志着其在轮胎制造技术上的重要突破。

Hasco Relays and Electronics International Corp公司的发展小趣事

作为L3Harris Technologies的一部分,Harris(原Harris Corporation)在太空和航空领域也取得了重大突破。公司参与了多个太空任务和航空项目,为这些项目提供了先进的航天器和航空电子系统。这些系统不仅支持了复杂的航天任务,还提升了航空器的性能和安全性。L3Harris在太空和航空领域的持续投入和创新,为其在电子行业中的发展注入了新的动力。

FEMA Electronics Corporation公司的发展小趣事

随着科技的不断发展,FEMA意识到只有不断创新才能在竞争激烈的市场中立于不败之地。因此,公司加大了研发投入,不断推出具有自主知识产权的新产品。其中,一款高性能的集成电路芯片在市场上引起了广泛关注。这款芯片不仅性能卓越,而且具有极高的性价比,迅速赢得了客户的青睐。FEMA凭借这一产品,成功打开了新的市场领域,实现了业务的快速增长。

Advanced Analog公司的发展小趣事

随着公司的不断发展和壮大,Advanced Analog开始积极拓展国际市场。公司在全球范围内设立了多个分支机构和销售网络,与众多国际知名企业和品牌建立了长期稳定的合作关系。通过参与国际电子展会和交流活动,Advanced Analog的产品和技术得到了更广泛的认可和赞誉,进一步提升了公司在国际市场的知名度和影响力。

赛微(Cellwise)公司的发展小趣事

赛微公司自创立之初,就专注于模拟芯片的研发和销售。公司汇聚了一批资深的模拟集成电路设计专家和电池电化学专家,致力于在电池管理芯片和电源管理芯片领域实现技术突破。通过不断的技术创新和研发投入,赛微成功推出了一系列高性能、高可靠性的电池安全芯片、电池计量芯片和充电管理芯片等产品,赢得了市场的广泛认可。

问答坊 | AI 解惑

AOL新战略8月初出炉 时代华纳否认媒体报道

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 7月12日消息,据国外媒体报道,本周二,时代华纳表示计划于8月初公布旗下互联网部门AOL的商业战略计划,并否认了《华尔街日报》此前的一份报道,该报道称由于AOL打算提供免费服务,因此到2009 ...…

查看全部问答>

汽车电子保护电路设计

汽车环境对电子产品而言是非常苛刻的:任何连接到12V电源上的电路都必须工作在9V至16V的标称电压范围内,其它需要迫切应对的问题包括负载突降、冷车发动、电池反向、双电池助推、尖峰信号、噪声和极宽的温度范围。在负载突降时,交流发电机的输出电 ...…

查看全部问答>

硬件工程师如何转变成一个项目经理

项目经理掌控着产品从立项、开发到市场,到技术支持等整个环节。硬件工程师要想成为一个项目经理除了要拓宽自己的知识面,提高自己的技术外,要锻炼出良好的沟通能力,面对压力的调节能力,同一时间处理多个事务的协调和决断能力和良好平和的心态等 ...…

查看全部问答>

探讨安防人生路,大家来现身说法

从加入安防的那天起,有种如鱼得水的感觉。一转眼几个年头过去了,感受颇深。安防行业跟其他行业一样,职位很多,销售、技术、工程管理、调试、研发(个人一直认为研发不该属于安防,应属于电子或软件),你对哪个有兴趣?如果你选择了销售,那么恭 ...…

查看全部问答>

被某人成为世界难题(干扰和信号),坛里的高手来看看

公司历经三年,耗资3000万始终没有解决问题。我们系统中GPRS wifi 等大功率大电流的模块都是实时工作 在他们工作的时候 系统中模拟电路 始终受到大功率模块的 辐射干扰和传导干扰导致系统无**常工作。 现在我们系统重新架构如上图所示。所有模块 ...…

查看全部问答>

同步连接ActiveSync问题

同步连接问题: 请问谁用过串口或以太网实现过ActiveSync连接啊,我的USB从接口有问题了,所以想改用那些串口,但不知道要修改或设置什么参数,请用过的大虾多指教一下,谢了。…

查看全部问答>

5.6寸真彩色智能终端 比 单色液晶屏还低?

  单片机的各种应用产品设计中,LCD和触摸屏作为人机交换的界面使其应用越来越广泛,但在实际应用中单片机要去直接控制大尺寸的彩色LCD(5.6寸以上)是比较困难的。我公司推出的智能显示产品正是为了单片机可以直接控制大尺寸LCD和触摸屏而 ...…

查看全部问答>

串口这是怎么回事???

接上arm板,可以接收到armlinux启动的信息,但是arm却无法接受键盘的信息!再其他电脑测试下,arm正常 就是串口无法接受信息 这是什么问题??会是串口烧掉了么?烧掉了 为什么还可以发送信息?? 需要换串口芯片??…

查看全部问答>