1. RK3576与广和通NL668-AM 4G模块移植方案解析
在嵌入式Linux系统开发中,4G模块的集成是一个常见但颇具挑战性的任务。本文将详细介绍如何在RK3576平台上完整移植广和通NL668-AM 4G模块的全过程,包括硬件连接、设备树配置、内核驱动、拨号设置以及调试技巧。这个方案已经在我们多个工业物联网项目中验证通过,具有较高的稳定性和实用性。
2. 硬件设计与连接规范
2.1 模块选型与特性分析
广和通NL668-AM系列是Cat.4 LTE模块,支持4G全网通。在实际项目中,我们主要使用以下两种型号:
- NL668-AM-00:完整版本,支持4+2 MCP配置,具备MAIN_ANT、DIV_ANT和GNSS_ANT接口
- NL668-AM-01:精简版本,在AM-00基础上去除了Band71支持
特别需要注意的是,NL668-AM存在两种不同的USB VID/PID组合:
- IOT版本:VID:PID = 1508:1001(无MBIM接口)
- 笔记本电脑M.2版本:VID:PID = 2cb7:01a0(带MBIM接口)
2.2 硬件连接原理
RK3576与NL668-AM的连接需要特别注意电源、控制和数据三个部分:
code复制┌─────────────────────────────────────────────────────────────┐
│ RK3576 + NL668-AM 连接图 │
├─────────────────────────────────────────────────────────────┤
│ RK3576 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ USB 3.0 │◄────────────────►│ USB 2.0 │ │
│ │ 控制器 │ USB差分对 │ 接口 │ │
│ └──────────────┘ └──────────────┘ │
│ │ NL668-AM │
│ │ USB D+/D- │
│ ▼ ┌──────────────┐ │
│ ┌──────────────┐ │ MAIN_ANT │ │
│ │ GPIO3_C0 │─────────────────────►│ POWER_ON │ │
│ │ (复位控制) │ 模块复位 └──────────────┘ │
│ └──────────────┘ │ │
│ ▼ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ GPIO3_C1 │◄─────────────────────│ STATUS │ │
│ │ (状态检测) │ 模块状态指示 │ (网络指示) │ │
│ └──────────────┘ └──────────────┘ │
│ │ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ PMIC │─────────────────────►│ VBAT │ │
│ │ (电源管理) │ 3.3V/3.8V供电 │ (主电源) │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
2.3 详细引脚连接表
以下是必须严格核对的硬件连接表:
| NL668-AM引脚 | 功能 | RK3576连接 | 电压 | 注意事项 |
|---|---|---|---|---|
| VBAT | 模块主电源 | PMIC_VCC_3V8或5V | 3.3V-4.2V | 峰值电流2A,需足够电容 |
| VDD_IO | IO电源 | PMIC_VCC_1V8 | 1.8V | 若模块支持1.8V电平 |
| POWER_ON | 开机/关机 | GPIO3_C0 | 1.8V/3.3V | 高电平开机,需电平转换 |
| RESET_N | 硬件复位 | GPIO3_C1 | 1.8V/3.3V | 低电平复位 |
| STATUS | 模块状态指示 | GPIO3_C2 (输入) | 1.8V | 高电平表示模块就绪 |
| W_DISABLE# | 飞行模式 | GND | - | 接地禁用,悬空启用 |
| USB_DP | USB数据+ | USB0_DP | - | USB差分对,90Ω阻抗 |
| USB_DN | USB数据- | USB0_DN | - | USB差分对,90Ω阻抗 |
| SIM_VDD | SIM卡电源 | 接SIM卡座 | 1.8V/3V | 自动检测 |
| SIM_DATA | SIM卡数据 | 接SIM卡座 | - | 需ESD保护 |
| SIM_CLK | SIM卡时钟 | 接SIM卡座 | - | 需ESD保护 |
| SIM_RST | SIM卡复位 | 接SIM卡座 | - | 需ESD保护 |
| SIM_PRESENCE | SIM卡检测 | GPIO3_C3 | 1.8V | 可选,用于热插拔 |
硬件设计经验:在实际项目中,我们发现VBAT电源的稳定性对模块工作影响很大。建议在VBAT引脚附近放置至少两个100μF的MLCC电容,并确保电源走线足够宽(建议≥1mm)。同时,USB差分对应保持90Ω阻抗,长度差控制在5mm以内。
3. 设备树配置详解
3.1 USB控制器配置
设备树是Linux内核中描述硬件的重要机制,以下是NL668-AM的典型配置:
c复制/**
* @file arch/arm64/boot/dts/rockchip/rk3576-nl668.dts
* @brief 广和通NL668-AM 4G模块设备树配置
*
* 基于RK3576 PDK参考设计
*/
/**
* USB 3.0控制器配置
* NL668-AM使用USB 2.0接口,连接到USB0控制器
*
* 设计模式:适配器模式
* - USB控制器提供通用接口
* - NL668模块通过USB适配到此接口
*/
&usb_host0_xhci {
status = "okay";
/**
* @brief USB PHY配置
* 使用RK3576内置USB2.0 PHY
*/
