STM32H723ZG + DS8500 HART Modem → OCD pin always LOW (No Carrier) when interfacing with 2088 Pressure Transmitter
I am working on establishing HART communication using an STM32H723ZG Nucleo board, a Maxim DS8500 HART modem, and a 2088 Pressure Transmitter (4–20 mA + HART).
Hardware Setup:
-
STM32H723ZG
-
USART3 → Debug to PC (115200, 8N1, no parity)
-
USART6 → Connected to DS8500 D_IN/D_OUT (1200 baud, 8 data bits, odd parity, 1 stop bit)
-
GPIOs:
-
PE0 → DS8500 RST (Active Low)
-
PA0 → DS8500 RTS (Low=TX, High=RX)
-
PB0 → DS8500 OCD (Input, carrier detect)
-
-
-
DS8500 Connections (per Maxim datasheet and app note):
-
MODE = High (for HART mode)
-
3.6864 MHz crystal connected between XTAL1/XTAL2
-
REF decoupled with 0.1 µF
-
FSK_IN/OUT connected to the HART loop via the recommended RC filters
-
-
Loop: 2088 transmitter powered (24 V, 4–20 mA loop).
Software:
-
USART6 configured at 1200 bps, 8E1 (actually 8 data bits + odd parity + 1 stop).
-
GPIO configured:
-
PE0 default high (releases reset)
-
PA0 high (sets DS8500 in RX/demodulator mode)
-
PB0 input (read OCD)
-
-
Debug prints OCD state every second on USART3.
Problem:
-
OCD pin always reads LOW → No carrier detected, even though the transmitter should respond.
-
I confirmed that RTS=High (RX mode) and RST=High (not in reset).
-
MODE pin is tied High.
-
REF pin shows ~1.23 V (so demod section seems active).
-
The loop is wired correctly and the transmitter works in analog (4–20 mA changes with pressure).
What I Tried:
-
Toggling RTS between TX and RX modes. OCD still remains low.
-
Sending a HART preamble (0xFF * 20) via USART6 → FSK_OUT shows modulation, but still no demodulated data.
-
Checked wiring against Maxim’s reference design (filters on FSK_IN/FSK_OUT).
-
Verified 3.6864 MHz crystal oscillation with oscilloscope.
Questions:
-
Is my USART6 configuration correct for DS8500 (1200 bps, 8 data bits, ODD parity, 1 stop)?
-
Does OCD only go high when a valid UART start bit + carrier amplitude >120 mVp-p is present, or should it indicate raw carrier energy on the loop?
-
Could there be an issue with the filter/bias network on FSK_IN preventing detection?
-
Has anyone successfully interfaced STM32H7 with DS8500 + Rosemount/2088 transmitter, and can share working settings/schematics?
Any insights from ST engineers or community members experienced with DS8500 + STM32 would be very helpful.
Thanks!
