一:思想
使用stm32产生波形当然肯定要用到DAC了,这是必不可少的,虽然stm32自带三角波生成器,但这里我们主要用dma,这样不论想生成什么波形都可以,只要构造出相应函数列表;
二:函数列表实现
主要就是采样法,在一个波形图上选取多个点,然后把相应数值存起来,等待调用(DMA循环调用),然后通过DAC把数值转换,最后近似得到波形,这种方法其实也就是数学中的描点法;
正弦波:
u16 D_sin[256];
void SineWave_Data()
{
u16 i;
for( i=0;i<=255;i++)
{
D_sin[i]=(u16)(4095*(sin(i*2*3.1415926/255)+1)/2);
}
}
方波:
u16 D_fang[N];
void Fang_Data()
{
u16 i;
for(i=0;i<N/2;i++)
{
D_fang[i]= (u16)(0);
}
for( i=N/2;i<N;i++)
{
D_fang[i]=(u16)(4095);
}
}
三角波:
u16 D_saw[N];
void Saw_Data()
{
u16 i;