2024-10-13 01:22 PM - last edited on 2024-10-14 01:16 PM by Tesla DeLorean
Hi I have connected the GNSS1A1 board and F446ZE boards. When I run the FW (Virtual Com Port) that I set up through STM32CUBE IDE (X-CUBE-GNSS) and start the program, when it enters MX_GNSS_Process() the gnssMsg struct's buffer pointer is pointing at reserved 0x2002 0000 address.
Then I tried generating the code for FW Updater example program, the Teseo Suit Can not do anything. It stops at Syncing, or if I try to force the update, at around 80% it freezes and recommends recovery mode. That doesn't work either.
Please help. I tried everything I2C or UART port but it looks like nothing is helping. The GetPos example is running fine, however gets no data.
@Tesla DeLorean maybe you know something. :)
Solved! Go to Solution.
2024-10-15 01:58 PM - edited 2024-10-15 01:59 PM
There is nothing on the any of the teo buses. jumper setup as described by you. J13 ON.
2024-10-15 02:09 PM
I was wrong UART6 works, I see the signal.
2024-10-15 02:25 PM
There is a continous transmission from Teseo to the controller.
2024-10-15 02:45 PM
this is what being sent
2024-10-15 02:48 PM
And this is what comes trough COM3
2024-10-15 02:51 PM
Good to know.
If you are running Virtual COM Port example, you should see NMEA data output on the serial terminal.
If you are running GetPos, then you would see the command terminal with the options you had shown in a previous post.
In GetPos, there is a bug on when position is validated.
Could you make the following change in the function,
ParseStatus_t NMEA_ParseGPGGA(GPGGA_Info_t *pGPGGAInfo, uint8_t NMEA[])?
if (valid_msg == TRUE)
{
int32_t valid = strtol((char *)app[6], NULL, BASE);
//if((valid == 1) || (valid == 0)) //old code
if(valid > 0) //new code
{
pGPGGAInfo->valid = (uint8_t)TRUE;
}
Also please refer to Known Limitations and Workarounds in Getting Started Guide that is found in X-CUBE-GNSS installer package.
Pay attention to this workaround if you are working on GetPos.
For STM32CubeIDE projects, the floating point for the printf function must be enabled.
From the menu bar select: Project > Properties > C/C++ Build > Settings > Tool Settings and then check Use float with printf from newlib-nano.
2024-10-15 02:53 PM
Hi,
Looks correct. If your antenna has some visibility to sky you should see satellite data.
If you are completely indoors with no visibility, then you what you have shown is correct.
2024-10-15 03:07 PM - edited 2024-10-15 03:08 PM
OK, but I still don't understand why the program code:
const GNSS1A1_GNSS_Msg_t* GNSS1A1_GNSS_GetMessage(uint32_t Instance)
{
const GNSS1A1_GNSS_Msg_t* msg;
if (Instance >= GNSS1A1_GNSS_INSTANCES_NBR)
{
msg = NULL;
}
else
{
msg = (GNSS1A1_GNSS_Msg_t *)TESEO_LIV3F_GetMessage(&teseo_liv3f_obj);
}
return msg;
}
returns msg as NULL . Thanks for the workarounds.
on the USART TX (stm32->teseo) there is no data.
2024-10-15 03:23 PM
Hi,
To understand where you are, it looks like you are getting output using the Virtual_COM_PORT but not data is seen on GetPost. Is that correct?
If you are getting output on Virtual COM Port your project setting (GPIO, UART, Interrupt and Callback setting) should be the same for GetPos as well.
If you set a breakpoint on the following, is it never getting hit?
msg = (GNSS1A1_GNSS_Msg_t *)TESEO_LIV3F_GetMessage(&teseo_liv3f_obj);
Can you try option 8 in GetPos, reading firmware version? If it is communication, you should read firmware version from Teseo module.
2024-10-15 03:39 PM
I do not get any output over VCP.
The messages I showed you are read from the USART6RX pins from the NUCLEO itself via a serial converter.
The
@GalaxyQuest wrote:
msg = (GNSS1A1_GNSS_Msg_t *)TESEO_LIV3F_GetMessage(&teseo_liv3f_obj);
function hits, however:
after
while(rd_buffer_re_try == 1U)
teseo_ffs returns 0.
static inline int32_t teseo_ffs(uint32_t _w)
{
int32_t r = 1;
uint32_t w = _w;
if (w == 0U)
{
return 0;
}
The function exits with break;
and the function:
const GNSS1A1_GNSS_Msg_t* GNSS1A1_GNSS_GetMessage(uint32_t Instance) returns msg = NULL.