Hello,
I'm new to S32 and the S32k144 board.
I want to transmit a message with a length of 9 bits and not 8 bits, except parity bit in UART (via LPUART) on a S32k144 board. I made the change in the configuration of LPUART (from 8 to 9 bits). However the functions SendData and ReceiveData take only a buffer and a message of type uint_8t. I tried to change in the LPUART drivers all the definitions of the buffer of reception and transmission by types uint16_t in vain.
Is there any other method? Is there any other way to use LPUART with a 9 bits message without changing all the drivers?
Thank you
Math
Hello Daniel,
First of all, thank you for your response. Your indications helped me. However, I still can't transmit a 9-bit char.
As indicated in the LPUART documentation, I have set the number of transmitted bits to 9 and parity disabled in the configuration. I also used the Polling communication functions as indicated in the documentation.
However, I don't understand one element: the buffer which must be even. So I wrote below some examples of what I wrote in my project, to know where I'm wrong and misunderstand the documentation, if you can have a look.
int main(void)
{
uint16_t RED = 0x103;
uint16_t txBuffer[2] = {0x03,0x03};
uint16_t rxBuffer;
}
while(1)
{
LPUART_DRV_SendDataPolling(INST_LPUART2, &RED, 1);
LPUART_DRV_SendDataPolling(INST_LPUART2, &txBuffer, 2);
LPUART_DRV_ReceiveDataPolling(INST_LPUART2,&rxBuffer,1);
}
I obtain with this code an error during the debug in devassert.h.
Best regards
Math
Hi @Math412,
We can use the same code for both 8bit and 9bit transfers.
uint8_t txBuff[2] = {0x55, 0x55};
uint32_t length = 2;
uint32_t bytes = 0;
LPUART_DRV_SendData(INST_LPUART1, txBuff, length);
while(LPUART_DRV_GetTransmitStatus(INST_LPUART1, &bytes) == STATUS_BUSY);
8bit transfer
9bit trasnfer
Regards,
Daniel
Hello Math,
There is no need to modify the LPUART driver, it should work with 8bit pointers.
Please refer to the documentation of the driver:
Regards,
Daniel