From 4ee7967e6af283e0c3816dac785032ec23ec5f07 Mon Sep 17 00:00:00 2001 From: Michael Perkins Date: Tue, 10 Sep 2024 13:08:58 +0100 Subject: [PATCH] Set default osr value Now that MXC_UART_RevB_SetFrequency doesn't set the OSR value, set it in all the drivers that call this function if it isn't set there already. The impact of the issue was that MAX78002 wasn't working at the requested baud rate. Signed-off-by: Michael Perkins --- Libraries/PeriphDrivers/Source/UART/uart_ai87.c | 5 +++++ Libraries/PeriphDrivers/Source/UART/uart_me12.c | 3 +++ Libraries/PeriphDrivers/Source/UART/uart_me30.c | 3 +++ Libraries/PeriphDrivers/Source/UART/uart_me55.c | 3 +++ 4 files changed, 14 insertions(+) diff --git a/Libraries/PeriphDrivers/Source/UART/uart_ai87.c b/Libraries/PeriphDrivers/Source/UART/uart_ai87.c index dfba30bef2..b9ff550bc4 100644 --- a/Libraries/PeriphDrivers/Source/UART/uart_ai87.c +++ b/Libraries/PeriphDrivers/Source/UART/uart_ai87.c @@ -141,6 +141,11 @@ int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clo return E_BAD_PARAM; } + // Default OSR + // Setting LPUART Over-Sampling Rate in MXC_UART_RevB_SetFrequency function overwrites + // the sampling rate set below for the ERTCO. + uart->osr = 5; + unsigned int input_clock_freq = 0; switch (clock) { case MXC_UART_APB_CLK: diff --git a/Libraries/PeriphDrivers/Source/UART/uart_me12.c b/Libraries/PeriphDrivers/Source/UART/uart_me12.c index 23d9f751db..c685f50fd6 100644 --- a/Libraries/PeriphDrivers/Source/UART/uart_me12.c +++ b/Libraries/PeriphDrivers/Source/UART/uart_me12.c @@ -110,6 +110,9 @@ int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clo return E_BAD_PARAM; } + // Default OSR + uart->osr = 5; + switch (clock) { case MXC_UART_APB_CLK: clock_freq = SystemCoreClock / 2; diff --git a/Libraries/PeriphDrivers/Source/UART/uart_me30.c b/Libraries/PeriphDrivers/Source/UART/uart_me30.c index a54f77099d..9963fa8479 100644 --- a/Libraries/PeriphDrivers/Source/UART/uart_me30.c +++ b/Libraries/PeriphDrivers/Source/UART/uart_me30.c @@ -113,6 +113,9 @@ int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clo return E_BAD_PARAM; } + // Default OSR + uart->osr = 5; + switch (clock) { case MXC_UART_APB_CLK: clock_freq = PeripheralClock; diff --git a/Libraries/PeriphDrivers/Source/UART/uart_me55.c b/Libraries/PeriphDrivers/Source/UART/uart_me55.c index d04def93cf..4662b16a09 100644 --- a/Libraries/PeriphDrivers/Source/UART/uart_me55.c +++ b/Libraries/PeriphDrivers/Source/UART/uart_me55.c @@ -127,6 +127,9 @@ int MXC_UART_SetFrequency(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clo return E_BAD_PARAM; } + // Default OSR + uart->osr = 5; + switch (clock) { case MXC_UART_APB_CLK: clock_freq = SystemCoreClock / 2;