STM32 Nucleo-WL55JC1读取GNSS模块UART数据异常求助
STM32 Nucleo-WL55JC1读取GNSS模块数据异常问题
我正在使用STM32 Nucleo-WL55JC1读取GNSS模块数据,此前仅用过Arduino IDE,首次接触STM32 IDE及HAL库。同一GNSS模块在ESP设备上能正常输出,但STM32端出现多种异常,具体情况如下:
初始代码及问题
初始主循环代码:
while (1) { uint8_t buff[500]; HAL_UART_Receive(&huart1, buff, strlen((char*)buff), HAL_MAX_DELAY); HAL_UART_Transmit(&huart2, buff, strlen((char*)buff), HAL_MAX_DELAY); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ }
运行后串口监视器仅输出少量信息后冻结:
$PSTMVER,GNSSLIB_8.4.18.25_CP_ARM*07 $GPTXT,DEFAULT LIV3FL CONFIGURATION*12 $PSTMVER,OS20LIB_4.4.0_ARM*40 $PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20 $PSTMVER,BINIMG_4.6.15_CP_LIV3FL_RC9_ARM*27
修改接收超时后的问题
将接收超时改为1000后,能输出部分NMEA数据但存在信息混叠:
$PSTMCPU,20.86,-1,98*4F $GPRMC,060732.000,V,0745.75046,S,11023.31916,E,,,071222,,,N*64 $GPGGA,060732.000,0745.75046,S,11023.31916,E,0,00,99.0,172.57,M,0.0,M11023.31916,E,060731.000,V,N*54
拔插MCU后的问题
拔插MCU后,设备仅循环输出重复信息:
$PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20 $PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40 $PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20 $PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40 $PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20 $PSTMVPSTMVER,OS20LIB_4.4.0_ARM*40
ESP设备上的正常输出对比
同一GNSS模块在ESP设备上能正常输出数据:
$PSTMCPU,21.69,-1,98*4F $GPRMC,062153.000,V,0745.76371,S,11023.30606,E,,,071222,,,N*6C $GPGGA,062153.000,0745.76371,S,11023.30606,E,0,02,99.0,189.71,M,0.0,M,,*77 $GPVTG,,T,,M,,N,,K,N*2C $GNGSA,A,1,26,27,,,,,,,,,,,99.0,99.0,99.0*1F $GNGSA,A,1,,,,,,,,,,,,,99.0,99.0,99.0*1E $GPGSV,2,1,05,26,53,342,32,27,39,189,27,22,35,019,,23,14,149,*75 $GPGSV,2,2,05,21,07,251,,,,,,,,,,,,,*4E $GLGSV,2,1,06,70,70,053,,74,33,309,,71,29,352,,69,26,142,27*6F $GLGSV,2,2,06,80,15,158,,85,11,205,,,,,,,,,*69 $GPGLL,0745.76371,S,11023.30606,E,062153.000,V,N*5F
编辑1:修改代码后的情况
按照建议修改代码如下:
uint8_t buff[500]; ret = HAL_UART_Receive(&huart1, buff, sizeof buff , HAL_MAX_DELAY); while(ret != HAL_OK); // Continue when Receive returns HAL_OK HAL_UART_Transmit(&huart2, buff, sizeof buff, HAL_MAX_DELAY);
冻结问题仍存在,但输出内容变化:
$PSTMVER,GNSSLIB_8.4.18.25_CP_ARM*07 $GPTXT,DEFAULT LIV3FL CONFIGURATION*12 $PSTMVER,OS20LIB_4.4.0_ARM*40 $PSTMVER,GPSAPP_2.11.0_CP_LIV3FL_RC9_ARM*20 $PSTMVER,BINIMG_4.6.15_CP_LIV3FL_RC9_ARM*27 $PSTMVER,SWCFG_8306532d*33 $PSTMVER,STAGPSLIB_6.0.0_ARM*5A $PSTMVER,STA8090_822bc043*61 $GPTXT,(C)2000-2018 ST Microelectronics*29 $GPTXT,DEFAULT LIV3FL CONFIGURATION*12 $PSTMSWCONFIG,1,0,12,000205f105070a0a0e0d0c0b0a090608070203630e110c04180c0155030110500f00000f071402050a40fffffffffffffffffffff (stuck here)
不拔插MCU直接重新烧录后:
$GNGSA,A,3,03,16,32,27,26,22,,,,,,,1.9,1.0,1.6*26 $GNGSA,A,3,,,,,,,,,,,,,1.9,1.0,1.6*22 $GPGSV,3,1,10,16,58,305,23,27,53,179,23,32,47,086,23,22,46,034,22*72 $GPGSV,3,2,10,26,39,354,20,10,30,157,14,08,25,206,13,03,14,310,27*7B $GPGSV,3,3,10,31,12,021,,21,10,237,,,,,,,,,*7E $GLGSV,2,1,08,70,72,122,,71,48,350,,84,23,127,,74,22,326,*6C $GLGSV,2,2,08,75,19,269,19,85,17,189,,69,11,151,18,80,11,144,19*6B $GPGLL,0745.76098,S,11023.30836,E,065605.000,A,A*4D $PSTMCPU,36.35,-1,98*40 $G (stuck here)
内容的提问来源于stack exchange,提问作者Oh God Why
相关产品推荐
相关产品推荐

