Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. STM32F411 BlackpillV2 ST core - problem with reading data from RS485 (HW serial 2)

STM32F411 BlackpillV2 ST core - problem with reading data from RS485 (HW serial 2)

Scheduled Pinned Locked Moved Troubleshooting
2 Posts 1 Posters 983 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    thom4s
    wrote on last edited by
    #1

    Hi,
    for years Im using MySensors 2.3.1 lib running on Bluepill (STM32F103C8T6 Roger`s STM32 core) with RS485 transport as a node without any problems. Now I need to add new node so I decided to use BlackPill 2 (STM32F411) with STM32 ST core and Whisky Delta fork . (https://github.com/WhiskyDelta/MySensors/tree/stm32_cores) I have no problem with code compilation of simple test node sketch but node is not receiving data from gateway through RS485.

    As you can see from debug log, node send a message and GW replied but node does not received anything. Strange thing is that some chars appeared in debug console "�vXvv���" before 2215 ?TSF:MSG:SEND,.....

    For testing purpose Iv got on desk Ardu Nano as GW with MAX485 converters and as a node I tested with Whisky Delta lib one by one Arduino Mega2560 , Bluepill STM32F103c8t6 , Blackpill2 STM32F411 and F4VE (STM32F407VET). As a node is working only Mega2560. Bluepill were frozen after first attempt to pair with GW. Blackpill 2 and F4VE are repeating sending request for pair to GW with this strange chars in serial debug. ("�vXvv���")

    Im sure that HW is ok. (wiring,DE+RE,termination resistors,5V supply of MAX485, etc)

    Does anybody else has a problem like this ? Do you have any idea where should be a problem ?

    Gateway received data from node and responded

    0;255;3;0;9;8233171 TSF:MSG:READ,118-118-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;8233177 TSF:MSG:BC
    0;255;3;0;9;8233180 TSF:MSG:FPAR REQ,ID=118
    0;255;3;0;9;8233184 TSF:PNG:SEND,TO=0
    0;255;3;0;9;8233187 TSF:CKU:OK
    0;255;3;0;9;8233190 TSF:MSG:GWL OK
    0;255;3;0;9;8233447 TSF:MSG:SEND,0-0-118-118,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    

    Node trying to pair but does not receive data from gateway. What are chars �vXvv��� ?

    2050 MCO:BGN:INIT OK,TSP=0
    2211 !TSM:FPAR:NO REPLY
    2213 TSM:FPAR
    �vXvv���2215 ?TSF:MSG:SEND,118-118-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0
    
    

    Simple node sketch. Debug is using Serial1 and MAX485 is using Serial2

    #define MY_DEBUG                          
    
    #define MY_TRANSPORT_WAIT_READY_MS 2000  
    
    //#define MY_TRANSPORT_SANITY_CHECK
    //#define MY_TRANSPORT_SANITY_CHECK_INTERVAL 2000 
    //#define MY_RS485_SOH_COUNT 2
    
    #define MY_NODE_ID 118
    
    #define MY_RS485
    #define MY_RS485_DE_PIN PB3
    
    #define MY_RS485_HWSERIAL Serial2
    
    #define MY_RS485_BAUD_RATE 9600
    
    
    #include <MySensors.h>
    
    #define CHILD_ID_SudyNode 0
    
    MyMessage msgStatus(CHILD_ID_SudyNode, V_VAR1); //Status
    MyMessage msgErrorEvent(CHILD_ID_SudyNode, V_VAR2); //Err event
    MyMessage msgDebug(CHILD_ID_SudyNode, V_VAR3); //DEBUG
    
    
    void presentation() {  sendSketchInfo("TestNODE", "Ver. 1");present(CHILD_ID_SudyNode, S_CUSTOM);}
    
    
    void setup() {
    
         Serial.setRx(PA10);
         Serial.setTx(PA9);
         Serial.begin(115200);  
    
    }
    
    String SendBuffer = "TEST Message";
    unsigned long CasovacMillis = millis();
    
    void loop() {
    
    
    if ((millis() - CasovacMillis) >= 3000) { 
     Serial.println("NODE ALIVE");
     send(msgStatus.set(SendBuffer.c_str()));
     CasovacMillis = millis();
    }
    
    }
    void receive(const MyMessage &message) {
                            
      if (message.sensor == 123 ) {
          String BufferString = message.getString();
          char CommandBuffer[BufferString.length()];
          BufferString.toCharArray(CommandBuffer, BufferString.length()+1); 
          Serial.print("RECEIVED DATA: "); Serial.println(CommandBuffer);
    }
    }
    
    1 Reply Last reply
    0
    • T Offline
      T Offline
      thom4s
      wrote on last edited by
      #2

      OK problem found. Found out that when I selected "Blackpill F411CE" board before code compilation everything were ok.
      Usually I am choosing generic types so I used "F411CEUx" in case of blackpill 2 and I found out that generic types has different default "Serial" pins in ST core. Now I can confirm that Bluepill , Blackpill and F4VE board are working with MAX485.

      ST core v 2.4.0.

      ../.arduino15/packages/STMicroelectronics/hardware/stm32/2.4.0/variants/STM32F4xx/F411C(C-E)(U-Y)/variant_generic.h

      // UART Definitions
      #ifndef SERIAL_UART_INSTANCE
        #define SERIAL_UART_INSTANCE  2
      #endif
      
      // Default pin used for generic 'Serial' instance
      // Mandatory for Firmata
      #ifndef PIN_SERIAL_RX
        #define PIN_SERIAL_RX         PA3
      #endif
      #ifndef PIN_SERIAL_TX
        #define PIN_SERIAL_TX         PA2
      #endif
      

      ../.arduino15/packages/STMicroelectronics/hardware/stm32/2.4.0/variants/STM32F4xx/F411C(C-E)(U-Y)/variant_BLACKPILL_F411CE.h

      // UART Definitions
      #ifndef SERIAL_UART_INSTANCE
        #define SERIAL_UART_INSTANCE  1
      #endif
      
      // Default pin used for generic 'Serial' instance
      // Mandatory for Firmata
      #ifndef PIN_SERIAL_RX
        #define PIN_SERIAL_RX         PA10
      #endif
      #ifndef PIN_SERIAL_TX
        #define PIN_SERIAL_TX         PA9
      #endif
      

      So be carefull while using ST core and generic type of STM32.

      1 Reply Last reply
      0

      Hello! It looks like you're interested in this conversation, but you don't have an account yet.

      Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

      With your input, this post could be even better 💗

      Register Login
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      12

      Online

      12.1k

      Users

      11.2k

      Topics

      113.4k

      Posts


      Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • MySensors
      • OpenHardware.io
      • Categories
      • Recent
      • Tags
      • Popular