uart.h 942 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #pragma once
  2. #include "libs/shark_libs.h"
  3. #include "libs/byte_queue.h"
  4. #include "libs/circle_buffer.h"
  5. #define CH_START 0xF5
  6. #define CH_END 0xF6
  7. #define CH_ESC 0xF7
  8. #define CH_ESC_START 0x05
  9. #define CH_ESC_END 0x06
  10. #define CH_ESC_ESC 0x07
  11. #define SHARK_UART_TX_MEM_SIZE 512
  12. #define SHARK_UART_RX_MEM_SIZE 512
  13. typedef enum {
  14. SHARK_UART0,
  15. SHARK_UART1,
  16. SHARK_UART2,
  17. SHARK_UART3,
  18. SHARK_UART4,
  19. SHARK_UART_COUNT
  20. } uart_enum_t;
  21. typedef struct {
  22. byte_queue_t tx_queue;
  23. c_buffer_t rx_queue;
  24. dma_channel_enum rx_dma_ch;
  25. dma_channel_enum tx_dma_ch;
  26. uint16_t tx_length;
  27. uint16_t tx_crc16;
  28. uint32_t uart_com;//uart device
  29. uint8_t rx_frame[256];
  30. uint16_t rx_length;
  31. bool escape;
  32. }shark_uart_t;
  33. void shark_uart_init(uart_enum_t uart_no);
  34. void shark_uart_deinit(uart_enum_t uart_no);
  35. void shark_uart_write_frame(uart_enum_t uart_no, char *bytes, int len);