DAC - poll

本 demo 主要介绍基于 DAC 轮询模式生成正弦波。

硬件连接

本 demo 使用到的 gpio 参考 board_adc_gpio_init

软件实现

更详细的代码请参考 examples/peripherals/dac/dac_polling

1board_init();
  • board_init 中会开启 DAC IP 时钟,并选择 DAC 时钟源和分频。

1board_dac_gpio_init();
  • 配置相关引脚为 DAC 功能

1dac = bflb_device_get_by_name("dac");
2
3bflb_dac_init(dac, DAC_SAMPLING_FREQ_32K);
  • 获取 dac 句柄,并初始化 dac 频率为 32K

1bflb_dac_channel_enable(dac, DAC_CHANNEL_A);
  • 配置 dac 通道信息,当前使用的 A 通道

1for (uint16_t i = 0; i < sizeof(SIN_LIST) / sizeof(uint16_t); i++) {
2    bflb_dac_set_value(dac, DAC_CHANNEL_A, SIN_LIST[i]);
3    bflb_mtimer_delay_us(100);
4}
  • 调用 bflb_dac_set_value(dac, DAC_CHANNEL_A, SIN_LIST[i]) ,将需要转换的数据通过通道 A 输出

编译和烧录

参考 环境搭建

实验现象

DAC Channel A 对应的 GPIO 输出正弦波。