130 lines
3.8 KiB
Markdown
130 lines
3.8 KiB
Markdown
# sfra_f32.c使用教程
|
||
请参考博客:https://blog.zxcli.top/post/9
|
||
所需文件为:
|
||

|
||
变量定义以及初始化:
|
||
```
|
||
// sfra变量定义
|
||
SFRA_F32 ti_sfra;
|
||
|
||
#define CONTROL_ISR_FREQUENCY ((float32_t)100 * 1000) // 100KHz
|
||
|
||
#define SFRA_ISR_FREQ CONTROL_ISR_FREQUENCY
|
||
#define SFRA_FREQ_START 10
|
||
//
|
||
// SFRA step Multiply = 10^(1/No of steps per decade(40))
|
||
//
|
||
#define SFRA_FREQ_STEP_MULTIPLY (float32_t)1.105
|
||
#define SFRA_AMPLITUDE (float32_t)0.1
|
||
#define SFRA_FREQ_LENGTH 100
|
||
|
||
float32_t plantMagVect[SFRA_FREQ_LENGTH];
|
||
float32_t plantPhaseVect[SFRA_FREQ_LENGTH];
|
||
float32_t olMagVect[SFRA_FREQ_LENGTH];
|
||
float32_t olPhaseVect[SFRA_FREQ_LENGTH];
|
||
float32_t clMagVect[SFRA_FREQ_LENGTH];
|
||
float32_t clPhaseVect[SFRA_FREQ_LENGTH];
|
||
float32_t freqVect[SFRA_FREQ_LENGTH];
|
||
|
||
|
||
// 通信串口,LED
|
||
#define SFRA_GUI_SCI_BASE SCIA_BASE
|
||
#define SFRA_GUI_VBUS_CLK DEVICE_LSPCLK_FREQ
|
||
#define SFRA_GUI_SCI_BAUDRATE 115200
|
||
#define SFRA_GUI_SCIRX_GPIO 43
|
||
#define SFRA_GUI_SCITX_GPIO 42
|
||
#define SFRA_GUI_SCIRX_GPIO_PIN_CONFIG GPIO_43_SCIRXDA
|
||
#define SFRA_GUI_SCITX_GPIO_PIN_CONFIG GPIO_42_SCITXDA
|
||
|
||
#define SFRA_GUI_LED_INDICATOR 1
|
||
#define SFRA_GUI_LED_GPIO 31
|
||
#define SFRA_GUI_LED_GPIO_PIN_CONFIG GPIO_31_GPIO31
|
||
|
||
|
||
void sfra_init()
|
||
{
|
||
SFRA_F32_reset(&ti_sfra);
|
||
SFRA_F32_config(&ti_sfra,
|
||
SFRA_ISR_FREQ,
|
||
SFRA_AMPLITUDE,
|
||
SFRA_FREQ_LENGTH,
|
||
SFRA_FREQ_START,
|
||
SFRA_FREQ_STEP_MULTIPLY,
|
||
plantMagVect,
|
||
plantPhaseVect,
|
||
olMagVect,
|
||
olPhaseVect,
|
||
clMagVect,
|
||
clPhaseVect,
|
||
freqVect,
|
||
1);
|
||
SFRA_F32_resetFreqRespArray(&ti_sfra);
|
||
SFRA_F32_initFreqArrayWithLogSteps(&ti_sfra,
|
||
SFRA_FREQ_START,
|
||
SFRA_FREQ_STEP_MULTIPLY);
|
||
SFRA_GUI_config(SFRA_GUI_SCI_BASE,
|
||
SFRA_GUI_VBUS_CLK,
|
||
SFRA_GUI_SCI_BAUDRATE,
|
||
SFRA_GUI_SCIRX_GPIO,
|
||
SFRA_GUI_SCIRX_GPIO_PIN_CONFIG,
|
||
SFRA_GUI_SCITX_GPIO,
|
||
SFRA_GUI_SCITX_GPIO_PIN_CONFIG,
|
||
SFRA_GUI_LED_INDICATOR,
|
||
SFRA_GUI_LED_GPIO,
|
||
SFRA_GUI_LED_GPIO_PIN_CONFIG,
|
||
&ti_sfra,
|
||
SFRA_GUI_PLOT_GH_CL);
|
||
|
||
}
|
||
```
|
||
后台任务:
|
||
```
|
||
void sfra_task_run()
|
||
{
|
||
|
||
SFRA_F32_runBackgroundTask(&ti_sfra);
|
||
SFRA_GUI_runSerialHostComms(&ti_sfra);
|
||
|
||
}
|
||
```
|
||
数据收集:
|
||
```
|
||
__interrupt void TIMER0_ISR()
|
||
{
|
||
static float32_t input_dc = 0.8f;
|
||
float32_t plant_input;
|
||
float32_t plant_output;
|
||
|
||
plant_input = SFRA_F32_inject(input_dc);
|
||
|
||
|
||
// 直通,用于测试SFRA,plant扫描结果应为0°,0db
|
||
// plant_output = plant_input;
|
||
|
||
// 注入扫描lowpass
|
||
plant_output = LowPassFilter_Run(&lowPass_test, plant_input);
|
||
|
||
SFRA_F32_collect(&plant_input, &plant_output);
|
||
|
||
Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP1);
|
||
}
|
||
|
||
```
|
||
|
||
# 28379d_test_SFRA
|
||
该工程为文章中SFRA和LIBSFRA节所使用的工程。
|
||
CCS版本为20.5
|
||
C2000Ware版本为6.0.1.00
|
||
Build Configurations请选择为CPU1_FLASH
|
||
通过更改sfra_test.c中的SFRA_TYPE宏,即可指定使用SFRA、LIBSFRA和兼容上位机的LIBSFAR中的一个。
|
||

|
||
当SFRA_TYPE为TI_SFRA时,请将`libsfra_ti_hal.c`排除编译。
|
||

|
||
当SFRA_TYPE为LIBSFRA_HAL_TI时,请将`sfra_f32_tmu_eabi.lib`排除编译。
|
||

|
||
# 28379d_P_SFRA
|
||
该工程为使用`sfra_f32.c`的工程。
|
||
CCS版本为20.5
|
||
C2000Ware版本为6.0.1.00
|
||
Build Configurations请选择为CPU1_FLASH
|