347 lines
8.0 KiB
C
347 lines
8.0 KiB
C
#include "./BSP/AD7606/ControlCommandReceive.h"
|
||
#include "usbd_cdc_if.h"
|
||
|
||
// 定义指令类型
|
||
typedef enum {
|
||
HEARTBEAT_FRAME = 0,
|
||
CONTROL_FRAME = 1
|
||
} InstructionType;
|
||
|
||
// 定义采样频率
|
||
typedef enum {
|
||
FREQ_10KHZ = 1,
|
||
FREQ_20KHZ = 2,
|
||
FREQ_30KHZ = 3,
|
||
FREQ_40KHZ = 4,
|
||
FREQ_50KHZ = 5,
|
||
FREQ_60KHZ = 6
|
||
} SamplingFreq;
|
||
|
||
// 指令存储buf和标志
|
||
uint8_t Control_Buf[8] = {3}; // 指令存储buf
|
||
uint8_t Control_Ins_Flag = 0; // 指令接收标志 0:未接收; 1:已接收
|
||
|
||
// 采样控制器和PWM频率相关变量
|
||
uint8_t sampling_control = 0; // 采样控制器 0: 停止采样; 1: 开始采样
|
||
uint32_t PCS = 14; // 用于计算PWM频率
|
||
uint32_t ARR = 100; // 用于计算PWM频率
|
||
|
||
/* 定义一个超大数组用于存储数据 */
|
||
uint8_t DataArray[26728];
|
||
uint8_t DataArray_2[6458];
|
||
|
||
|
||
// 指令判断函数
|
||
void Instruct_Judgment(void) {
|
||
InstructionType instructionType = (Control_Buf[0] == 0x00 && Control_Buf[1] == 0x00 &&
|
||
Control_Buf[2] == 0x00 && Control_Buf[3] == 0x00) ?
|
||
HEARTBEAT_FRAME : CONTROL_FRAME;
|
||
|
||
switch (instructionType) {
|
||
case HEARTBEAT_FRAME:
|
||
// 心跳帧处理代码(当前为空)
|
||
break;
|
||
|
||
case CONTROL_FRAME:
|
||
// 启停采样判断
|
||
sampling_control = (Control_Buf[4] == 0 && Control_Buf[5] == 0) ? 0 : 1;
|
||
|
||
if (Control_Buf[6]==Control_Buf[7]){
|
||
// 采样频率判断
|
||
switch ((SamplingFreq)(Control_Buf[6])) {
|
||
case FREQ_10KHZ:
|
||
ARR = 100;
|
||
PCS = 84;
|
||
break;
|
||
case FREQ_20KHZ:
|
||
ARR = 100;
|
||
PCS = 42;
|
||
break;
|
||
case FREQ_30KHZ:
|
||
ARR = 100;
|
||
PCS = 28;
|
||
break;
|
||
case FREQ_40KHZ:
|
||
ARR = 100;
|
||
PCS = 21;
|
||
break;
|
||
case FREQ_50KHZ:
|
||
ARR = 82;
|
||
PCS = 21;
|
||
break;
|
||
case FREQ_60KHZ:
|
||
ARR = 100;
|
||
PCS = 14;
|
||
break;
|
||
default:
|
||
// 未知采样频率,可以进行错误处理或保持原值
|
||
break;
|
||
}
|
||
break;
|
||
|
||
}
|
||
|
||
|
||
default:
|
||
// 未知指令类型,可以进行错误处理
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
/* 初始化数组 每一段前4个字节作为标志帧 */
|
||
void Data_to_ADbuf(void){
|
||
/*
|
||
标志位=0000:作为通道0数据帧头
|
||
振动数据存在DataArray[4:1027]
|
||
*/
|
||
DataArray[1028*0 + 0] = 0;
|
||
DataArray[1028*0 + 1] = 0;
|
||
DataArray[1028*0 + 2] = 0;
|
||
DataArray[1028*0 + 3] = 0;
|
||
|
||
/*
|
||
标志位=1111:作为通道1数据帧头
|
||
振动数据存在DataArray[1032:2055
|
||
*/
|
||
DataArray[1028*1 + 0] = 1;
|
||
DataArray[1028*1 + 1] = 1;
|
||
DataArray[1028*1 + 2] = 1;
|
||
DataArray[1028*1 + 3] = 1;
|
||
|
||
/*
|
||
标志位=2222:作为通道2数据帧头
|
||
振动数据存在DataArray[2060:3083]
|
||
*/
|
||
DataArray[1028*2 + 0] = 2;
|
||
DataArray[1028*2 + 1] = 2;
|
||
DataArray[1028*2 + 2] = 2;
|
||
DataArray[1028*2 + 3] = 2;
|
||
|
||
/*
|
||
标志位=3333:作为通道3数据帧头
|
||
振动数据存在DataArray[3088:4111]
|
||
*/
|
||
DataArray[1028*3 + 0] = 3;
|
||
DataArray[1028*3 + 1] = 3;
|
||
DataArray[1028*3 + 2] = 3;
|
||
DataArray[1028*3 + 3] = 3;
|
||
|
||
/*
|
||
标志位=4444:作为通道4数据帧头
|
||
振动数据存在DataArray[4116:5139]
|
||
*/
|
||
DataArray[1028*4 + 0] = 4;
|
||
DataArray[1028*4 + 1] = 4;
|
||
DataArray[1028*4 + 2] = 4;
|
||
DataArray[1028*4 + 3] = 4;
|
||
|
||
/*
|
||
标志位=5555:作为通道5数据帧头
|
||
振动数据存在DataArray[5144:6167]
|
||
*/
|
||
DataArray[1028*5 + 0] = 5;
|
||
DataArray[1028*5 + 1] = 5;
|
||
DataArray[1028*5 + 2] = 5;
|
||
DataArray[1028*5 + 3] = 5;
|
||
|
||
/*
|
||
标志位=6666:作为通道6数据帧头
|
||
振动数据存在DataArray[6172:7195]
|
||
*/
|
||
DataArray[1028*6 + 0] = 6;
|
||
DataArray[1028*6 + 1] = 6;
|
||
DataArray[1028*6 + 2] = 6;
|
||
DataArray[1028*6 + 3] = 6;
|
||
|
||
/*
|
||
标志位=7777:作为通道7数据帧头
|
||
振动数据存在DataArray[7200:8223]
|
||
*/
|
||
DataArray[1028*7 + 0] = 7;
|
||
DataArray[1028*7 + 1] = 7;
|
||
DataArray[1028*7 + 2] = 7;
|
||
DataArray[1028*7 + 3] = 7;
|
||
|
||
/*
|
||
标志位=8888:作为通道8数据帧头
|
||
振动数据存在DataArray[8228:9251]
|
||
*/
|
||
DataArray[1028*8 + 0] = 8;
|
||
DataArray[1028*8 + 1] = 8;
|
||
DataArray[1028*8 + 2] = 8;
|
||
DataArray[1028*8 + 3] = 8;
|
||
|
||
/*
|
||
标志位=9999:作为通道9数据帧头
|
||
振动数据存在DataArray[9256:10279]
|
||
*/
|
||
DataArray[1028*9 + 0] = 9;
|
||
DataArray[1028*9 + 1] = 9;
|
||
DataArray[1028*9 + 2] = 9;
|
||
DataArray[1028*9 + 3] = 9;
|
||
|
||
/*
|
||
标志位=AAAA:作为通道10数据帧头
|
||
振动数据存在DataArray[10284:11307]
|
||
*/
|
||
DataArray[1028*10 + 0] = 10;
|
||
DataArray[1028*10 + 1] = 10;
|
||
DataArray[1028*10 + 2] = 10;
|
||
DataArray[1028*10 + 3] = 10;
|
||
|
||
/*
|
||
标志位=BBBB:作为通道11数据帧头
|
||
振动数据存在DataArray[11312:12335]
|
||
*/
|
||
DataArray[1028*11 + 0] = 11;
|
||
DataArray[1028*11 + 1] = 11;
|
||
DataArray[1028*11 + 2] = 11;
|
||
DataArray[1028*11 + 3] = 11;
|
||
|
||
/*
|
||
标志位=CCCC:作为转速数据帧头
|
||
转速数据存在DataArray[12340:12852]
|
||
*/
|
||
DataArray[1028*12 + 0] = 12;
|
||
DataArray[1028*12 + 1] = 12;
|
||
DataArray[1028*12 + 2] = 12;
|
||
DataArray[1028*12 + 3] = 12;
|
||
|
||
/*
|
||
标志位=DDDD:作为断线检测数据帧头
|
||
断线检测数据存在DataArray[12856:12858]中
|
||
*/
|
||
DataArray[12852] = 13;
|
||
DataArray[12853] = 13;
|
||
DataArray[12854] = 13;
|
||
DataArray[12855] = 13;
|
||
|
||
|
||
/*
|
||
标志位=0000:作为通道0数据帧头
|
||
振动数据存在DataArray[4:1027]
|
||
*/
|
||
DataArray[1028*13 + 0] = 0;
|
||
DataArray[1028*13 + 1] = 0;
|
||
DataArray[1028*13 + 2] = 0;
|
||
DataArray[1028*13 + 3] = 0;
|
||
|
||
/*
|
||
标志位=1111:作为通道1数据帧头
|
||
振动数据存在DataArray[1032:2055]
|
||
*/
|
||
DataArray[1028*14 + 0] = 1;
|
||
DataArray[1028*14 + 1] = 1;
|
||
DataArray[1028*14 + 2] = 1;
|
||
DataArray[1028*14 + 3] = 1;
|
||
|
||
/*
|
||
标志位=2222:作为通道2数据帧头
|
||
振动数据存在DataArray[2060:3083]
|
||
*/
|
||
DataArray[1028*15 + 0] = 2;
|
||
DataArray[1028*15 + 1] = 2;
|
||
DataArray[1028*15 + 2] = 2;
|
||
DataArray[1028*15 + 3] = 2;
|
||
|
||
/*
|
||
标志位=3333:作为通道3数据帧头
|
||
振动数据存在DataArray[3088:4111]
|
||
*/
|
||
DataArray[1028*16 + 0] = 3;
|
||
DataArray[1028*16 + 1] = 3;
|
||
DataArray[1028*16 + 2] = 3;
|
||
DataArray[1028*16 + 3] = 3;
|
||
|
||
/*
|
||
标志位=4444:作为通道4数据帧头
|
||
振动数据存在DataArray[4116:5139]
|
||
*/
|
||
DataArray[1028*17 + 0] = 4;
|
||
DataArray[1028*17 + 1] = 4;
|
||
DataArray[1028*17 + 2] = 4;
|
||
DataArray[1028*17 + 3] = 4;
|
||
|
||
/*
|
||
标志位=5555:作为通道5数据帧头
|
||
振动数据存在DataArray[5144:6167]
|
||
*/
|
||
DataArray[1028*18 + 0] = 5;
|
||
DataArray[1028*18 + 1] = 5;
|
||
DataArray[1028*18 + 2] = 5;
|
||
DataArray[1028*18 + 3] = 5;
|
||
|
||
/*
|
||
标志位=6666:作为通道6数据帧头
|
||
振动数据存在DataArray[6172:7195]
|
||
*/
|
||
DataArray[1028*19 + 0] = 6;
|
||
DataArray[1028*19 + 1] = 6;
|
||
DataArray[1028*19 + 2] = 6;
|
||
DataArray[1028*19 + 3] = 6;
|
||
|
||
/*
|
||
标志位=7777:作为通道7数据帧头
|
||
振动数据存在DataArray[7200:8223]
|
||
*/
|
||
DataArray[1028*20 + 0] = 7;
|
||
DataArray[1028*20 + 1] = 7;
|
||
DataArray[1028*20 + 2] = 7;
|
||
DataArray[1028*20 + 3] = 7;
|
||
|
||
/*
|
||
标志位=8888:作为通道8数据帧头
|
||
振动数据存在DataArray[8228:9251]
|
||
*/
|
||
DataArray[1028*21 + 0] = 8;
|
||
DataArray[1028*21 + 1] = 8;
|
||
DataArray[1028*21 + 2] = 8;
|
||
DataArray[1028*21 + 3] = 8;
|
||
|
||
/*
|
||
标志位=9999:作为通道9数据帧头
|
||
振动数据存在DataArray[9256:10279]
|
||
*/
|
||
DataArray[1028*22 + 0] = 9;
|
||
DataArray[1028*22 + 1] = 9;
|
||
DataArray[1028*22 + 2] = 9;
|
||
DataArray[1028*22 + 3] = 9;
|
||
|
||
/*
|
||
标志位=AAAA:作为通道10数据帧头
|
||
振动数据存在DataArray[10284:11307]
|
||
*/
|
||
DataArray[1028*23 + 0] = 10;
|
||
DataArray[1028*23 + 1] = 10;
|
||
DataArray[1028*23 + 2] = 10;
|
||
DataArray[1028*23 + 3] = 10;
|
||
|
||
/*
|
||
标志位=BBBB:作为通道11数据帧头
|
||
振动数据存在DataArray[11312:12335]
|
||
*/
|
||
DataArray[1028*24 + 0] = 11;
|
||
DataArray[1028*24 + 1] = 11;
|
||
DataArray[1028*24 + 2] = 11;
|
||
DataArray[1028*24 + 3] = 11;
|
||
|
||
/*
|
||
标志位=CCCC:作为转速数据帧头
|
||
转速数据存在DataArray[12340:12852]
|
||
*/
|
||
DataArray[1028*25 + 0] = 12;
|
||
DataArray[1028*25 + 1] = 12;
|
||
DataArray[1028*25 + 2] = 12;
|
||
DataArray[1028*25 + 3] = 12;
|
||
|
||
/*
|
||
标志位=DDDD:作为断线检测数据帧头
|
||
断线检测数据存在DataArray[26220:26222]中
|
||
*/
|
||
DataArray[26216] = 13;
|
||
DataArray[26217] = 13;
|
||
DataArray[26218] = 13;
|
||
DataArray[26219] = 13;
|
||
}
|