update: ✅ 增益计算OK
update: ✅ Makefile添加math支持
This commit is contained in:
parent
6657464b91
commit
ee7dbcbafd
2
Makefile
2
Makefile
@ -62,7 +62,7 @@ INC_DIRS := $(wordlist 1, $(words $(INC_DIRS)), $(INC_DIRS))
|
||||
# compile job
|
||||
all :
|
||||
mkdir -p $(BUILD_DIR)
|
||||
$(CC) -fdiagnostics-color=always -g $(SOURCES) $(HEADERS) $(INC_DIRS) -o $(BUILD_DIR)/$(PROJECT)
|
||||
$(CC) -fdiagnostics-color=always -g -lm $(SOURCES) $(HEADERS) $(INC_DIRS) -o $(BUILD_DIR)/$(PROJECT)
|
||||
|
||||
# virtual clean job
|
||||
.PHONY : clean
|
||||
|
||||
84
main.c
84
main.c
@ -1,7 +1,91 @@
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <math.h>
|
||||
|
||||
#define Q_MAX (31)
|
||||
#define GAIN_ARRAY_LEN (31)
|
||||
|
||||
uint8_t data_q[GAIN_ARRAY_LEN] = { 0 };
|
||||
int32_t data_gain_scale[GAIN_ARRAY_LEN] = { 0 };
|
||||
float data_gain_positive[GAIN_ARRAY_LEN] = {
|
||||
1.000000000, 1.12201845, 1.25892541, 1.41253754, 1.58489319, 1.77827941, 1.99526231, 2.23872114,
|
||||
2.51188643, 2.81838293, 3.16227766, 3.54813389, 3.98107171, 4.46683592, 5.01187234, 5.62341325,
|
||||
6.30957344, 7.07945784, 7.94328235, 8.91250938, 10.00000000, 11.22018454, 12.58925412, 14.12537545,
|
||||
15.84893192, 17.78279410, 19.95262315, 22.38721139, 25.11886432, 28.18382931, 31.62277660
|
||||
};
|
||||
|
||||
float data_gain_negative[GAIN_ARRAY_LEN] = {
|
||||
1.000000000, 0.891250938, 0.794328235, 0.707945784, 0.630957344, 0.562341325, 0.501187234, 0.446683592,
|
||||
0.398107171, 0.354813389, 0.316227766, 0.281838293, 0.251188643, 0.223872114, 0.199526231, 0.177827941,
|
||||
0.158489319, 0.141253754, 0.125892541, 0.112201845, 0.100000000, 0.089125094, 0.079432823, 0.070794578,
|
||||
0.063095734, 0.056234133, 0.050118723, 0.044668359, 0.039810717, 0.035481339, 0.031622777
|
||||
};
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
printf("hello world!\r\n");
|
||||
|
||||
int i = 0, j = 0;
|
||||
int32_t q_gain_max_scale = pow(2, Q_MAX + 1);
|
||||
uint8_t q_shift = 0;
|
||||
float data_temp = 0;
|
||||
printf("max q gain scale is %d\r\n", q_gain_max_scale);
|
||||
|
||||
printf("\r\n//===============calc positive===========================\r\n");
|
||||
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
data_temp = data_gain_positive[i];
|
||||
q_shift = 0;
|
||||
for (j = 0; j < Q_MAX; j++) {
|
||||
data_temp = data_temp * 2;
|
||||
if (data_temp > q_gain_max_scale) {
|
||||
// printf("data temp = %f, gain max = %d, q = %d \r\n", data_temp, q_gain_max_scale, j);
|
||||
break;
|
||||
}
|
||||
}
|
||||
q_shift = (j >= Q_MAX) ? j - 1: j;
|
||||
data_q[i] = q_shift;
|
||||
data_gain_scale[i] = (int32_t)(data_temp / 2);
|
||||
}
|
||||
|
||||
printf("int32_t positive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
printf("%d, ", data_gain_scale[i]);
|
||||
}
|
||||
printf("\r\n};\r\n");
|
||||
|
||||
printf("uint8_t positive_q_array[%d] = {\r\n", GAIN_ARRAY_LEN);
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
printf("%d, ", data_q[i]);
|
||||
}
|
||||
printf("\r\n};\r\n");
|
||||
|
||||
printf("\r\n//===============calc negative===========================\r\n");
|
||||
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
data_temp = data_gain_negative[i];
|
||||
q_shift = 0;
|
||||
for (j = 0; j < Q_MAX; j++) {
|
||||
data_temp = data_temp * 2;
|
||||
if (data_temp > q_gain_max_scale) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
q_shift = (j >= Q_MAX) ? j - 1: j;
|
||||
data_q[i] = q_shift;
|
||||
data_gain_scale[i] = (int32_t)(data_temp / 2);
|
||||
}
|
||||
|
||||
printf("int32_t negetive_gain_scale_array[%d] = {\r\n", GAIN_ARRAY_LEN);
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
printf("%d, ", data_gain_scale[i]);
|
||||
}
|
||||
printf("\r\n};\r\n");
|
||||
|
||||
printf("uint8_t negetive_q_array[%d] = {\r\n", GAIN_ARRAY_LEN);
|
||||
for (i = 0; i < GAIN_ARRAY_LEN; i++) {
|
||||
printf("%d, ", data_q[i]);
|
||||
}
|
||||
printf("\r\n};\r\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user