吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用i.MX RT1060連接USB 4G module(RNDIS模式)

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2023-05-04 10:45 ? 次閱讀

NXPSDK里面有一個(gè)例程evkbmimxrt1060_lwip_dhcp_usb_bm,該例程可以實(shí)現(xiàn)連接3款不同的支持RNDIS的手機(jī),實(shí)現(xiàn)USB 4G上網(wǎng)功能。但是如果客戶實(shí)際使用的上網(wǎng)終端是4G模塊,而不是這三款手機(jī),這個(gè)例程就有可能不能直接跑起來,需要我們?nèi)プ鲞m配。

本文就將介紹,當(dāng)上網(wǎng)的終端更改為Quectel的4G LTE模塊C200A-CN時(shí)(支持RNDIS模式),如何來做響應(yīng)的適配,并實(shí)現(xiàn)上網(wǎng)的功能。

一、基礎(chǔ)知識(shí)

1.1 什么是RNDIS

RNDIS = Remote Network Driver Interface Specification,即遠(yuǎn)程網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范。這是微軟定義的一套基于USB的通信協(xié)議。基于該協(xié)議的USB設(shè)備,可以免驅(qū)直接接入windows系統(tǒng),在windows操作系統(tǒng)上顯示為一個(gè)網(wǎng)卡。

1.2網(wǎng)絡(luò)層次模型

使用RT1060連接USB 4G module上網(wǎng)的網(wǎng)絡(luò)層次模型如下:

f85057ea-e6b2-11ed-ab56-dac502259ad0.png

從便于理解的角度上,我們可以把RNDIS看成是一個(gè)特殊的PHY,完成MAC的傳輸。

1.3 RNDIS上網(wǎng)接口/端點(diǎn)分析

在SDK原例程中,使用了2個(gè)接口,3個(gè)端點(diǎn),見下圖。

f85dcb82-e6b2-11ed-ab56-dac502259ad0.png

其中數(shù)據(jù)接口就是用來傳輸以太包的,每個(gè)方向有一個(gè)端點(diǎn)。RNDIS接口主要是用來查詢?cè)O(shè)備狀態(tài)。

1.4 C200A接口/端點(diǎn)分析

C200A的實(shí)現(xiàn)了5個(gè)接口,其中包含了上述接口:

f868c884-e6b2-11ed-ab56-dac502259ad0.png

額外需要使用到的接口是AT接口,見下圖。

f874fae6-e6b2-11ed-ab56-dac502259ad0.png

AT接口的功能是撥號(hào),這里面包括了對(duì)模塊的狀態(tài)查詢和控制等。我們需要在這里向4G模塊查詢相關(guān)的狀態(tài),并且發(fā)送聯(lián)網(wǎng)命令,這樣模塊才能接入互聯(lián)網(wǎng),這樣后面發(fā)送的IP包才能和互聯(lián)網(wǎng)進(jìn)行通信。使能AT接口以及在AT接口上撥號(hào),是我們使能/適配新的4G module需要做的主要工作。 4G模塊其他定義的接口,我們這里并不需要使用到,所以本文在此不做介紹。

1.5關(guān)于NXP SDK USB HOST的一些基礎(chǔ)知識(shí)

1)SDK會(huì)自動(dòng)解析配置描述符,這里會(huì)識(shí)別出配置描述符中所有的接口和端點(diǎn)。參見USB_HostParseDeviceConfigurationDescriptor(),這個(gè)函數(shù)在/evkbmimxrt1060_lwip_dhcp_usb_bm_c200a/usb/host/usb_host_devices.c。

f8814198-e6b2-11ed-ab56-dac502259ad0.png

2)Event回調(diào),參見USB_HostEvent(),此函數(shù)在/evkbmimxrt1060_lwip_dhcp_usb_bm_c200a/lwip/port/usb_ethernetif_bm.c。

f88e0cd4-e6b2-11ed-ab56-dac502259ad0.png

3)為每個(gè)接口open pipe。

參見USB_HostCdcOpenDataInterfac(),USB_HostCdcOpenControlInterface(), in usb_host_cdc.c。

f89ee6ee-e6b2-11ed-ab56-dac502259ad0.png

4)狀態(tài)機(jī)維護(hù)

狀態(tài)機(jī)的維護(hù)請(qǐng)參見USB_HosCdcRndisTask(),以及 USB_HostCdcRndisControlCallback() in /evkbmimxrt1060_lwip_dhcp_usb_bm_c200a/lwip/port/usb_ethernetif_bm.c 下圖展示的是默認(rèn)的狀態(tài)機(jī),我們需要做一些調(diào)整來使能4G模塊的AT接口以及在AT接口上撥號(hào)。

f8adfd28-e6b2-11ed-ab56-dac502259ad0.png ?

二、實(shí)現(xiàn)細(xì)節(jié)

基于前面介紹的基礎(chǔ)知識(shí),本章節(jié)主要介紹適配到C200A的實(shí)現(xiàn)細(xì)節(jié),這里更側(cè)重于代碼更改來講述。代碼的更新主要集中于usb_ethernet_bm.c和usb_ethernet.h。

增加AT接口對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)

f8bc1e76-e6b2-11ed-ab56-dac502259ad0.png

更新狀態(tài)機(jī)

f8c45be0-e6b2-11ed-ab56-dac502259ad0.png

增加對(duì)應(yīng)的API和callback,具體細(xì)節(jié)請(qǐng)參見本文相關(guān)的代碼,下面列出了關(guān)鍵的API。

USB_HostCdcRndisATInCallback();
USB_HostCdcRndisATOutCallback();
dial_tx(); // Send command on AT interface
dial_rx(); // Receive message from AT interface
lte_dial(); // Dial, then USB 4G module can connect to internet
USB_HostCdcRndisC200ACallback();
ep0_communicate(); // API used for AT interface enablement, to send/receive command/message to/from EP0
init_c200a(); // Initiate C200A, then AT interface communication is available

支持的最大接口數(shù)。

這個(gè)最大接口數(shù)在連接不同的USB 4G Module的時(shí)候,可能需要更改。比如對(duì)于LE910C1-EU,需要更改為8。對(duì)于本文中使用到的C200A,默認(rèn)的5就可以工作。

#define USB_HOST_CONFIG_CONFIGURATION_MAX_INTERFACE (8U)

更新狀態(tài)機(jī),主要代碼變動(dòng)在evkbmimxrt1060_lwip_dhcp_usb_bmlwipportusb_ethernetif_bm.c中的USB_HostCdcRndisControlCallback()以及USB_HosCdcRndisTask()中,具體細(xì)節(jié)請(qǐng)參見本文相關(guān)的代碼。

適配4G模塊的RNDIS接口和AT接口,這里的AT接口序號(hào)是通過USB協(xié)議分析儀抓出的log反向推導(dǎo)出來的。我們需要把協(xié)議棧解析出來的接口綁定到g_RndisInstance.atInterfaceHandle上。以下代碼位于evkbmimxrt1060_lwip_dhcp_usb_bmlwipportusb_ethernetif_bm.c 中的

USB_HostCdcRndisEvent();。該代碼直接將協(xié)議棧解析好的interface[3](通過usb分析儀抓包解析得出)付給對(duì)應(yīng)的接口handle。

f8ce5cee-e6b2-11ed-ab56-dac502259ad0.png

三、注意事項(xiàng)

由于4G模塊比較耗電,在本例中i.MX RT1060模塊需要使用電源適配器外接供電。否則如果供電不足會(huì)導(dǎo)致4G模塊重復(fù)復(fù)位。

f8d9cf98-e6b2-11ed-ab56-dac502259ad0.jpg

四、小結(jié)

在萬物互聯(lián)的時(shí)代,越來越多的嵌入式設(shè)備會(huì)有接入互聯(lián)網(wǎng)的需求。本文闡述了通過USB去連接4G模塊去實(shí)現(xiàn)上網(wǎng)的相關(guān)基礎(chǔ)知識(shí)和實(shí)現(xiàn)細(xì)節(jié)。希望這些內(nèi)容能在讀者在碰到相關(guān)的應(yīng)用時(shí)能有所幫助。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • NXP
    NXP
    +關(guān)注

    關(guān)注

    60

    文章

    1289

    瀏覽量

    185494
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8691

    瀏覽量

    151915
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7980

    瀏覽量

    266085
  • Module
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    12904
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1045

    瀏覽量

    46271

原文標(biāo)題:使用i.MX RT1060連接USB 4G module(RNDIS模式)

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    i.MX RT1060i.MX RT1064的遷移手冊(cè)

    i.MX RT1060i.MX RT1064的遷移指南
    發(fā)表于 12-12 07:21

    i.MX RT1060跨界處理器產(chǎn)品數(shù)據(jù)手冊(cè)

    i.MX RT1060跨界處理器(消費(fèi)級(jí))數(shù)據(jù)手冊(cè)
    發(fā)表于 12-12 08:08

    i.MX RT1060功耗和測(cè)量資料分享

    i.MX RT1060的功耗和測(cè)量
    發(fā)表于 12-12 08:08

    i.MX RT1060產(chǎn)品使用壽命的估計(jì)方法

    i.MX RT1060產(chǎn)品使用壽命估計(jì)
    發(fā)表于 12-12 07:16

    i.MX RT1060的加強(qiáng)功能介紹

    i.MX RT1060的加強(qiáng)功能
    發(fā)表于 12-12 06:10

    i.MX RT1060跨界處理器產(chǎn)品數(shù)據(jù)手冊(cè)

    i.MX RT 1060跨界處理器(工業(yè)級(jí))數(shù)據(jù)手冊(cè)
    發(fā)表于 12-12 07:14

    如何在RT1060/1061上運(yùn)行LAN 8720的低功耗模式?

    各位,根據(jù)測(cè)試,我們需要驗(yàn)證 LAN 8720 在 RT1060/RT1061 MCU 上的低功耗模式。有沒有源代碼可以分享給我們?cè)?b class='flag-5'>RT1060/R
    發(fā)表于 04-06 06:19

    AzureWave AW-AM510-uSD和i.MX RT1060 EVK一直收到SDIO驅(qū)動(dòng)程序初始化失敗怎么解決?

    我正在使用 AzureWave AW-AM510-uSD 和 i.MX RT1060 EVK 板來試用 evkmimxrt1060_wifi_cli SDK 示例項(xiàng)目。我已經(jīng)轉(zhuǎn)到“/source
    發(fā)表于 04-28 07:35

    i.MX RT系列(例如 RT1050/1060)有多少個(gè)PWM通道?

    i.MX RT 系列(例如 RT1050/1060)有多少個(gè) PWM 通道? 我可以像在 KV58 MCU(兩個(gè) flexPWM 模塊)上做同樣的事情嗎?
    發(fā)表于 05-18 07:07

    i.MX RT開發(fā)筆記-08 | i.MX RT1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    系列文章目錄i.MX RT開發(fā)筆記-01 | 初識(shí) i.MX RT1062 跨界MCUi.MX RT
    發(fā)表于 12-01 13:51 ?2次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>開發(fā)筆記-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中斷向量控制器NVIC(按鍵中斷檢測(cè))

    RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發(fā)表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發(fā)布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    i.MX RT超低功耗模式捉蟲記

    SNVS模式i.MX RT10XX和i.MX RT11XX系列MCU中功耗最低的狀態(tài),其標(biāo)志性特點(diǎn)是除SNVS電源域保持供電,其余的電源域
    發(fā)表于 02-08 15:14 ?0次下載
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>超低功耗<b class='flag-5'>模式</b>捉蟲記

    i.MX RT的FlexRAM配置問題

    i.MX RT的FlexRAM配置問題
    的頭像 發(fā)表于 10-24 15:46 ?865次閱讀
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的FlexRAM配置問題

    恩智浦i.MX RT1060/1010上串行NOR Flash冗余程序啟動(dòng)設(shè)計(jì)

    恩智浦i.MX RT1060/1010上串行NOR Flash冗余程序啟動(dòng)設(shè)計(jì)
    的頭像 發(fā)表于 09-26 16:53 ?805次閱讀
    恩智浦<b class='flag-5'>i.MX</b> <b class='flag-5'>RT1060</b>/1010上串行NOR Flash冗余程序啟動(dòng)設(shè)計(jì)

    基于 NXP i.MX RT1060 + IW416 的 Matter Thermostat 智慧溫控器應(yīng)用方案之 Apple 生態(tài)系統(tǒng)

    NXP i.MX RT1060 是一款搭載 Arm Cortex-M7 的跨界微控制器,具有強(qiáng)大的處理能力和低功耗特性,而 IW416 則是一款高度集成的 Wi-Fi 4 和 Bluetooth 5.2 系統(tǒng)單芯片(SoC),提
    的頭像 發(fā)表于 03-28 15:54 ?805次閱讀
    基于 NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT1060</b> + IW416 的 Matter Thermostat 智慧溫控器應(yīng)用方案之 Apple 生態(tài)系統(tǒng)
    澳门百家乐死局| 百家乐官网任你博娱乐平台| 大发888游戏平台hplsj| 百家乐烫金筹码| 百家乐官网英皇娱乐城| bet365官方网站| 娱乐城百家乐的玩法技巧和规则| 百家乐官网视| 博九网百家乐官网游戏| 大发888娱乐场下载专区| 温州市百家乐ktv招聘| 百家乐官网发脾机| 盱眙县| 大发888在线娱乐城加盟合作 | 邯郸百家乐官网园怎么样| 天博国际| 大发888最新网站| 真人百家乐大转轮| 鼠和猴做生意招财| 百家乐官网赌场群| 崇仁县| 德州扑克胜率| 成都百家乐的玩法技巧和规则| 百家乐怎么赢9| 什么事百家乐官网的路单 | 水果机技术打法| 网络百家乐网站| 方形百家乐官网筹码| 玩百家乐官网如何硬| 紫金县| bet365维护| 百家乐桌子定制| 百家乐桌布橡胶| 百家乐游戏算牌| 百家乐官网翻天超清| 百家乐官网娱乐平台真人娱乐平台 | 澳门百家乐官网路单怎么看| 百家乐官网赌博怎么玩| 国际娱乐中心| 大发888线上| 威尼斯人娱乐城简介|