USB接口
1、模组管脚;
-
USB_VBUS,PIN2;
-
USB_DP,PIN3;
-
USB_DM,PIN4;
说明:
在有些资料中将USB_DM写成了USB_DN,历史原因一直将错误写法延续到了现在,实际是USB_DM;
USB_DM,USB Data Minus,USB数据负信号;
USB_DP,USB Data Positive,USB数据正信号;
2、功能说明;
- 支持USB Full speed,全速模式,最高支持12Mbps,即1.5MB/s;
- 支持USB High speed,高速模式,最高支持480Mbps,即40MB/s;
- 支持USB下载软件,Boot from USB;
- 支持USB RNDIS,搭配Windows/Linux实现快速上网;
- 仅支持USB Slave,不支持USB HOST;
3、相关提示;
与USB相关的操作,重点关注如下几个方面:
-
上电开机前将USB_BOOT(GPIO0)上拉至VDD_EXT,模组将进入USB下载模式(Boot from USB);
-
模组内部用于USB部分供电的电源是 LDO33USB(3.3V输出),该LDO只为USB功能提供电源,模组管脚未引出;
-
低功耗模式pm.WORK_MODE,1 和 PSM+模式pm.WORK_MODE,3 下会将LDO33USB关闭;
-
模组VBAT最低2.3V左右(实测最低可至2.1V)时仍可工作,但因此时LDO33USB的输入(2.3V)已远低于输出(3.3V)所以USB已无法正常工作;
-
VBUS,在模组内部实际接的是WAKEUP1,USB_VBUS的5V经过分压后接到WAKEUP1,其用途是:
a. 在PSM+模式pm.WORK_MODE,3 下,VBUS(WAKEUP1)的作用只是作为中断唤醒模组,模组可以判断由WAKEUP中断唤醒但无法判断是WAKEUP0-5中的哪个WAKEUP唤醒,所以,VBUS插入后可以唤醒但是否执行USB相关动作跟VBUS无关;
USB插入的判断,以及USB插入后是否执行相应动作的判断,由底层其它方式判断;
b. 在常规模式pm.WORK_MODE,0 和低功耗模式pm.WORK_MODE,1 下,模组可以判断是由哪个WAKEUP产生的中断信号,进而可以执行用户脚本中对应的中断回调函数;
c. 特别说明!VBUS本身并不参与任何和系统供电相关的用途,更无法替代VBAT,其作用仅限于上述两点;
d. 经常遇到客户问:VBUS不接可以吗?
可以,代价是在PSM+模式pm.WORK_MODE,3 下 USB插入(VBUS有5V电压)时,无法将模组唤醒;
在常规模式pm.WORK_MODE,0 和低功耗模式pm.WORK_MODE,1 下 对USB插入的判断没有影响;
4、硬件参考设计;
-
USB接口的PCB设计中,差分信号线(USB_DP/USB_DM)的阻抗需控制在90Ω±10%(即81Ω~99Ω),这是保证信号完整性的关键参数,阻抗不匹配将会导致信号反射、眼图闭合、误码率上升,甚至通信失败;
-
布线原则:
差分对等长匹配:长度差控制在5mil以内,避免时序偏差和共模干扰;
减少换层过孔:每次换层加一对回流地过孔,维持信号回流路径连续性,降低阻抗不连续风险;
保持完整参考平面:避免跨分割,优先内层布线,包地处理减少串扰;
- USB接口容易引入静电干扰,因此需要在电路上增加TVS保护;
USB High speed差分数据线选择TVS的最关键参数是结电容容值,需要小于1pF;
USB数据线上用的TVS物料推荐如下;
样品购买链接:USB信号用,DFN1006-2封装,AR0521P1STY,应能微-淘宝网
USB VBUS电源上用的TVS物料推荐如下;
样品购买链接:VBUS电源用,DFN1610-2封装,AU0571P6H,应能微-淘宝网
5、与USB相关的LuatOS API;
gpio库 https://docs.openluat.com/osapi/core/gpio/
gpio.WAKEUP1
常量含义:VBUS,USB唤醒脚,不支持输出;
数据类型:number;
示例代码:
function wakeup1_callback()
log.info("gpio", "wakeup1 interrupt triggered")
end
gpio.setup(gpio.WAKEUP1, wakeup1_callback)
适用产品型号:仅Air700EXX系列支持,Air780EXXX系列支持,Air8000系列支持;
pm库 52 pm - 合宙模组资料中心 ;
pm.USB
常量含义:USB的供电使能;
数据类型:number;
适用产品:Air780E系列、Air700E系列、Air8000系列;
示例代码:--如下方所示,关闭USB的供电使能,即可关闭USB功能;
pm.power(pm.USB ,false)
mobile库 43 mobile - 合宙模组资料中心 ;
mobile.CONF_USB_ETHERNET
常量含义:蜂窝网络模块的USB以太网卡控制;
数据类型:number;
取值范围:0x01:开启RNDIS功能;
0x03:开启RNDIS功能,使用NAT模式(基站分配ip);
0x05:开启ECM功能;
0x07:开启ECM功能,使用NAT模式(基站分配ip);
注意事项:控制设备的USB以太网卡功能,通过位操作来控制不同的功能;
仅在开启前可以修改;bit2:协议选择(1ECM协议,0RNDIS协议);
必须在飞行模式下设置才能生效;
仅支持Air780EXXX系列和Air8000系列模块;
示例代码:-- 进入飞行模式
mobile.flymode(0, true)
-- 设置开启RNDIS协议(bit0=1, bit1=1, bit2=0 → 0x03)
mobile.config(mobile.CONF_USB_ETHERNET, 0x03)
-- 退出飞行模式
mobile.flymode(0, false)
UART库 66 uart - 合宙模组资料中心 ;
uart.VUART_0
常量含义:usb虚拟端口(适用于Air780EXX系列和Air8000系列模组);
数据类型:number;
示例代码: uart.setup(uart.VUART_0, 115200, 8, 1);