#ifndef __TWAI_COMMUNICATION_H #define __TWAI_COMMUNICATION_H #include #define TX_GPIO_NUM 35 #define RX_GPIO_NUM 34 #define CMD_ERR 0xff #define CMD_OK 0x00 // identifer typedef enum { MEASUREMENT_ID = 0x0f000000, ESP_RESTART_ID = 0x0f010000, OTA_ID = 0x0f020000, CMD_RESP_ID = 0x0A000000, OTA_RESP_ID = 0x0A020000, SEND_FFT_ARRAY_ID = 0x0B000000, } twai_identifier_t; // cmd typedef enum { MC_READ_LISDSH_CONFIG = 0x10 | 0x01, MC_READ_SHAKE_CONFIG, MC_READ_MEASURE, MC_WRITE_LISDSH_CONFIG = 0x20 | 0x01, MC_WRITE_SHAKE_CONFIG, MC_LISDSH_CONFIG_RESTORE_DEFAULT = 0x30 | 0x01, MC_SHAKE_CONFIG_RESTORE_DEFAULT, MC_LISDSH_CONFIG_SAVE = 0x40 | 0x01, MC_SHAKE_CONFIG_SAVE, MC_OPEN_DATA_SEND = 0x50 | 0x01, } measurement_cmd_t; typedef enum { OC_ENTER = 0x01, OC_DOWNLOAD_DATA_IN = 0x02, OC_DOWNLOAD_FINISH = 0x03, READ_VERSIONS = 0x04, } ota_cmd_t; // subcmd typedef enum { MLCS_FSCALE = 0x01, // 量程 000: 2g, 001: 4g, 010: 8g, 011: 16g MLCS_ODR = 0x02, // 采样率:根据手册值 } measurement_lis3dsh_config_subcmd_t; typedef enum { MSCS_FEQ_RANGE = 0x01, MSCS_AMP_TH = 0x02, MSCS_CHANNAL = 0x03 } measurement_shake_config_subcmd_t; typedef enum { MDS_ACCELERATION_CX = 0x01, // bufr(cnt)、x MDS_ACCELERATION_YZ = 0x02, MDS_FFT = 0x03, // cnt、is_shake MDS_ANGLE_CX = 0x04, // cnt、x MDS_ANGLE_YZ = 0x05 } measurement_data_subcmd_t; typedef enum { ORVS_PACKET1 = 0X01, ORVS_PACKET2 = 0X02, ORVS_PACKET3 = 0X03, ORVS_PACKET4 = 0X04, } ota_read_versions_subcmd_t; #define TWAI_SEND_DATA_MAX (255 * 8) extern bool twai_fft_array_data_send_enable; #define twai_send_fft_array_data(data, len) twai_send_data(SEND_FFT_ARRAY_ID, data, len, twai_fft_array_data_send_enable) void twai_init(void); int twai_send_data(uint32_t identifier, const uint8_t *data, int len, bool enable); #endif