USB接口¶
概述¶
Air724UG 支持1路高速USB接口,符合USB2.0规范,支持高速(480Mbps)和全速(12Mbps)模式。该接口可用于AT命令传送,数据传输,软件调试和软件升级。
管脚定义¶
USB接口定义:
管脚名 |
管脚号 |
作用 |
---|---|---|
USB_DP |
16 |
USB差分数据正,需要控制到90欧姆差分阻抗 |
USB_DM |
15 |
USB差分数据负,需要控制到90欧姆差分阻抗 |
VBUS |
14 |
USB电源,用于USB插入检测 |
GND |
17 |
地 |
参考设计¶
参考设计电路如下所示:
注意事项如下: 1. USB走线需要严格按照差分线控制,做到平行和等长; 2. USB走线的阻抗需要控制到差分90欧姆; 3. 需要尽可能的减少USB走线的stubs,减少信号发射; 4. 在靠近USB连接器或者测试点的地方添加TVS保护管,由于USB的速率较高,需要注意TVS管的选型,保证选用的TVS保护管的寄生电容小于1pF 1. VBUS作为USB插入检测,必须连接USB电源或者外接电源,否则USB无法被检测到,另外VBUS的检测电压要大于3.6V
AT版本相关控制指令¶
设置USB模式:AT+SETUSB¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+SETUSB=<mode>[,<vid>,<pid>] |
OK |
查询命令 |
AT+SETUSB? |
mode: <mode> |
Vid: <vid> |
||
Pid: <pid> |
||
OK |
||
测试命令 |
AT+SETUSB=? |
OK |
注意事项 |
该命令可以关机自动保存 |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mode> |
USB的使用模 式,设置命令的必选参数 |
1 |
RNDIS+ AT+PPP+DIAG模式,缺省值 |
2 |
ECM+AT+PPP+DIAG模式 |
||
3 |
保留 |
||
<vid> |
Vender id,设置命令的可选参数 |
Air720U/Ai r724U系列缺省值为0x1782 |
|
<pid> |
Product id,设置命令的可选参数 |
Air720U/Ai r724U系列缺省值为0x4e00 |
举例:
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+SETUSB=2 |
设成ECM网卡 |
← |
OK |
|
→ |
AT+SETUSB? |
|
← |
mode: 1 |
|
vid: 0x1782 |
||
pid: 0x4e00 |
||
OK |
开关USB:AT+USBSWITCH¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT+USBSWITCH=<mode> |
OK |
查询命令 |
AT+USBSWITCH? |
+USBSWITCH: <mode>. <desc> |
OK |
||
测试命令 |
AT+USBSWITCH=? |
+USBSWITCH: (0,1) |
|
||
|
||
OK |
||
注意事项 |
关闭USB后就不能 通过USB虚拟串口再启用USB了 |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<mode> |
开关USB |
0 |
关闭USB |
1 |
开启USB |
||
<desc> |
字符串补充说明 |
Disabled |
<mode>为0时 |
Enabled |
<mode>为1时 |
举例:
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT+USBSWITCH=0 |
关闭USB |
← |
OK |
|
→ |
AT+USBSWITCH? |
|
← |
+USBSWITCH: 0. Disabled |
|
OK |
USB功能设置:**AT*USB**¶
语法规则:
命令类型 |
语法 |
返回 |
---|---|---|
设置命令 |
AT*USB=<key>,<value> |
OK |
查询命令 |
AT*USB? |
*USB |
CPTRACE:<value> |
||
NETMODE:<value> |
||
DIAG:<value> |
||
RSTDELAY:<value> |
||
OK |
||
测试命令 |
AT*USB=? |
OK |
注意事项 |
更改的设置要用AT*USB保存才能在重启后也生效 |
参数定义:
参数 |
定义 |
取值 |
对取值的说明 |
---|---|---|---|
<key> |
要设置的选项 |
CPTRACE |
打开或关闭CP Trace |
NETMODE |
启用Rndis或Ecm |
||
DIAG |
打开或关闭CP和AP Trace |
||
RSTDELAY |
设置Reset延时时间 |
||
<value> |
值 |
0 |
关闭相应功能或启用Rndis |
1 |
开启相应功能或启用Ecm |
||
1-63335 |
设置RSTDELAY时间,单位us |
举例:
命令(→)/ 返回(←) |
实例 |
解释和说明 |
---|---|---|
→ |
AT*USB=RSTDELAY,20 |
设置Reset延时时间 |
← |
OK |
|
→ |
AT*USB |
保存设置 |
← |
OK |
LUAT开发相关接口¶
USB的虚拟AT口可以被Lua代码控制,作为普通的串口收发数据。
-- 此时AT口收到的数据不会传给AT引擎处理,而是交给Lua里设置的回调函数
uart.setup(uart.USB, 0, 0, uart.PAR_NONE, uart.STOP_1)
-- 设置有数据到时的回调函数
uart.on(uart.USB, "receive", usbreader)
-- 简单打印收到的数据
local function usbreader()
local s
while true do
s = uart.read(uart.USB, "*l", 0)
if string.len(s) ~= 0 then
log.info("usb rcv", s)
else
break
end
end
end
CSDK开发相关接口¶
与Lua一样,在CSDK中也可以控制虚拟AT口。
T_AMOPENAT_UART_PARAM uatCfg;
memset(&uatCfg, 0, sizeof(T_AMOPENAT_UART_PARAM));
uatCfg.baud = OPENAT_UART_BAUD_115200;
uatCfg.dataBits = 8;
uatCfg.stopBits = 1;
uatCfg.parity = OPENAT_UART_NO_PARITY;
uatCfg.flowControl = OPENAT_UART_FLOWCONTROL_NONE;
uatCfg.txDoneReport = FALSE;
uatCfg.uartMsgHandle = NULL;
// 打开at uart
iot_uart_open(UART_USB, &uatCfg);
CHAR buff[64];
CHAR xbuf[128];
UINT32 len = 0;
while (1)
{
// 读取数据
len = iot_uart_read(UART_USB, buff, 64, 0 /*timeout not yet support*/);
if (len)
{
snprintf(xbuf, len, "%s", buff);
iot_debug_print("recv %s", xbuf);
}
}
相关资料以及购买链接¶
相关开发板购买链接 Air724UG开发板 Air724 开发板使用说明 相关软件资料下载
常见问题¶
https://luatdoc.papapoi.com/638/ ### 1.识别不到usb的可能情况: (1)没有安装usb驱动 (2)DM、DP短路、接反或者被打坏 (3)VBUS引脚没接或者VBUS电压值低于3.6V (4)查看模块是否正常开机(测量1.8V引脚电压,开机是1.8v) (5)如果电脑可以进入下载模式,但是识别不到USB端口,有可能是模块变砖,可以重新烧录救砖固件恢复
2.如何关闭usb枚举出来的端口¶
模块开机后,usb默认会枚举出Modem、AT、AP、CP四个端口,可通过AT+USBSWITCH命令打开或者断臂usb枚举功能 * AT版本 打开USB端口枚举功能:AT+USBSWITCH=1 关闭USB端口枚举功能:AT+USBSWITCH=0 * Luat版本 打开USB端口枚举功能:ril.request(“AT+USBSWITCH=1”) 关闭USB端口枚举功能:ril.request(“AT+USBSWITCH=0”)