关于USB开发的前言(学前必看)

本文讲述了作者在面对新产品大容量固件下载需求时,如何从零开始学习并成功开发出USB固件,以提高通信速度和实现自动识别功能的过程。适合有一定基础的嵌入式工程师和初学者阅读。
摘要由CSDN通过智能技术生成

目录

需求

解决 

结果

声明


需求

在产品研发的时候,因为我们的产品是需要用配套的上位机下载固件,以往所有的产品都是用的串口,等我接手的时候,是属于新的一类产品,在下载固件的时候通常比较大,基本上都大于1MB,这个固件对于嵌入式系统来说是非常大的,而且这个产品还要一个需求就是希望我们的用户可以进行傻瓜式下载,不用考虑什么端口什么的,也就是说我要优化通信速度,传统的串口115200波特率下载一个固件几乎要用1分钟到2分钟,我在开发的时候已经被折磨过,还有就是我们的产品在和上位机连接时,能自动识别,而不需要用户自己去选择端口,避免这种用户操作,因为考虑到用户几乎都是非开发者。

解决 

所有有了上述需求后,我被任命开发USB的固件替换传统的串口通信,就可以完美的解决上面的问题,而且还被指定要写成 Winusb设备,这是一个专用于微软操作系统上的设备类,这个东西是个好东西,但是国内对其的资料非常少。可以实现Windows下免驱动使用, 免驱动很关键,我们都想让用户避免选择端口了,那自然是不可能让用户再自己安装驱动了。

 结果

在此之前我对USB的认识只停留在最表面,我只知道这个东西,可以说是从0开始,但是我们干嵌入式的不都是这样嘛。从我开始认识它到灵活应用它花了接近半个月。我自认为我的学习能力比较强,在查询了大量的规范和工程示例,和不计期数的datasheet后写了很多相关的固件,并且通过测试和实践都可以完美使用。所以在此专栏下写下历程和总结,根据自己对MCU/SOC中USB外设的理解进行讲述。

声明

本专栏下的情景只属于于嵌入式开发中的USB硬件控制器在主机或设备下的工作,因为术业有专业,和专门写USB协议的老哥自然是比不了,但是他们写的往往是应用层或者是和嵌入式情景不相关的开发。

适用:嵌入式工程师以及在学习单片机开发的初学者和想扩展知识的人群。

要求:有单片机的基础开发能力,熟悉基本外设,和基本的通信协议(UART、I2C、SPI),因为如果没有这些能力,那么对于学习USB来说有点过早,而且会很吃力,建立学习完基本的通信协议再来学习。

准备:一块带有USB外设的开发板和逻辑分析仪(有就最好,没有也没事),要保证开发板的外部电路对于USB是没有问题的。

在学习完本专栏后,你可以理解USB的本质,彻底应用任何MCU/SOC中USB外设,以及具备写各种设备类的能力。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值