receive 9-bit data via UART1 using LPC1754?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

receive 9-bit data via UART1 using LPC1754?

1,638 次查看
stijn_paesen
Contributor I
Hello,

How to set up the UART1 to receive a 9-bit data (RS485) message for LPC1754?

1 start bit, 9 data bits, 1 stop bit

Is setting parity needed? I get every byte I receive an parity error?

Regards,
Stijn

I set:
UART_InitStruct->Baud_rate = 460800;
UART_InitStruct->Databits = UART_DATABIT_8;
UART_InitStruct->Parity = UART_PARITY_SP_1;
UART_InitStruct->Stopbits = UART_STOPBIT_1;

UART_FIFOInitStruct->FIFO_DMAMode = DISABLE;
UART_FIFOInitStruct->FIFO_Level = UART_FIFO_TRGLEV0;
UART_FIFOInitStruct->FIFO_ResetRxBuf = ENABLE;
UART_FIFOInitStruct->FIFO_ResetTxBuf = ENABLE;

rs485cfg.AutoDirCtrl_State = ENABLE;
rs485cfg.DirCtrlPin = UART1_RS485_DIRCTRL_DTR;
rs485cfg.DirCtrlPol_Level = SET;
rs485cfg.DelayValue = 50;
rs485cfg.NormalMultiDropMode_State = ENABLE;
rs485cfg.AutoAddrDetect_State = DISABLE;
//rs485cfg.MatchAddrValue = 0;
rs485cfg.Rx_State = ENABLE;

标签 (1)
0 项奖励
回复
3 回复数

1,478 次查看
kerryzhou
NXP TechSupport
NXP TechSupport

Hi Stijin,

    LPC175X can't support 9 bit data size, please check the user manual:

pastedImage_1.png

UART1 module can't support the 9 bits data size, just 5.6.7 and 8 bits.

Wish it helps you!


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

1,478 次查看
stijn_paesen
Contributor I

Hello,

 

Yesterday I managed to receive data and address bytes

 

            UART_InitStruct->Baud_rate = 454545;

            UART_InitStruct->Databits = UART_DATABIT_8;

            UART_InitStruct->Parity = UART_PARITY_NONE;

            UART_InitStruct->Stopbits = UART_STOPBIT_1;

 

            rs485cfg.AutoDirCtrl_State = ENABLE;

            rs485cfg.DirCtrlPin = UART1_RS485_DIRCTRL_DTR;

            rs485cfg.DirCtrlPol_Level = SET;

            rs485cfg.DelayValue = 50;

            rs485cfg.NormalMultiDropMode_State = ENABLE;

            rs485cfg.AutoAddrDetect_State = DISABLE;

            rs485cfg.MatchAddrValue = 0;

            rs485cfg.Rx_State = ENABLE;

 

bytes with 9th bit 0, data bytes are received correctly

bytes with 9th bit 1, address bytes are received with parity error, but can be read when handling the error

 

Not the most nice way but it works.

 

Regards,

Stijn

0 项奖励
回复

1,478 次查看
kerryzhou
NXP TechSupport
NXP TechSupport

HI Stijin,

   Thank you for your updated information. Actually, it is just caused by the hardware can't support the 9 bit data directly.

  So, if you can receive the data correctly, just have parity error, I think you can check the error, if it is the parity error,  ignore it.

  If you still have question about it, please kindly let us know.


Have a great day,
Kerry

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 项奖励
回复