移远 5G RG255AA-CN 调试

5G模块引脚配置与识别流程

一、相关引脚配置

在软件部分,需要配置如下引脚状态,并检查模块供电是否正常使能,以及使用万用表确认供电情况。如果配置正确,lusb 工具可以检测到该5G模块对应的 PID 和 VID。

硬件连接说明

根据硬件连接,5G模块的 RESET、5G_KEY、AIRPLA_EN 均由 MCU 控制。

相关代码示例(根据实际情况进行配置,此处只是做个别示例)
复制代码
#include "eh.h"
#include "eh_debug.h"
#include "eh_module.h"

#include "gd32f10x.h"
#include "io-ctrl.h"
#include "gd32f10x_gpio.h"
#include <stdbool.h>

// 信号定义
EH_DEFINE_SIGNAL(signal_io_smi_change);

// 电源控制函数
void io_ctrl_mpu_power_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_8, is_on ? SET : RESET );
}
void io_ctrl_lte_power_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_7, is_on ? SET : RESET );
}
void io_ctrl_5g_reset_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_14, is_on ? SET : RESET );
}
void io_ctrl_airplane_mode_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_11, is_on ? SET : RESET );
}
void io_ctrl_5g_key_set(bool is_on){
    gpio_bit_write(GPIOE, GPIO_PIN_10, is_on ? SET : RESET );
}

// SMI状态检测
extern bool io_ctrl_smi_status(void){
    return gpio_input_bit_get(GPIOD, GPIO_PIN_0);
}

// 初始化函数
static __init int io_ctrl_init(void){
    rcu_periph_clock_enable(RCU_AF);
    rcu_periph_clock_enable(RCU_GPIOE);
    rcu_periph_clock_enable(RCU_GPIOD);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_8);
    eh_minfofl(IO_CTRL, "io_ctrl_mpu_power_set true");
    io_ctrl_mpu_power_set(true);

    gpio_init(GPIOD, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
    nvic_irq_enable(EXTI0_IRQn, 0U, 2U);
    gpio_exti_source_select(GPIO_PORT_SOURCE_GPIOD, GPIO_PIN_SOURCE_0);
    exti_init(EXTI_0, EXTI_INTERRUPT, EXTI_TRIG_BOTH);
    exti_interrupt_flag_clear(EXTI_0);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
    eh_minfofl(IO_CTRL, "io_ctrl_lte_power_set true");
    io_ctrl_lte_power_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
    eh_minfofl(IO_CTRL, "io_ctrl_5g_key_set true");
    io_ctrl_5g_key_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);
    eh_minfofl(IO_CTRL, "io_ctrl_airplane_mode_set true");
    io_ctrl_airplane_mode_set(true);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13);

    gpio_init(GPIOE, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_14);
    eh_minfofl(IO_CTRL, "io_ctrl_5g_reset_set true");
    io_ctrl_5g_reset_set(false);

    return 0;
}

void io_ctrl_exit(void){
    // 退出处理
}

eh_module_level1_export(io_ctrl_init, io_ctrl_exit);

二、查看 PID 与 VID

使用 lusb 等工具确认模块已正常识别,检查 PID 和 VID 是否正确。

三、添加 PID 和 VID

在 MPU 内核代码 drivers/usb/serial/option.c 文件的 option_ids 数组下方,添加 RG255AA 模块的 VID 和 PID:

复制代码
#define QUECTEL_VENDOR_ID                      0x2c7c
#define QUECTEL_PRODUCT_RG255AA                0x600b

四、在内核中启用 USB SERIAL 配置

请确保在内核配置中启用如下选项:

复制代码
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_WWAN=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_ACM=y
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_USBNET=y
CONFIG_USB_NET_CDCETHER=y

五、添加 option_ids

在 option_ids 列表内增加 RG255AA 的 PID/VID,以便系统能够识别该 USB 设备为串口设备。

复制代码
// /kernel/linux-5.15/drivers/usb/serial/option.c
static const struct usb_device_id option_ids[] = {
    ......
    { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_EC200A, 0xff, 0, 0) },
    { USB_DEVICE_AND_INTERFACE_INFO(QUECTEL_VENDOR_ID, QUECTEL_PRODUCT_RG255AA, 0xff, 0, 0) },
    { USB_DEVICE_AND_INTERFACE_INFO(AWQUALCOMM_VENDOR_ID, QUECTEL_PRODUCT_AW190, 0xff, 0, 0) },
    ......
}

六、测试与验证

  1. 查看日志是否正常
  2. 检查串口设备是否正常枚举
  3. 检查5G网卡设备是否生成
  4. 联网测试


总结:按照上述步骤配置和检查后,可实现5G模块的正常识别与联网功能。如遇问题,建议逐步排查硬件连接、驱动配置及内核日志。

相关推荐
焦糖码奇朵、2 小时前
移动通信网络建设-实验2:5G站点选型与设备部署
网络·数据库·人工智能·5g·信号处理·基带工程
Albert Edison2 小时前
【项目设计】基于正倒排索引的Boost搜索引擎
linux·网络·c++·后端·http·搜索引擎
浪潮IT馆2 小时前
Alibaba Cloud Linux 3 安装 Tomcat
linux·运维·tomcat
时空自由民.2 小时前
MCU 内存栈介绍和内存段
单片机·嵌入式硬件
yuniko-n2 小时前
【Linux】CentOS 部署 IPFS
linux·服务器·centos·ipfs
liu****2 小时前
12.线程同步与互斥
linux·数据结构·c++·算法·1024程序员节
此生只爱蛋3 小时前
【Linux】Socket编程预备及UDP
linux·网络·udp
许嵩663 小时前
virtual_clock
单片机·嵌入式硬件
EVERSPIN3 小时前
N32H高性能32位MCU在具身机器人上的应用
单片机·嵌入式硬件·机器人·32位mcu·高性能32位mcu·n32h系列