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. Development
  3. [SOLVED] RS485 node with STM32

[SOLVED] RS485 node with STM32

Scheduled Pinned Locked Moved Development
4 Posts 2 Posters 61 Views 2 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.
  • karlheinz2000K Offline
    karlheinz2000K Offline
    karlheinz2000
    wrote on last edited by Yveaux
    #1

    I try to get a node based on STM32 to work with RS485. No success. Mysensors does send on RS485, but does not receive anything. I checked the signals with scope. Physically TX signals go out and reply from gateway goes into RX pin, but is not read by mysensors lib. I tried all UARTs. Apart from mysensors lib, I'm able to do serial communication with other UARTs than the one used for RS485.
    I used F103 and F401/411 with both STM libs (maple, ST) when possible.

    If I just change the ST chip to AVR it works instantly. So network and GW are not the issue.

    Any suggestions what to measure/change?

    Node:

    898097 TSM:FAIL:RE-INIT
    898097 TSM:INIT
    900098 THA:INIT
    900098 TSM:INIT:TSP OK
    900098 TSM:INIT:STATID=100
    900100 THA:SAD:ADDR=100
    900101 TSF:SID:OK,ID=100
    900102 TSM:FPAR
    900102 THA:SND:MSG=6464FF020307FF
    900133 THA:SND:MSG LEN=7,RES=1
    900133 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    904134 !TSM:FPAR:NO REPLY
    904134 TSM:FPAR
    904134 THA:SND:MSG=6464FF020307FF
    904153 THA:SND:MSG LEN=7,RES=1
    904153 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    908153 !TSM:FPAR:NO REPLY
    908153 TSM:FPAR
    908153 THA:SND:MSG=6464FF020307FF
    908172 THA:SND:MSG LEN=7,RES=1
    908172 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    912173 !TSM:FPAR:NO REPLY
    912173 TSM:FPAR
    912173 THA:SND:MSG=6464FF020307FF
    912191 THA:SND:MSG LEN=7,RES=1
    912192 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    916192 !TSM:FPAR:FAIL
    916192 TSM:FAIL:CNT=7
    916192 TSM:FAIL:DIS
    916193 TSF:TDI:TSL
    

    gateway

    0;255;3;0;9;26409142 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;26409149 TSF:MSG:BC
    0;255;3;0;9;26409152 TSF:MSG:FPAR REQ,ID=100
    0;255;3;0;9;26409155 TSF:PNG:SEND,TO=0
    0;255;3;0;9;26409159 TSF:CKU:OK
    0;255;3;0;9;26409162 TSF:MSG:GWL OK
    0;255;3;0;9;26409388 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    0;255;3;0;9;26413162 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;26413168 TSF:MSG:BC
    0;255;3;0;9;26413171 TSF:MSG:FPAR REQ,ID=100
    0;255;3;0;9;26413175 TSF:CKU:OK,FCTRL
    0;255;3;0;9;26413178 TSF:MSG:GWL OK
    0;255;3;0;9;26413325 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    0;255;3;0;9;26417182 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;26417188 TSF:MSG:BC
    0;255;3;0;9;26417191 TSF:MSG:FPAR REQ,ID=100
    0;255;3;0;9;26417196 TSF:CKU:OK,FCTRL
    0;255;3;0;9;26417199 TSF:MSG:GWL OK
    0;255;3;0;9;26417269 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    0;255;3;0;9;26421201 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    0;255;3;0;9;26421209 TSF:MSG:BC
    0;255;3;0;9;26421211 TSF:MSG:FPAR REQ,ID=100
    0;255;3;0;9;26421215 TSF:CKU:OK,FCTRL
    0;255;3;0;9;26421219 TSF:MSG:GWL OK
    0;255;3;0;9;26422238 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    
    V 1 Reply Last reply
    0
    • karlheinz2000K karlheinz2000

      I try to get a node based on STM32 to work with RS485. No success. Mysensors does send on RS485, but does not receive anything. I checked the signals with scope. Physically TX signals go out and reply from gateway goes into RX pin, but is not read by mysensors lib. I tried all UARTs. Apart from mysensors lib, I'm able to do serial communication with other UARTs than the one used for RS485.
      I used F103 and F401/411 with both STM libs (maple, ST) when possible.

      If I just change the ST chip to AVR it works instantly. So network and GW are not the issue.

      Any suggestions what to measure/change?

      Node:

      898097 TSM:FAIL:RE-INIT
      898097 TSM:INIT
      900098 THA:INIT
      900098 TSM:INIT:TSP OK
      900098 TSM:INIT:STATID=100
      900100 THA:SAD:ADDR=100
      900101 TSF:SID:OK,ID=100
      900102 TSM:FPAR
      900102 THA:SND:MSG=6464FF020307FF
      900133 THA:SND:MSG LEN=7,RES=1
      900133 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      904134 !TSM:FPAR:NO REPLY
      904134 TSM:FPAR
      904134 THA:SND:MSG=6464FF020307FF
      904153 THA:SND:MSG LEN=7,RES=1
      904153 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      908153 !TSM:FPAR:NO REPLY
      908153 TSM:FPAR
      908153 THA:SND:MSG=6464FF020307FF
      908172 THA:SND:MSG LEN=7,RES=1
      908172 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      912173 !TSM:FPAR:NO REPLY
      912173 TSM:FPAR
      912173 THA:SND:MSG=6464FF020307FF
      912191 THA:SND:MSG LEN=7,RES=1
      912192 ?TSF:MSG:SEND,100-100-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
      916192 !TSM:FPAR:FAIL
      916192 TSM:FAIL:CNT=7
      916192 TSM:FAIL:DIS
      916193 TSF:TDI:TSL
      

      gateway

      0;255;3;0;9;26409142 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
      0;255;3;0;9;26409149 TSF:MSG:BC
      0;255;3;0;9;26409152 TSF:MSG:FPAR REQ,ID=100
      0;255;3;0;9;26409155 TSF:PNG:SEND,TO=0
      0;255;3;0;9;26409159 TSF:CKU:OK
      0;255;3;0;9;26409162 TSF:MSG:GWL OK
      0;255;3;0;9;26409388 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
      0;255;3;0;9;26413162 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
      0;255;3;0;9;26413168 TSF:MSG:BC
      0;255;3;0;9;26413171 TSF:MSG:FPAR REQ,ID=100
      0;255;3;0;9;26413175 TSF:CKU:OK,FCTRL
      0;255;3;0;9;26413178 TSF:MSG:GWL OK
      0;255;3;0;9;26413325 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
      0;255;3;0;9;26417182 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
      0;255;3;0;9;26417188 TSF:MSG:BC
      0;255;3;0;9;26417191 TSF:MSG:FPAR REQ,ID=100
      0;255;3;0;9;26417196 TSF:CKU:OK,FCTRL
      0;255;3;0;9;26417199 TSF:MSG:GWL OK
      0;255;3;0;9;26417269 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
      0;255;3;0;9;26421201 TSF:MSG:READ,100-100-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
      0;255;3;0;9;26421209 TSF:MSG:BC
      0;255;3;0;9;26421211 TSF:MSG:FPAR REQ,ID=100
      0;255;3;0;9;26421215 TSF:CKU:OK,FCTRL
      0;255;3;0;9;26421219 TSF:MSG:GWL OK
      0;255;3;0;9;26422238 TSF:MSG:SEND,0-0-100-100,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
      
      V Offline
      V Offline
      virtualmkr
      wrote on last edited by
      #2

      @karlheinz2000 Unfortunately there are no debug messages in the RS485 driver code available. I mean something similar to MY_DEBUG_VERBOSE_RF24 for the RF24 transport.

      When you don't get any input at the STM32 side I would start by adding some "Serial.println(x)" into the function _serialProcess() in ~\MySensors\hal\transport\RS485\MyTransportRS485.cpp
      to check if there is something coming in at least.

      HTH

      1 Reply Last reply
      0
      • karlheinz2000K Offline
        karlheinz2000K Offline
        karlheinz2000
        wrote on last edited by
        #3

        @virtualmkr thanks for pointing to _serialProcess(). This help to understand a little more how it works.
        I finally found the issue: bias resistors (10k) at A and B lost connection, so during bus idle RX was low and not high. For AVR this was not a problem, but STM32 did not synchronize right to the frame.

        V 1 Reply Last reply
        1
        • karlheinz2000K karlheinz2000

          @virtualmkr thanks for pointing to _serialProcess(). This help to understand a little more how it works.
          I finally found the issue: bias resistors (10k) at A and B lost connection, so during bus idle RX was low and not high. For AVR this was not a problem, but STM32 did not synchronize right to the frame.

          V Offline
          V Offline
          virtualmkr
          wrote on last edited by
          #4

          @karlheinz2000 sounds great that you found the bug. It's always difficult to tell if it is a HW or SW bug on MCUs. From your first description it seems like a SW one to me.

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          16

          Online

          11.7k

          Users

          11.2k

          Topics

          113.0k

          Posts


          Copyright 2019 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