/** @file spi_demo.h @brief This file is used to define bt demo for different Quectel Project. */ /*================================================================ Copyright (c) 2020 Quectel Wireless Solution, Co., Ltd. All Rights Reserved. Quectel Wireless Solution Proprietary and Confidential. =================================================================*/ /*================================================================= EDIT HISTORY FOR MODULE This section contains comments describing changes made to the module. Notice that changes are listed in reverse chronological order. WHEN WHO WHAT, WHERE, WHY ------------ ------- ------------------------------------------------------------------------------- =================================================================*/ #ifndef SPI_DEMO_H #define SPI_DEMO_H #ifdef __cplusplus extern "C" { #endif #define APP_A_ADDR (0x8000) #define BOOT_INFO_ADDR (0x3c000) #define DATA_LENTH (512) #define FRAME_HEAD (0X5A) #define DATA_HEAD (0X5A) #define FRAME_TAIL (0XA5) #define MPU_ADDR (0X10) #define MCU_ADDR (0X20) #define MASTER_CMD (0X50) #define SLAVE_CMD_ACK (0X5C) #define SLAVE_CMD_NACK (0X5F) #define MASTER_CTR (0X60) #define SLAVE_CTR_ACK (0X6C) #define SLAVE_CTR_NACK (0X6F) #define SPI_BUF_LEN (512) /*======================================================================== * Variable Definition *========================================================================*/ #define SPI_DEMO_TASK_PRIO 12 #define SPI_DEMO_TASK_STACK_SIZE 8*1024 #define SPI_DEMO_TASK_EVENT_CNT 4 /*======================================================================== * function Definition *========================================================================*/ QlOSStatus ql_spi_demo_init(void); #pragma pack(1) /* 固定开头帧 */ typedef struct { uint8_t frame_head; uint16_t data_lenth; uint8_t source_addr; uint8_t destination_addr; uint8_t cmd; uint8_t cmd_type; }frame_pack_t; /* 固定帧各字节顺序*/ enum { FRAME_HEAD_INDEX = 0, FRAME_LEN_INDEX, FRAME_SOUADDR_INDEX = 3, FRAME_DETADDR_INDEX, FRAME_CMD_INDEX, FRAME_CMD_TYPE_INDEX, }; #pragma pack() unsigned short crc16_modbus(unsigned char *pdata, int len); uint8_t data_decode_mpu(uint8_t *input_data, uint16_t input_data_len, uint8_t* output, uint16_t* output_data_len); uint8_t data_mpu_pack(uint8_t* output, uint16_t* output_data_len, uint8_t cmd, uint8_t cmd_type); uint16_t Full_Frame_Verifi(uint8_t *srcdata, uint16_t srcLen, uint16_t* frame_start); #ifdef __cplusplus } /*"C" */ #endif #endif /* SPI_DEMO_H */