Block for sending values through the UART
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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/
  
- Labels:
-
STM32F1 Series
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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);
}
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2025-02-28 12:41 PM
I extended buffer size but unfortunately nothing changed...
Can be something wrong with configuration I applied?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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?
Up vote any posts that you find helpful, it shows what's working..
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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:
 
 
 
 
 
 
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎2025-03-01 5:19 AM
I don't have an local trainer or any support. So I took a chance here.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
‎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:
A complex system designed from scratch never works and cannot be patched up to make it work.
