模块介绍
E108-GN03+Series_UserManual_CN_V1.4.pdf开发资料 主要参考着来!
连接模块
使用串口工具,野火多功能调试助手,查看消息,初始波特率:9600
改变波特率
使用$PCAS01,br*CS<CR><LF>设置波特率,我要设置38400,使用在线工具计算,算法XOR Checksum,在线计算工具,输入PCAS01,3,得出结果1F,所以发送控制命令:$PCAS01,3*1F,记得勾选发送新行,然后重新设置波特率再次连接。
设置输出配置
命令:$PCAS03,nGGA,nGLL,nGSA,nGSV,nRMC,nVTG,nZDA,nANT,nDHV,nLPS,res1,res2,nUTC,nGST,res3,res4,res5,nTIM*CS<CR><LF>
| 参数位置 | 参数名 | 说明 | 智能拐杖推荐值 |
|---|---|---|---|
| 1 | nGGA | GGA输出频率 | 1(每次定位都输出) |
| 2 | nGLL | GLL输出频率 | 0(不输出) |
| 3 | nGSA | GSA输出频率 | 0(不输出) |
| 4 | nGSV | GSV输出频率 | 0(不输出) |
| 5 | nRMC | RMC输出频率 | 1(每次定位都输出) |
| 6 | nVTG | VTG输出频率 | 0(不输出) |
| 7 | nZDA | ZDA输出频率 | 0(不输出) |
| 8 | nANT | ANT输出频率 | 0(不输出) |
| 9 | nDHV | DHV输出频率 | 0(不输出) |
| 10 | nLPS | LPS输出频率 | 0(不输出) |
| 11 | res1 | 保留 | 0 |
| 12 | res2 | 保留 | 0 |
| 13 | nUTC | UTC输出频率 | 0(不输出) |
| 14 | nGST | GST输出频率 | 0(不输出) |
| 15 | res3 | 保留 | 0 |
| 16 | res4 | 保留 | 0 |
| 17 | res5 | 保留 | 0 |
| 18 | nTIM | TIM输出频率 | 0(不输出) |
得到命令语句:$PCAS03,1,0,0,0,1,0,0,0,0,0,,,0,0,,,,0*32,只输出GGA和RMC
输出
$GNGGA,150740.000,2858.99961,N,11713.00538,E,1,09,1.4,-5.6,M,-1.5,M,,*7C
$GNRMC,150740.000,A,2858.99961,N,11713.00538,E,0.00,103.62,260126,,,A,V*08其他的我就不改了。
在ESP32中使用
我这里使用的是ESP32C3作为演示
首先需要初始化对应的串口,依据实际硬件设置,波特率设置为38400,其他配置默认
/**
* @brief 初始化E108-GN03模块
*
* 该函数负责初始化E108-GN03模块的UART通信,包括配置UART参数、安装驱动和创建接收任务
*/
void e108_gn03_init(void)
{
const uart_config_t uart_config = {
.baud_rate = E108_UART_BAUD, // 波特率配置,默认为38400,可以通过Kconfig修改
.data_bits = UART_DATA_8_BITS, // 数据位配置为8位,适用于大多数设备
.parity = UART_PARITY_DISABLE, // 不使用奇偶校验
.stop_bits = UART_STOP_BITS_1, // 1个停止位,适用于大多数设备
.flow_ctrl = UART_HW_FLOWCTRL_DISABLE, // 不使用硬件流控制
.source_clk = UART_SCLK_DEFAULT, // 使用默认的UART时钟源,通常为APB时钟
};
ESP_ERROR_CHECK(uart_param_config(E108_UART_NUM, &uart_config)); // 配置UART参数
ESP_ERROR_CHECK(uart_set_pin(E108_UART_NUM, E108_UART_TXD, E108_UART_RXD, E108_UART_RTS, E108_UART_CTS)); // 配置UART引脚
ESP_ERROR_CHECK(uart_driver_install(E108_UART_NUM, E108_UART_BUF_SIZE * 2, 0, 0, NULL, 0)); // 安装UART驱动,接收缓冲区大小为两倍,未使用事件队列
xTaskCreate(e108_uart_rx_task, "e108_uart_rx_task", 2048, NULL, 5, NULL); // 创建一个任务来处理UART接收,堆栈大小为2048字节,优先级为10
ESP_LOGI(TAG, "E108-GN03 UART initialized"); // 输出日志,表示UART初始化完成
}
如果是使用UART0,需要使用USB下载,将menuconfig的console的输出配置,从UART0改成USB即可正常使用(可不配置)。
评论
暂无评论