I was implementing hardware modbus support on STM32F072 because somehow I messed Virtual Timers (for idle detection) beyond point of return.
I succeded, but run into some obstackles:
1) No API for setting RTOR register, workarounded by
Code: Select all
UARTD2.usart->RTOR |= MODBUS_15SPACE_BITS;
2) No IRQ handling in uart_lld. Workarounded by adding it into errors (couldn't found better place)
Code: Select all
#define UART_REC_IDLE_DETECTED 128 /**< @brief Reciever timeout detected. */
static uartflags_t translate_errors(uint32_t isr) {
uartflags_t sts = 0;
if (isr & USART_ISR_ORE)
sts |= UART_OVERRUN_ERROR;
if (isr & USART_ISR_PE)
sts |= UART_PARITY_ERROR;
if (isr & USART_ISR_FE)
sts |= UART_FRAMING_ERROR;
if (isr & USART_ISR_NE)
sts |= UART_NOISE_ERROR;
if (isr & USART_ISR_LBDF)
sts |= UART_BREAK_DETECTED;
if (isr & USART_ISR_RTOF)
sts |= UART_REC_IDLE_DETECTED;
return sts;
}
Just wanted to ask, if is planned better support in future, or is better way to do it?
Thank you