2025-08-18 6:14 PM
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).
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).
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.
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).
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.
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!