FreeRTOS: UART_SetModemMode does not work

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

FreeRTOS: UART_SetModemMode does not work

706件の閲覧回数
falstaff
Senior Contributor I

Hello,

Using the latest FreeRTOS iMX7D 1.0.1 BSP I am not able to use the UART in DTE. I use the hello_world example and changed harware_init.c trying to switch to DCE mode using UART_SetModemMode with the uartModemModeDte argument. Unfortunately that seems not to work.

Best regards,

Stefan

ラベル(2)
タグ(2)
0 件の賞賛
返信
1 返信

597件の閲覧回数
falstaff
Senior Contributor I

After further debugging it turns out that the implementation in uart_imx.c contains a bug in the assertion of the argument. This change helped to fix the issue:

diff --git a/platform/drivers/src/uart_imx.c b/platform/drivers/src/uart_imx.c
index 3c5149d..f86d559 100644
--- a/platform/drivers/src/uart_imx.c
+++ b/platform/drivers/src/uart_imx.c
@@ -389,7 +389,7 @@ void UART_SetCtsPinLevel(UART_Type* base, bool active)
 *END**************************************************************************/
 void UART_SetModemMode(UART_Type* base, uint32_t mode)
 {
- assert((uartModemModeDce & uartModemModeDce) || (uartModemModeDce & uartModemModeDte));
+ assert((mode == uartModemModeDce) || (mode == uartModemModeDte));
 if (uartModemModeDce == mode)
 UART_UFCR_REG(base) &= ~UART_UFCR_DCEDTE_MASK;
 else

Since the issue is in the driver code provided by NXP, it would be nice if this issue will be fixed in the next FreeRTOS BSP release...