初级会员

- 积分
- 89
- 金钱
- 89
- 注册时间
- 2020-12-1
- 在线时间
- 18 小时
|
EC20是移远通信推出的 LTE Cat 4 无线通信模块,采用 LTE 3GPP Rel.11 技术,支持最大下行速率 150Mbps 和最大上行速率 50Mbps,可以使用串口或者USB口驱动。EC20内部集成了TCP/IP协议栈和AT指令集,我们可以使用串口+AT指令去驱动他,也可以使用USB接口去驱动他,由于USB接口速度比较快,所以使用USB接口驱动,速度可以有较大的提升。STM32F407系列单片机带有全速USB OTG接口,EC20使用的是标准的USB2.0高速接口,同时向下兼容全速接口,这里我们尝试使用STM32F407VET6去驱动他。
我们把EC20模块插到电脑上,安装好驱动,这时我们打开BUS HOUND软件会发现设备列表里多出了几个COM口,有AT PORT,DM PORT等等,其中AT PORT接口是AT指令调试接口,我们打开串口调试助手,
开启这个接口,就可以像串口一样使用AT指令驱动他了,使用的AT指令和串口完全一样。由于不是真正的虚拟串口,所以波特率选项是无效的,我们的电脑和EC20的通信速度一直保持USB2.0高速模式。除AT PORT外的其他接口,通常是在LINUX或WINDOWS上使用的,不仅需要单独的TCP/IP协议栈,还需要额外的USB网络协议支持,在单片机上实现,难度非常大。这里我们就是使用这个AT PORT调试接口来驱动EC20模块。
EC20的配置描述符有好多个接口,每个接口描述符的接口类型都是0XFF,也就是厂商自定义类型,不是USB的标准类型,所以STM32 HAL CDC库无法识别。HAL库无法识别,也就无法使用HAL库提供的CDC类驱动,但实际上HAL库在完成对EC20的枚举后,EC20的AT PORT接口默认就可以直接使用了。这里笔者不使用HAL库提供的CDC类驱动,而是使用轮询寄存器的方式,来实现对EC20的驱动,好像使用串口那样,由于这种方式属于阻塞传输,所以超时机制是必不可少的,实测速度可达500KB/S。
|
|