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 30 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
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      14

      Online

      11.7k

      Users

      11.2k

      Topics

      113.1k

      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