【HC32F448测评】+用DAC输出可调正弦波
[复制链接]
本帖最后由 dmzdmz666666 于 2023-9-1 23:45 编辑
第七篇:用DAC输出可调正弦波
这篇文章将来测评HC32F448的DAC输出正弦波。
HC32F448搭载一个12位的DAC,共有两个通道。同时内置的AMP具备一个输出放大功能。
不使能输出放大时的输出电压范围更大,输出轨到轨,建立时间相对较快,理论上更新速率400KSPS-670KSPS。
使能输出放大时应该是可以提高带载能力,输出不是轨到轨,有200mV左右的抬升。
-----------------------开始移植------------------------
这里需要用到的资源包括DAC。
首先,在Hardware文件夹中新建DAC.c等C文件及其对应的h头文件。同时还要添加hc32_ll_dac.c的库函数。还要记得使能hc32f4xx_conf.h的对应组件。
DAC的初始化比较简单,这里需要注意的是有个ADC转换优先模式,就是说开启了ADC后,要等ADC转换以后DAC才能转换,防止电源影响。
因为这里我们要生成一个正弦波,所以要计算出输出正弦波所需要的数字量。这里直接用sin()函数计算,要添加<math.h>头文件,具体的计算公式为:
for(i=0U;i<Sine_Dot_Num;i++)
{SinTable=(uint32_t)(2048*(sin(2*Pi*i/Sine_Dot_Num)+1));}
其中Sine_Dot_Num为一个波形所包含的点数,点数越多,波形越精细,但生成的波形频率越低,因为DAC的更新速率是固定的。
这里需要注意的是,DAC的正弦波数据表要先生成好再一起写入输出,因为一边计算一边输出可能会影响DAC每个点的更新速率。
在主函数里面加入以下代码,通过按键来改变正弦波点数,同时按下后要更新重新生成正弦波表,并打印当前点数。
-----------------------实际测试------------------------
首先输出点数为100,经过实际测试,频率为8.86KHz,可以算出其更新率约为886KSPS,建立时间约为1.13us,输出峰值为3.4V左右,输出谷底值为0V,符合数据表描述的。
肉眼可见还行,但是放大后发现阶梯还是比较明显,输出的波形纯净度还不够
输出点数为50,经过实际测试,频率为17.58KHz,可以发现波形基本不可用,波形不够平滑
输出点数为10,可以发现正弦波直接变成了阶梯波
输出点数为256,正弦波基本可用。
得出结论,如果用这个DAC输出正弦波的话,频率最好限制在10KHz以下,不然基本不可用。当然了MCU内置的DAC也一般不是用来生成中高频的任意波的,毕竟不是高速DAC,就是用来生成静态的电压。
至此,DAC输出正弦波就测评好啦,基本处于可用状态。
|