Using UART with ODrive

Hi everyone. I’m trying to use UART to communicate from my STM32 MCU (F411 Black Pill) to the 24V ODrive. Currently, this is not working for me regardless of if the ODrive is connected via USB or not. I have checked the wiring and made sure the TX of the F411 is connected to the RX of the ODrive and vise versa. This is the result of using my logic analyzer for an example read of the bus voltage:

When researching on the ODrive docs and forum posts about UART and potential UART issues, all of them reference UART A and UART B and configuring GPIO pins 1 and 2 for UART. However, I do not see any of these command paths on my ODrive, so I don’t know if it is because I have not updated my firmware. Here is my current configuration of my ODrive:

odrv0:

axis0:
clear_errors(obj: object_ref)
config: …
controller: …
current_state: 1 (int32)
encoder: …
error: 0 (int32)
fet_thermistor: …
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 9201581 (uint32)
max_endstop: …
min_endstop: …
motor: …
motor_thermistor: …
requested_state: 0 (int32)
sensorless_estimator: …
step_dir_active: False (bool)
trap_traj: …
watchdog_feed(obj: object_ref)
axis1:
clear_errors(obj: object_ref)
config: …
controller: …
current_state: 1 (int32)
encoder: …
error: 0 (int32)
fet_thermistor: …
is_homed: False (bool)
lockin_state: 0 (int32)
loop_counter: 9201607 (uint32)
max_endstop: …
min_endstop: …
motor: …
motor_thermistor: …
requested_state: 0 (int32)
sensorless_estimator: …
step_dir_active: False (bool)
trap_traj: …
watchdog_feed(obj: object_ref)
brake_resistor_armed: True (bool)
brake_resistor_saturated: False (bool)
can:
config: …
error: 0 (int32)
set_baud_rate(obj: object_ref, baudRate: uint32)
config:
brake_resistance: 0.4699999988079071 (float)
dc_bus_overvoltage_ramp_end: 25.68000030517578 (float)
dc_bus_overvoltage_ramp_start: 25.68000030517578 (float)
dc_bus_overvoltage_trip_level: 25.68000030517578 (float)
dc_bus_undervoltage_trip_level: 8.0 (float)
dc_max_negative_current: -9.999999974752427e-07 (float)
dc_max_positive_current: inf (float)
enable_ascii_protocol_on_usb: True (bool)
enable_dc_bus_overvoltage_ramp: False (bool)
enable_i2c_instead_of_can: False (bool)
enable_uart: True (bool)
gpio1_pwm_mapping: …
gpio2_pwm_mapping: …
gpio3_analog_mapping: …
gpio3_pwm_mapping: …
gpio4_analog_mapping: …
gpio4_pwm_mapping: …
max_regen_current: 0.0 (float)
uart_baudrate: 115200 (uint32)
enter_dfu_mode(obj: object_ref)
erase_configuration(obj: object_ref)
fw_version_major: 0 (uint8)
fw_version_minor: 5 (uint8)
fw_version_revision: 1 (uint8)
fw_version_unreleased: 0 (uint8)
get_adc_voltage(obj: object_ref, gpio: uint32) → voltage: float
get_oscilloscope_val(obj: object_ref, index: uint32) → val: float
hw_version_major: 3 (uint8)
hw_version_minor: 6 (uint8)
hw_version_variant: 24 (uint8)
ibus: 0.0 (float)
ibus_report_filter_k: 1.0 (float)
reboot(obj: object_ref)
save_configuration(obj: object_ref)
serial_number: 35769384251478 (uint64)
system_stats:
i2c: …
min_heap_space: 41560 (uint32)
min_stack_space_axis0: 1692 (uint32)
min_stack_space_axis1: 1692 (uint32)
min_stack_space_can: 804 (uint32)
min_stack_space_comms: 3864 (uint32)
min_stack_space_startup: 1700 (uint32)
min_stack_space_uart: 3924 (uint32)
min_stack_space_usb: 3716 (uint32)
min_stack_space_usb_irq: 1796 (uint32)
stack_usage_axis0: 356 (uint32)
stack_usage_axis1: 356 (uint32)
stack_usage_can: 220 (uint32)
stack_usage_comms: 232 (uint32)
stack_usage_startup: 348 (uint32)
stack_usage_uart: 172 (uint32)
stack_usage_usb: 380 (uint32)
stack_usage_usb_irq: 252 (uint32)
uptime: 1151809 (uint32)
usb: …
test_function(obj: object_ref, delta: int32) → cnt: int32
test_property: 0 (uint32)
user_config_loaded: True (bool)
vbus_voltage: 24.00798225402832 (float)

odrv0.config:

brake_resistance: 0.4699999988079071 (float)
dc_bus_overvoltage_ramp_end: 25.68000030517578 (float)
dc_bus_overvoltage_ramp_start: 25.68000030517578 (float)
dc_bus_overvoltage_trip_level: 25.68000030517578 (float)
dc_bus_undervoltage_trip_level: 8.0 (float)
dc_max_negative_current: -9.999999974752427e-07 (float)
dc_max_positive_current: inf (float)
enable_ascii_protocol_on_usb: True (bool)
enable_dc_bus_overvoltage_ramp: False (bool)
enable_i2c_instead_of_can: False (bool)
enable_uart: True (bool)
gpio1_pwm_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
gpio2_pwm_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
gpio3_analog_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
gpio3_pwm_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
gpio4_analog_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
gpio4_pwm_mapping:
endpoint: None (object_ref)
max: 0.0 (float)
min: 0.0 (float)
max_regen_current: 0.0 (float)
uart_baudrate: 115200 (uint32)

Any help is appreciated, thank you!