202 lines
3.7 KiB
C
202 lines
3.7 KiB
C
|
|
#include "drv_uart.h"
|
|
#include "stdio.h"
|
|
#include "usart.h"
|
|
#include "uart/uart_fifo.h"
|
|
|
|
//LPUSART1
|
|
UART_RX_FIFO_t TTL_1_rx;
|
|
UART_TX_FIFO_t TTL_1_tx;
|
|
|
|
//USART2
|
|
UART_RX_FIFO_t RS232_1_rx;
|
|
UART_TX_FIFO_t RS232_1_tx;
|
|
|
|
//USART1
|
|
UART_RX_FIFO_t RS232_2_rx;
|
|
UART_TX_FIFO_t RS232_2_tx;
|
|
|
|
//USART3
|
|
UART_RX_FIFO_t RS422_1_rx;
|
|
UART_TX_FIFO_t RS422_1_tx;
|
|
|
|
//USART5
|
|
UART_RX_FIFO_t RS485_1_rx;
|
|
UART_TX_FIFO_t RS485_1_tx;
|
|
|
|
|
|
|
|
void init_uart_fifos(void)
|
|
{
|
|
|
|
#if UART1_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&ui_rx, MAKE_STR(ui_rx), &huart1, UART1_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&ui_rx);
|
|
#endif
|
|
#if UART1_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&ui_tx, MAKE_STR(ui_tx), &huart1, UART1_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&ui_tx);
|
|
#endif
|
|
|
|
|
|
#if UART2_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&hub_rx, MAKE_STR(hub_rx), &huart2, UART2_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&hub_rx);
|
|
#endif
|
|
#if UART2_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&hub_tx, MAKE_STR(hub_tx), &huart2, UART2_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&hub_tx);
|
|
#endif
|
|
|
|
|
|
#if UART3_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&RS422_1_rx, MAKE_STR(RS422_1_rx), &huart3, UART3_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&RS422_1_rx);
|
|
#endif
|
|
#if UART3_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&RS422_1_tx, MAKE_STR(RS422_1_tx), &huart3, UART3_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&RS422_1_tx);
|
|
#endif
|
|
|
|
|
|
#if UART5_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&pwr_rx, MAKE_STR(pwr_rx), &huart5, UART5_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&pwr_rx);
|
|
#endif
|
|
#if UART5_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&pwr_tx, MAKE_STR(pwr_tx), &huart5, UART5_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&pwr_tx);
|
|
#endif
|
|
|
|
|
|
|
|
#if LPUART1_RX_ENABLE
|
|
if (UART_RX_FIFO_open(&debug_rx, MAKE_STR(debug_rx), &hlpuart1, LPUART1_RX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_RX_FIFO_uninit(&debug_rx);
|
|
#endif
|
|
#if LPUART1_TX_ENABLE
|
|
if (UART_TX_FIFO_open(&debug_tx, MAKE_STR(debug_tx), &hlpuart1, LPUART1_TX_ENABLE, UART_FIFO_DMA))
|
|
{
|
|
Error_Handler();
|
|
}
|
|
#else
|
|
UART_TX_FIFO_uninit(&debug_tx);
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
void UART_FIFO_init(int id, uint32_t baudrate, uint8_t stopbit, uint8_t parity, uint8_t rx_dma_ch, uint8_t tx_dma_ch)
|
|
{
|
|
|
|
}
|
|
|
|
uint8_t UART_FIFO_read(int id, uint8_t *buff, uint8_t len)
|
|
{
|
|
uint8_t size = 0;
|
|
|
|
switch(id)
|
|
{
|
|
case 1:{
|
|
size = UART_RX_FIFO_read(&TTL_1_rx, buff, 255);
|
|
}break;
|
|
case 2:{
|
|
size = UART_RX_FIFO_read(&RS232_1_rx, buff, 255);
|
|
}break;
|
|
case 3:{
|
|
size = UART_RX_FIFO_read(&RS232_2_rx, buff, 255);
|
|
}break;
|
|
case 4:{
|
|
size = UART_RX_FIFO_read(&RS422_1_rx, buff, 255);
|
|
}break;
|
|
case 5:{
|
|
size = UART_RX_FIFO_read(&RS485_1_rx, buff, 255);
|
|
}break;
|
|
|
|
}
|
|
return size;
|
|
}
|
|
|
|
void UART_FIFO_write(int id, const uint8_t *buff, uint8_t len)
|
|
{
|
|
switch(id)
|
|
{
|
|
case 1:{//ttl
|
|
UART_TX_FIFO_write(&TTL_1_tx, (uint8_t *)buff, len);
|
|
}break;
|
|
case 2:{//rs232-1
|
|
UART_TX_FIFO_write(&RS232_1_tx, (uint8_t *)buff, len);
|
|
}break;
|
|
case 3:{//rs232-2
|
|
UART_TX_FIFO_write(&RS232_2_tx, (uint8_t *)buff, len);
|
|
}break;
|
|
case 4:{//rs422-1
|
|
UART_TX_FIFO_write(&RS422_1_tx, (uint8_t *)buff, len);
|
|
}break;
|
|
case 5:{//rs485-1
|
|
UART_TX_FIFO_write(&RS485_1_tx, (uint8_t *)buff, len);
|
|
}break;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
int fputc(int ch, FILE *f)
|
|
{
|
|
unsigned char buff;
|
|
UART_TX_FIFO_write(&debug_tx, &buff, 1);
|
|
return (ch);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|