微光录 微光录

调试Ebyte的E108-GN03(定位模块)记录

模块介绍

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即可正常使用(可不配置)。