This repository has been archived on 2025-04-28. You can view files and clone it, but cannot push or open issues or pull requests.
CMS3in1/2.Blade/1.Software/STM32/Drivers/BSP/AD7606/ControlCommandReceive.c

241 lines
5.3 KiB
C
Raw Permalink Normal View History

#include "./BSP/AD7606/ControlCommandReceive.h"
#include "usbd_cdc_if.h"
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef enum {
HEARTBEAT_FRAME = 0,
CONTROL_FRAME = 1
} InstructionType;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
typedef enum {
FREQ_10KHZ = 1,
FREQ_20KHZ = 2,
FREQ_30KHZ = 3,
FREQ_40KHZ = 4,
FREQ_50KHZ = 5,
FREQ_60KHZ = 6
} SamplingFreq;
// ָ<><D6B8><EFBFBD>洢buf<75>ͱ<EFBFBD>־
uint8_t Control_Buf[8] = {3}; // ָ<><D6B8><EFBFBD>洢buf
uint8_t Control_Ins_Flag = 0; // ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD>־ 0<><30>δ<EFBFBD><CEB4><EFBFBD>գ<EFBFBD> 1<><31><EFBFBD>ѽ<EFBFBD><D1BD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PWMƵ<4D><C6B5><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD>
uint8_t sampling_control = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0: ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>; 1: <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
uint32_t ARR = 100; // <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>PWMƵ<4D><C6B5>
uint32_t PCS = 14; // <20><><EFBFBD>ڼ<EFBFBD><DABC><EFBFBD>PWMƵ<4D><C6B5>
/* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ洢<DAB4><E6B4A2><EFBFBD><EFBFBD> */
uint8_t DataArray[16448]={0};
// ָ<><D6B8><EFBFBD>жϺ<D0B6><CFBA><EFBFBD>
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:
// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBA3A8>ǰΪ<C7B0>գ<EFBFBD>
break;
case CONTROL_FRAME:
// <20><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
sampling_control = (Control_Buf[4] == 0 && Control_Buf[5] == 0) ? 0 : 1;
if (Control_Buf[6]==Control_Buf[7]){
// <20><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ж<EFBFBD>
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:
// δ֪<CEB4><D6AA><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򱣳<EFBFBD>ԭֵ
break;
}
break;
}
default:
// δָ֪<D6AA><D6B8><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
}
}
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ÿһ<C3BF><D2BB>ǰ4<C7B0><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>Ϊ<EFBFBD><CEAA>־֡ */
void Data_to_ADbuf(void){
/*
<EFBFBD><EFBFBD>־λ=0000<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[4:1027]
*/
DataArray[1028*0 + 0] = 0x00;
DataArray[1028*0 + 1] = 0x00;
DataArray[1028*0 + 2] = 0x00;
DataArray[1028*0 + 3] = 0x00;
/*
<EFBFBD><EFBFBD>־λ=1111<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[1032:2055
*/
DataArray[1028*1 + 0] = 0x01;
DataArray[1028*1 + 1] = 0x01;
DataArray[1028*1 + 2] = 0x01;
DataArray[1028*1 + 3] = 0x01;
/*
<EFBFBD><EFBFBD>־λ=2222<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[2060:3083]
*/
DataArray[1028*2 + 0] = 0x02;
DataArray[1028*2 + 1] = 0x02;
DataArray[1028*2 + 2] = 0x02;
DataArray[1028*2 + 3] = 0x02;
/*
<EFBFBD><EFBFBD>־λ=3333<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[3088:4111]
*/
DataArray[1028*3 + 0] = 0x03;
DataArray[1028*3 + 1] = 0x03;
DataArray[1028*3 + 2] = 0x03;
DataArray[1028*3 + 3] = 0x03;
/*
<EFBFBD><EFBFBD>־λ=4444<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[4116:5139]
*/
DataArray[1028*4 + 0] = 0x04;
DataArray[1028*4 + 1] = 0x04;
DataArray[1028*4 + 2] = 0x04;
DataArray[1028*4 + 3] = 0x04;
/*
<EFBFBD><EFBFBD>־λ=5555<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[5144:6167]
*/
DataArray[1028*5 + 0] = 0x05;
DataArray[1028*5 + 1] = 0x05;
DataArray[1028*5 + 2] = 0x05;
DataArray[1028*5 + 3] = 0x05;
/*
<EFBFBD><EFBFBD>־λ=7777<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[6172:6173]
*/
DataArray[1028*6 + 0] = 0x06;
DataArray[1028*6 + 1] = 0x06;
DataArray[1028*6 + 2] = 0x06;
DataArray[1028*6 + 3] = 0x06;
/*
<EFBFBD><EFBFBD>־λ=8888<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[7200:7206]<EFBFBD><EFBFBD>
*/
DataArray[1028*7 + 0] = 0x07;
DataArray[1028*7 + 1] = 0x07;
DataArray[1028*7 + 2] = 0x07;
DataArray[1028*7 + 3] = 0x07;
/*
<EFBFBD><EFBFBD>־λ=0000<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[4:1027]
*/
DataArray[1028*8 + 0] = 0x00;
DataArray[1028*8 + 1] = 0x00;
DataArray[1028*8 + 2] = 0x00;
DataArray[1028*8 + 3] = 0x00;
/*
<EFBFBD><EFBFBD>־λ=1111<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[1032:2055
*/
DataArray[1028*9 + 0] = 0x01;
DataArray[1028*9 + 1] = 0x01;
DataArray[1028*9 + 2] = 0x01;
DataArray[1028*9 + 3] = 0x01;
/*
<EFBFBD><EFBFBD>־λ=2222<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[2060:3083]
*/
DataArray[1028*10 + 0] = 0x02;
DataArray[1028*10 + 1] = 0x02;
DataArray[1028*10 + 2] = 0x02;
DataArray[1028*10 + 3] = 0x02;
/*
<EFBFBD><EFBFBD>־λ=3333<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[3088:4111]
*/
DataArray[1028*11 + 0] = 0x03;
DataArray[1028*11 + 1] = 0x03;
DataArray[1028*11 + 2] = 0x03;
DataArray[1028*11 + 3] = 0x03;
/*
<EFBFBD><EFBFBD>־λ=4444<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[4116:5139]
*/
DataArray[1028*12 + 0] = 0x04;
DataArray[1028*12 + 1] = 0x04;
DataArray[1028*12 + 2] = 0x04;
DataArray[1028*12 + 3] = 0x04;
/*
<EFBFBD><EFBFBD>־λ=5555<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊͨ<EFBFBD><EFBFBD>5<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[5144:6167]
*/
DataArray[1028*13 + 0] = 0x05;
DataArray[1028*13 + 1] = 0x05;
DataArray[1028*13 + 2] = 0x05;
DataArray[1028*13 + 3] = 0x05;
/*
<EFBFBD><EFBFBD>־λ=6666<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[14396:6173]
*/
DataArray[1028*14 + 0] = 0x06;
DataArray[1028*14 + 1] = 0x06;
DataArray[1028*14 + 2] = 0x06;
DataArray[1028*14 + 3] = 0x06;
/*
<EFBFBD><EFBFBD>־λ=7777<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡ͷ
<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD>DataArray[15424:7206]<EFBFBD><EFBFBD>
*/
DataArray[1028*15 + 0] = 0x07;
DataArray[1028*15 + 1] = 0x07;
DataArray[1028*15 + 2] = 0x07;
DataArray[1028*15 + 3] = 0x07;
}