2025-02-28 11:43 AM
Hello, I am trying to wire STM32F103C8T6 with DS18B20 sensor and I realize that after some actions it stopped to work and no data through the UART sent:
Probably it's not big deal, but I have no idea why UART completelly blocked and sending no information.
Current version of this code based on the materials of:
https://deepbluembedded.com/stm32-1-wire-one-wire-protocol-ds18b20-code-example/
2025-02-28 12:28 PM
You'll have to debug it. Your output buffer isn't really big enough to hold the string and NUL termination.
Try something more like
int number = 123;
uint8_t numarray[8]; // make sure you have enough space
...
while(1)
{ // sprintf returns the string length
HAL_UART_Transmit(&huart1, numarray, sprintf(numarray, "%d\n", number), 1000);
}
2025-02-28 12:41 PM
I extended buffer size but unfortunately nothing changed...
Can be something wrong with configuration I applied?
2025-02-28 1:06 PM
No idea
Do you have actual hardware? Can you put a scope on the signals, and use a debugger?
Check the code that configures the pins.
Do you have a supervisor or trainer?
Do you have any other working example in this environment?
2025-03-01 5:18 AM
Here is the example of simplified versions from Proteus. So generally, it can recognise the environment and working with UART.
I don't have this temp sensor right now. Code comparsion between this simple UART example and code I plan to adapt. Left version is the code which works:
2025-03-01 5:19 AM
I don't have an local trainer or any support. So I took a chance here.
2025-03-01 6:25 AM - edited 2025-03-01 6:31 AM
Proteus has a debugger which allows you to step through the code - doesn't it?
So have you done that?
It also has "virtual" instruments (akin to oscilloscopes, etc) to observe signals external to the MCU.
Have you used them?
Have you got the UART working without the DS18B20 sensor?
Some tips here on getting started with STM32 - including debugging: