SFRA_F32/README.md
2026-06-12 16:22:17 +08:00

130 lines
3.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# sfra_f32.c使用教程
请参考博客https://blog.zxcli.top/post/9
所需文件为:
![](./fig/所需文件.png)
变量定义以及初始化:
```
// 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);
// 直通用于测试SFRAplant扫描结果应为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中的一个。
![](./fig/SFRA_TYPE.png)
当SFRA_TYPE为TI_SFRA时请将`libsfra_ti_hal.c`排除编译。
![](./fig/排除编译.png)
当SFRA_TYPE为LIBSFRA_HAL_TI时请将`sfra_f32_tmu_eabi.lib`排除编译。
![](./fig/排除编译1.png)
# 28379d_P_SFRA
该工程为使用`sfra_f32.c`的工程。
CCS版本为20.5
C2000Ware版本为6.0.1.00
Build Configurations请选择为CPU1_FLASH