123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #ifndef __EX_MCU_UART_H__
- #define __EX_MCU_UART_H__
- #include "app_config.h"
- #if TCFG_EX_MCU_ENABLE
- #include "ex_mcu.h"
- #include "fs.h"
- #include "asm/clock.h"
- #include "asm/gpio.h"
- #define EX_MCU_APP_FILE_PATH SDFILE_RES_ROOT_PATH"ex_mcu.bin"
- #if TCFG_EX_MCU_OS_ENABLE
- //当前最大发送文件分块的长度为128字节每次
- #define EX_MCU_APP_BUF_SIZE 150
- #endif
- //ex_mcu_uart_handle 操作句柄
- struct ex_mcu_uart_handle {
- struct ex_mcu_platform_data *data;
- JL_UART_TypeDef *UART;
- //当前波特率
- u32 baudrate;
- u32 file_cpu_acess_begin;
- };
- //=======================================================================//
- // 公共操作部分 //
- //=======================================================================//
- u8 ucEx_mcu_reset(void);
- u8 ucEx_mcu_exit(void);
- //=======================================================================//
- // 串口操作部分 //
- //=======================================================================//
- u8 ucEx_mcu_tx_rx_init(const struct ex_mcu_platform_data *data);
- void vEx_mcu_set_baudrate(u32 baudrate);
- void vEx_mcu_uart_tx_buf(u8 *uart_dma_buf, u32 dma_buf_len);
- #if TCFG_EX_MCU_OS_ENABLE
- u8 ucEx_mcu_uart_rx_init(u8 *uart_dma_buf, u32 dma_buf_len/* , u32 timeout*/);
- u32 ulEx_mcu_uart_rx_buf(void);
- u32 vEx_mcu_uart_tx_buf_client(u8 *uart_dma_buf, u32 dma_buf_len);
- u32 ulEx_mcu_uart_rx_buf_client(u8 *uart_dma_buf, u32 dma_buf_len, u32 timeout);
- #else
- u32 ulEx_mcu_uart_rx_buf(u8 *uart_dma_buf, u32 dma_buf_len, u32 timeout);
- #endif
- //=======================================================================//
- // 文件系统操作部分 //
- //=======================================================================//
- void *vEx_mcu_file_open(const char *file_path);
- u32 ulEx_mcu_file_read(void *file, void *buf, u32 len);
- u32 ulEx_mcu_file_seek(void *file, u32 offset);
- //=======================================================================//
- // 延时操作部分 //
- //=======================================================================//
- void vEx_mcu_udelay(unsigned int t);
- void vEx_mcu_os_delay(unsigned int t);
- //=======================================================================//
- // 调用API部分 //
- //=======================================================================//
- u8 ucEx_mcu_uart_app_file_download(const char *file_app, u32 retry, u32 retry_timeout, u32 timeout);
- //=======================================================================//
- // 参数初始化部分 //
- //=======================================================================//
- //参数通过board_devices_init的ucEx_mcu_init(&ex_mcu_data);传递到底层ex_mcu.c
- #define EX_MCU_PLATFORM_DATA_BEGIN(data) \
- struct ex_mcu_platform_data data = {
- #if TCFG_EX_MCU_OS_ENABLE
- #define EX_MCU_PLATFORM_DATA_END() \
- .hand_baudrate = 9600, \
- .reset = ucEx_mcu_reset, \
- .open = vEx_mcu_file_open, \
- .read = ulEx_mcu_file_read, \
- .seek = ulEx_mcu_file_seek, \
- .tx_rx_init = ucEx_mcu_tx_rx_init, \
- .tx_buf = vEx_mcu_uart_tx_buf, \
- .tx_buf_client = vEx_mcu_uart_tx_buf_client, \
- .rx_init = ucEx_mcu_uart_rx_init, \
- .rx_buf = ulEx_mcu_uart_rx_buf, \
- .rx_buf_client = ulEx_mcu_uart_rx_buf_client, \
- .set_baudrate = vEx_mcu_set_baudrate, \
- .exit = ucEx_mcu_exit, \
- .delay = vEx_mcu_os_delay, \
- };
- #else
- #define EX_MCU_PLATFORM_DATA_END() \
- .hand_baudrate = 9600,\
- .reset = ucEx_mcu_reset, \
- .open = vEx_mcu_file_open, \
- .read = ulEx_mcu_file_read, \
- .seek = ulEx_mcu_file_seek, \
- .tx_rx_init = ucEx_mcu_tx_rx_init, \
- .tx_buf = vEx_mcu_uart_tx_buf, \
- .rx_buf = ulEx_mcu_uart_rx_buf, \
- .set_baudrate = vEx_mcu_set_baudrate, \
- .delay = vEx_mcu_udelay, \
- };
- #endif
- #endif /* #if TCFG_EX_MCU_ENABLE */
- #endif /* #ifndef __EX_MCU_UART_H__ */
|