ex_mcu_uart.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef __EX_MCU_UART_H__
  2. #define __EX_MCU_UART_H__
  3. #include "app_config.h"
  4. #if TCFG_EX_MCU_ENABLE
  5. #include "ex_mcu.h"
  6. #include "fs.h"
  7. #include "asm/clock.h"
  8. #include "asm/gpio.h"
  9. #define EX_MCU_APP_FILE_PATH SDFILE_RES_ROOT_PATH"ex_mcu.bin"
  10. #if TCFG_EX_MCU_OS_ENABLE
  11. //当前最大发送文件分块的长度为128字节每次
  12. #define EX_MCU_APP_BUF_SIZE 150
  13. #endif
  14. //ex_mcu_uart_handle 操作句柄
  15. struct ex_mcu_uart_handle {
  16. struct ex_mcu_platform_data *data;
  17. JL_UART_TypeDef *UART;
  18. //当前波特率
  19. u32 baudrate;
  20. u32 file_cpu_acess_begin;
  21. };
  22. //=======================================================================//
  23. // 公共操作部分 //
  24. //=======================================================================//
  25. u8 ucEx_mcu_reset(void);
  26. u8 ucEx_mcu_exit(void);
  27. //=======================================================================//
  28. // 串口操作部分 //
  29. //=======================================================================//
  30. u8 ucEx_mcu_tx_rx_init(const struct ex_mcu_platform_data *data);
  31. void vEx_mcu_set_baudrate(u32 baudrate);
  32. void vEx_mcu_uart_tx_buf(u8 *uart_dma_buf, u32 dma_buf_len);
  33. #if TCFG_EX_MCU_OS_ENABLE
  34. u8 ucEx_mcu_uart_rx_init(u8 *uart_dma_buf, u32 dma_buf_len/* , u32 timeout*/);
  35. u32 ulEx_mcu_uart_rx_buf(void);
  36. u32 vEx_mcu_uart_tx_buf_client(u8 *uart_dma_buf, u32 dma_buf_len);
  37. u32 ulEx_mcu_uart_rx_buf_client(u8 *uart_dma_buf, u32 dma_buf_len, u32 timeout);
  38. #else
  39. u32 ulEx_mcu_uart_rx_buf(u8 *uart_dma_buf, u32 dma_buf_len, u32 timeout);
  40. #endif
  41. //=======================================================================//
  42. // 文件系统操作部分 //
  43. //=======================================================================//
  44. void *vEx_mcu_file_open(const char *file_path);
  45. u32 ulEx_mcu_file_read(void *file, void *buf, u32 len);
  46. u32 ulEx_mcu_file_seek(void *file, u32 offset);
  47. //=======================================================================//
  48. // 延时操作部分 //
  49. //=======================================================================//
  50. void vEx_mcu_udelay(unsigned int t);
  51. void vEx_mcu_os_delay(unsigned int t);
  52. //=======================================================================//
  53. // 调用API部分 //
  54. //=======================================================================//
  55. u8 ucEx_mcu_uart_app_file_download(const char *file_app, u32 retry, u32 retry_timeout, u32 timeout);
  56. //=======================================================================//
  57. // 参数初始化部分 //
  58. //=======================================================================//
  59. //参数通过board_devices_init的ucEx_mcu_init(&ex_mcu_data);传递到底层ex_mcu.c
  60. #define EX_MCU_PLATFORM_DATA_BEGIN(data) \
  61. struct ex_mcu_platform_data data = {
  62. #if TCFG_EX_MCU_OS_ENABLE
  63. #define EX_MCU_PLATFORM_DATA_END() \
  64. .hand_baudrate = 9600, \
  65. .reset = ucEx_mcu_reset, \
  66. .open = vEx_mcu_file_open, \
  67. .read = ulEx_mcu_file_read, \
  68. .seek = ulEx_mcu_file_seek, \
  69. .tx_rx_init = ucEx_mcu_tx_rx_init, \
  70. .tx_buf = vEx_mcu_uart_tx_buf, \
  71. .tx_buf_client = vEx_mcu_uart_tx_buf_client, \
  72. .rx_init = ucEx_mcu_uart_rx_init, \
  73. .rx_buf = ulEx_mcu_uart_rx_buf, \
  74. .rx_buf_client = ulEx_mcu_uart_rx_buf_client, \
  75. .set_baudrate = vEx_mcu_set_baudrate, \
  76. .exit = ucEx_mcu_exit, \
  77. .delay = vEx_mcu_os_delay, \
  78. };
  79. #else
  80. #define EX_MCU_PLATFORM_DATA_END() \
  81. .hand_baudrate = 9600,\
  82. .reset = ucEx_mcu_reset, \
  83. .open = vEx_mcu_file_open, \
  84. .read = ulEx_mcu_file_read, \
  85. .seek = ulEx_mcu_file_seek, \
  86. .tx_rx_init = ucEx_mcu_tx_rx_init, \
  87. .tx_buf = vEx_mcu_uart_tx_buf, \
  88. .rx_buf = ulEx_mcu_uart_rx_buf, \
  89. .set_baudrate = vEx_mcu_set_baudrate, \
  90. .delay = vEx_mcu_udelay, \
  91. };
  92. #endif
  93. #endif /* #if TCFG_EX_MCU_ENABLE */
  94. #endif /* #ifndef __EX_MCU_UART_H__ */