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 输出正弦波。