114 lines
4.4 KiB
C
114 lines
4.4 KiB
C
#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__ */
|