#include "stm32f1xx_hal.h" #define AD5232_ADDR 0x2C // I2C地址 // 写数字电位器 void AD5232_Write(uint8_t channel, uint8_t value) { uint8_t data[2]; data[0] = (channel == 0) ? 0x01 : 0x02; // 通道选择 data[1] = value; HAL_I2C_Master_Transmit(&hi2c1, AD5232_ADDR<<1, data, 2, HAL_MAX_DELAY); } // 设置截止频率 void SetCutoffFreq(float fc_hz) { float C = 10e-9; float R = 1.0 / (2 * PI * fc_hz * C); // AD5232: 50kΩ范围,256步 uint8_t value = (uint8_t)((R / 50000.0) * 256); AD5232_Write(0, value); // 通道0 } int main(void) { HAL_Init(); MX_I2C1_Init(); while(1) { // 程控滤波: 1kHz → 10kHz for(float f=1000; f<=10000; f+=100) { SetCutoffFreq(f); HAL_Delay(200); } } }