使用F407 DAC加DMA,定时器事件触发,输出正弦波,波形一个周期输出20个点。在21K一下输出波形无失真,30Khz波形衰减10mv,100K衰减40mv,我有一个思路是在高频时把原来的波形每一个点的值都放大,进行补偿,但是怎么具体实现,怎么随着频率的上升把放大的系数增大,还需要大佬们指点一下,本人萌新,还望大佬们多多担待。
主函数代码:
float Voltage_list[9]={1.0,0.9,0.8,0.7,0.6,0.5,0.4,0.3,0.2};
uint16_t Sin[9] [20]=
{
{648,848,1028,1172,1264,1296,1264,1172,1028,848,648,447,267,123,31,0,31,123,267,447},//1V
{583,763,925,1054,1137,1166,1137,1054,925,763,583,402,240,111,28,0,28,111,240,402}, //0.9V
{518,678,822,937,1010,1036,1010,937,822,678,518,357,213,98,25,0,25,98,213,357}, //0.8V
{454,594,720,821,885,908,885,821,720,594,454,313,187,86,22,0,22,86,187,313}, //0.7V
{389,509,617,703,758,778,758,703,617,509,389,268,160,74,19,0,19,74,160,268}, //0.6V
{324,424,514,586,632,648,632,586,514,424,324,223,133,61,15,0,15,61,133,223}, //0.5V
{259,339,411,468,505,518,505,468,411,339,259,178,106,49,12,0,12,49,106,178}, //0.4V
{193,252,306,349,376,386,376,349,306,252,193,133,79,36,9,0,9,36,79,133}, //0.3V
{129,168,204,233,251,258,251,233,204,168,129,89,53,24,6,0,6,24,53,89}, //0.2V
};
bsp_Init();//bsp初始化
HAL_TIM_Base_Start(&htim2);
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1,(uint32_t *)Sin[1], 20, DAC_ALIGN_12B_R);
while(1)
{
}
|