USB接口 ======= 概述 ---- Air720UH/Air720UG,符合USB2.0规范,支持高速(480Mbps)和全速(12Mbps)模式。该接口可用于AT命令传送,数据传输,软件调试和软件升级。 管脚定义 -------- **USB接口定义:** ====== ====== ======================================= 管脚名 管脚号 作用 ====== ====== ======================================= USB_DP 69 USB差分数据正,需要控制到90欧姆差分阻抗 USB_DM 70 USB差分数据负,需要控制到90欧姆差分阻抗 VBUS 71 USB电源,用于USB插入检测 GND 72 地 ====== ====== ======================================= 参考设计 -------- 参考设计电路如下所示: |USB 参考设计| 注意事项如下: 1. USB走线需要严格按照差分线控制,做到平行和等长; 2. USB走线的阻抗需要控制到差分90欧姆; 3. 需要尽可能的减少USB走线的stubs,减少信号发射; 4. 在靠近USB连接器或者测试点的地方添加TVS保护管,由于USB的速率较高,需要注意TVS管的选型,保证选用的TVS保护管的寄生电容小于1pF 1. VBUS作为USB插入检测,必须连接USB电源或者外接电源,否则USB无法被检测到,另外VBUS的检测电压要大于3.3V AT版本相关控制指令 ------------------ 设置\ **USB**\ 模式:\ **AT+SETUSB** ------------------------------------ 语法规则: ======== ============================== ============ 命令类型 语法 返回 ======== ============================== ============ 设置命令 AT+SETUSB=[,,] OK 查询命令 AT+SETUSB? mode: \ Vid: \ Pid: \ OK 测试命令 AT+SETUSB=? OK 注意事项 该命令可以关机自动保存 ======== ============================== ============ 参数定义: +--------+-------------------------+------+-------------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +========+=========================+======+=========================+ | | USB的使用模 | 1 | RNDIS+ | | | 式,设置命令的必选参数 | | AT+PPP+DIAG模式,缺省值 | +--------+-------------------------+------+-------------------------+ | | | 2 | ECM+AT+PPP+DIAG模式 | +--------+-------------------------+------+-------------------------+ | | | 3 | 保留 | +--------+-------------------------+------+-------------------------+ | | Vender | | Air720U/Air723U/Ai | | | id,设置命令的可选参数 | | r724U系列缺省值为0x1782 | +--------+-------------------------+------+-------------------------+ | | Product | | Air720U/Air723U/Ai | | | id,设置命令的可选参数 | | r724U系列缺省值为0x4e00 | +--------+-------------------------+------+-------------------------+ 举例: ==================== =========== =========== 命令(→)/ 返回(←) 实例 解释和说明 ==================== =========== =========== → AT+SETUSB=2 设成ECM网卡 ← OK → AT+SETUSB? ← mode: 1 \ vid: 0x1782 \ pid: 0x4e00 \ OK ==================== =========== =========== 开关\ **USB**\ :\ **AT+USBSWITCH** ----------------------------------- 语法规则: +----------+----------------------------+----------------------------+ | 命令类型 | 语法 | 返回 | +==========+============================+============================+ | 设置命令 | AT+USBSWITCH= | OK | +----------+----------------------------+----------------------------+ | 查询命令 | AT+USBSWITCH? | +USBSWITCH: . | +----------+----------------------------+----------------------------+ | | | OK | +----------+----------------------------+----------------------------+ | 测试命令 | AT+USBSWITCH=? | +USBSWITCH: (0,1) | +----------+----------------------------+----------------------------+ | | | 0. Disable USB | +----------+----------------------------+----------------------------+ | | | 1. Enable USB | +----------+----------------------------+----------------------------+ | | | OK | +----------+----------------------------+----------------------------+ | 注意事项 | 关闭USB后就不能 | | | | 通过USB虚拟串口再启用USB了 | | +----------+----------------------------+----------------------------+ 参数定义: ====== ============== ======== ============ 参数 定义 取值 对取值的说明 ====== ============== ======== ============ 开关USB 0 关闭USB \ 1 开启USB 字符串补充说明 Disabled 为0时 \ Enabled 为1时 ====== ============== ======== ============ 举例: ==================== ======================= ========== 命令(→)/ 返回(←) 实例 解释和说明 ==================== ======================= ========== → AT+USBSWITCH=0 关闭USB ← OK → AT+USBSWITCH? ← +USBSWITCH: 0. Disabled \ OK ==================== ======================= ========== **USB**\ 功能设置:**AT*USB*\* ------------------------------ 语法规则: ======== ========================================== ================ 命令类型 语法 返回 ======== ========================================== ================ 设置命令 AT*USB=, OK 查询命令 AT*USB? \*USB \ CPTRACE: \ NETMODE: \ DIAG: \ RSTDELAY: \ OK 测试命令 AT*USB=? OK 注意事项 更改的设置要用AT*USB保存才能在重启后也生效 ======== ========================================== ================ 参数定义: ======= ============ ======== ======================== 参数 定义 取值 对取值的说明 ======= ============ ======== ======================== 要设置的选项 CPTRACE 打开或关闭CP Trace \ NETMODE 启用Rndis或Ecm \ DIAG 打开或关闭CP和AP Trace \ RSTDELAY 设置Reset延时时间 值 0 关闭相应功能或启用Rndis \ 1 开启相应功能或启用Ecm \ 1-63335 设置RSTDELAY时间,单位us ======= ============ ======== ======================== 举例: ==================== ================== ================= 命令(→)/ 返回(←) 实例 解释和说明 ==================== ================== ================= → AT*USB=RSTDELAY,20 设置Reset延时时间 ← OK → AT*USB 保存设置 ← OK ==================== ================== ================= LUAT开发相关接口 ---------------- USB的虚拟AT口可以被Lua代码控制,作为普通的串口收发数据。 .. code:: 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口。 .. code:: c 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); } } .. |USB 参考设计| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200806222527958_USB.png