本 demo 主要介绍基于 DAC 轮询模式生成正弦波。
本 demo 使用到的 gpio 参考 board_adc_gpio_init
。
更详细的代码请参考 examples/peripherals/dac/dac_polling
board_init();
board_init
中会开启 DAC IP 时钟,并选择 DAC 时钟源和分频。
board_dac_gpio_init();
- 配置相关引脚为 DAC 功能
dac = bflb_device_get_by_name("dac");
bflb_dac_init(dac, DAC_SAMPLING_FREQ_32K);
- 获取 dac 句柄,并初始化 dac 频率为 32K
bflb_dac_channel_enable(dac, DAC_CHANNEL_A);
- 配置 dac 通道信息,当前使用的 A 通道
for (uint16_t i = 0; i < sizeof(SIN_LIST) / sizeof(uint16_t); i++) {
bflb_dac_set_value(dac, DAC_CHANNEL_A, SIN_LIST[i]);
bflb_mtimer_delay_us(100);
}
- 调用
bflb_dac_set_value(dac, DAC_CHANNEL_A, SIN_LIST[i])
,将需要转换的数据通过通道 A 输出
参考 get_started
DAC Channel A 对应的 GPIO 输出正弦波。