Files
B_Current_Ctrl/BSP/drv_uart.c
T
2025-10-14 21:34:28 +08:00

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);
}