使用STM32CubeMX配置如下
板子 F429IGT6
时钟配置

DAC 是用 DAC1



Byte 是8bits Half Word 是16bits Word 是 32bits
触发方式 TIM2 触发
TIM 使用 TIM2

正弦波波形数据 共100个点
const uint16_t Sine12bit[100]={ 0x0800,0x0881,0x0901,0x0980,0x09FD,0x0A79,0x0AF2,0x0B68,0x0BDA,0x0C49,
0x0CB3,0x0D19,0x0D79,0x0DD4,0x0E29,0x0E78,0x0EC0,0x0F02,0x0F3C,0x0F6F, 0x0F9B,0x0FBF,0x0FDB,0x0FEF,0x0FFB,0x0FFF,0x0FFB,0x0FEF,0x0FDB,0x0FBF,
0x0F9B,0x0F6F,0x0F3C,0x0F02,0x0EC0,0x0E78,0x0E29,0x0DD4,0x0D79,0x0D19,
0x0CB3,0x0C49,0x0BDA,0x0B68,0x0AF2,0x0A79,0x09FD,0x0980,0x0901,0x0881,
0x0800,0x077F,0x06FF,0x0680,0x0603,0x0587,0x050E,0x0498,0x0426,0x03B7, 0x034D,0x02E7,0x0287,0x022C,0x01D7,0x0188,0x0140,0x00FE,0x00C4,0x0091,
0x0065,0x0041,0x0025,0x0011,0x0005,0x0001,0x0005,0x0011,0x0025,0x0041,
0x0065,0x0091,0x00C4,0x00FE,0x0140,0x0188,0x01D7,0x022C,0x0287,0x02E7,
0x034D,0x03B7,0x0426,0x0498,0x050E,0x0587,0x0603,0x0680,0x06FF,0x077F
};
重点

上述TIM2时钟为36MHz,触发时间 20*72/36MHz= 1/20KHz
我们的触发时间要大于Tsettling 才可以得到正确输出波形 否则一直没有输出且跑Debug也正常
一般来说 Tsettling 为us级
(注意 这里只针对计时器触发,用DAC自带的三角波和噪声 无影响)
int main中写入
HAL_TIM_Base_Start(&htim2);//开启定时器2 HAL_DAC_Start_DMA(&hdac,DAC_CHANNEL_1(uint32_t*)Sine12bit,100,DAC_ALIGN_12B_R);//开启输出
即可得到正弦波
5843

被折叠的 条评论
为什么被折叠?



