登录发现更多内容
首页
分类
发帖
账号
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
首页
Portal
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
产品教程
BBS
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
开发资料
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
样品购买
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
IoT云平台
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
GitHub
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
技术博客
求助问答
Xiuno资源
Xiuno教程
Xiuno插件
Xiuno主题
休闲茶馆
定制主题
搜索
搜索
热搜:
LoRa
ESP8266
安信可
本版
帖子
用户
请
登录
后使用快捷导航
没有账号?
立即注册
每日签到
任务
广播
导读
排行榜
设置
我的收藏
退出
10
0
0
首页
小安派&M61零基础开发教程(官方)
›
(十六)零基础开发小安派-Eyes-S1【外设篇】——DAC ...
1
2
/ 2 页
下一页
返回列表
(十六)零基础开发小安派-Eyes-S1【外设篇】——DAC
[ 复制链接 ]
发布帖子
Ai-Thinker小泽
论坛元老
38
主题
539
回帖
6834
积分
论坛元老
论坛元老, 积分 6834, 距离下一级还需 9993165 积分
论坛元老, 积分 6834, 距离下一级还需 9993165 积分
积分
6834
私信
10人留言
楼主
小安派&M61零基础开发教程(官方)
21691
10
2023-12-22 18:11:39
> 本帖最后由 Ai-Thinker小泽 于 2023-12-22 18:11 编辑 # 零基础开发小安派-Eyes-S1【外设篇】——DAC 既然有ADC,自然就会有DAC啦,ADC是将模拟量转化为数字量,那么DAC就是相反的,将数字量转化为模拟量(电压)输出。 DAC 模块是 12 位电压输出数模转换器,可与 DMA 控制器配合使用。芯片内置的 DAC 模块有两个输出通道,每个通道各有一个独立的转换器,可以互不影响单独进行数模转换。另外此 DAC 的转化器还可以作为 AudioDAC 的模拟输出通道。可用于音频播放,变送器电压调制等应用。 ## 一、了解小安派-Eyes-S1的DAC 小安派-Eyes-S1具有两个通道的DAC,对应通道A和通道B,他们的IO口也是固定的,通道A对应IO3,通道B对应IO2。 其DAC具有以下特点: • DAC 调制精度为 12-bit • DAC 的数模转化器可以作为 AudioDAC 模块的模拟输出通道 • DAC 的输入时钟可选为 32MHz,xclk 或者来自于 AudioDAC 模块 • 支持 DMA 功能,支持 10 种数据传输格式 • 支持 DAC 双通道同时转换 • DAC 的输出引脚固定为 ChannelA 为 GPIO3,ChannelB 为 GPIO2 • 支持内部和外部输入参考电压 DAC分频有以下四种选择,其中在DMA模式可使用1分频: ``` #define DAC_CLK_DIV_16 0 #define DAC_CLK_DIV_32 1 #define DAC_CLK_DIV_64 3 #define DAC_CLK_DIV_1 4 ``` ## 二、结构体与函数接口 ### bflb_dac_init 说明: 初始化 dac。dac 使用之前需要开启 dac ip 时钟、设置 dac 时钟源和分频值、选择使用的 gpio 为 analog 模式。 ``` void bflb_dac_init(struct bflb_device_s *dev, uint8_t clk_div); ``` | parameter | description | | --------- | ----------- | | dev | 设备句柄 | | config | 配置项 | ### bflb_dac_deinit 说明: 反初始化 dac。 ``` void bflb_dac_deinit(struct bflb_device_s *dev); ``` | parameter | description | | --------- | ----------- | | dev | 设备句柄 | ### bflb_dac_link_txdma 说明: dac dma 开关使能。 ``` void bflb_dac_link_txdma(struct bflb_device_s *dev, bool enable); ``` | parameter | description | | --------- | ----------- | | dev | 设备句柄 | | enable | 是否使能DMA | ### bflb_dac_channel_enable 说明: dac 通道使能。 ``` void bflb_dac_channel_enable(struct bflb_device_s *dev, uint8_t ch); ``` | parameter | description | | --------- | -------------------------------- | | dev | 设备句柄 | | ch | 通道,多个通道之间使用“与”连接 | ### bflb_dac_channel_disable 说明: dac 通道关闭。 ``` void bflb_dac_channel_disable(struct bflb_device_s *dev, uint8_t ch); ``` | parameter | description | | --------- | --------------------------------- | | dev | 设备句柄 | | ch | 通道,多个通道之间使用 “与”连接 | ### bflb_dac_set_value 说明: 更改 dac 通道值。 ``` void bflb_dac_set_value(struct bflb_device_s *dev, uint8_t ch, uint16_t value); ``` | parameter | description | | --------- | ---------------------------------- | | dev | 设备句柄 | | ch | 通道,多个通道之间使用 “与 ”连接 | | value | 通道值 | ## 三、简单示例——DAC输出正弦波 本来想给大家画一个爱心的波形,但出于种种不可抗力(绝不是我懒)的缘故,没画出来。用官方示例中的数组输出一个正弦波形给大家演示。 ``` #include "bflb_dac.h" #include "bflb_mtimer.h" #include "board.h" #include "bflb_gpio.h" struct bflb_device_s *dac; void My_dac_gpio_init() { struct bflb_device_s* gpio; gpio = bflb_device_get_by_name("gpio"); /* DAC_CHA */ bflb_gpio_init(gpio, GPIO_PIN_3, GPIO_ANALOG | GPIO_SMT_EN | GPIO_DRV_0); } uint16_t SIN_LIST[] = { 500, 506, 513, 519, 525, 531, 538, 544, 550, 556, 563, 569, 575, 581, 587, 594, 600, 606, 612, 618, 624, 630, 636, 642, 648, 654, 660, 666, 672, 678, 684, 690, 696, 701, 707, 713, 718, 724, 730, 735, 741, 746, 752, 757, 762, 768, 773, 778, 784, 789, 794, 799, 804, 809, 814, 819, 823, 828, 833, 838, 842, 847, 851, 856, 860, 864, 869, 873, 877, 881, 885, 889, 893, 897, 901, 904, 908, 912, 915, 919, 922, 925, 929, 932, 935, 938, 941, 944, 947, 950, 952, 955, 958, 960, 962, 965, 967, 969, 971, 973, 975, 977, 979, 981, 983, 984, 986, 987, 989, 990, 991, 992, 993, 994, 995, 996, 997, 997, 998, 999, 999, 999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 999, 999, 999, 998, 998, 997, 996, 995, 994, 993, 992, 991, 990, 989, 987, 986, 984, 983, 981, 979, 978, 976, 974, 972, 970, 967, 965, 963, 960, 958, 955, 953, 950, 947, 944, 941, 938, 935, 932, 929, 926, 922, 919, 916, 912, 908, 905, 901, 897, 893, 890, 886, 882, 878, 873, 869, 865, 861, 856, 852, 847, 843, 838, 833, 829, 824, 819, 814, 809, 804, 799, 794, 789, 784, 779, 774, 768, 763, 758, 752, 747, 741, 736, 730, 725, 719, 714, 708, 702, 696, 691, 685, 679, 673, 667, 661, 655, 649, 643, 637, 631, 625, 619, 613, 607, 601, 594, 588, 582, 576, 570, 563, 557, 551, 545, 538, 532, 526, 520, 513, 507, 501, 495, 488, 482, 476, 469, 463, 457, 451, 444, 438, 432, 426, 420, 413, 407, 401, 395, 389, 383, 376, 370, 364, 358, 352, 346, 340, 334, 329, 323, 317, 311, 305, 299, 294, 288, 282, 277, 271, 265, 260, 254, 249, 244, 238, 233, 228, 222, 217, 212, 207, 202, 197, 192, 187, 182, 177, 172, 168, 163, 158, 154, 149, 145, 141, 136, 132, 128, 124, 119, 115, 111, 107, 104, 100, 96, 92, 89, 85, 82, 78, 75, 72, 69, 65, 62, 59, 56, 54, 51, 48, 45, 43, 40, 38, 36, 33, 31, 29, 27, 25, 23, 21, 19, 18, 16, 14, 13, 12, 10, 9, 8, 7, 6, 5, 4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 5, 5, 6, 8, 9, 10, 11, 12, 14, 15, 17, 19, 20, 22, 24, 26, 28, 30, 32, 35, 37, 39, 42, 44, 47, 50, 52, 55, 58, 61, 64, 67, 71, 74, 77, 81, 84, 87, 91, 95, 98, 102, 106, 110, 114, 118, 122, 126, 130, 135, 139, 143, 148, 152, 157, 161, 166, 171, 175, 180, 185, 190, 195, 200, 205, 210, 215, 220, 226, 231, 236, 242, 247, 252, 258, 263, 269, 274, 280, 286, 291, 297, 303, 309, 315, 320, 326, 332, 338, 344, 350, 356, 362, 368, 374, 380, 386, 392, 399, 405, 411, 417, 423, 430, 436, 442, 448, 455, 461, 467, 473, 480, 486, 492 }; // 输出正弦波的电压值数组 int main(void) { board_init(); My_dac_gpio_init(); dac = bflb_device_get_by_name("dac"); /* 512K / 16 = 32K */ bflb_dac_init(dac, DAC_CLK_DIV_16); // 16分频 bflb_dac_channel_enable(dac, DAC_CHANNEL_A); //选择通道A,对应GPIO3 printf("DAC Start\r\n"); while (1) { 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_mtimer_delay_ms(200); // 循环输出波形 } ``` ### 正弦波形:  ### 翻车的爱心波形: 
点赞
0
收藏
0
淘帖
2
────
0
人觉得很赞
────
本主题由 管理团队 于 2025-3-1 14:46 加入精华
本帖被以下淘专辑推荐:
·
小安派S1&M61教程合集
|
主题: 19, 订阅: 5
·
小安派&M61零基础教程
|
主题: 19, 订阅: 5
回复
使用道具
举报
10 回复
电梯直达
正序浏览
倒序浏览
正序浏览
沙发
lovzx
回复
使用道具
举报
2023-12-22 18:30:02
泽哥v5
回复
评论
使用道具
举报
板凳
1084504793
回复
使用道具
举报
2023-12-23 12:47:20
赞
回复
评论
使用道具
举报
地板
lazy
回复
使用道具
举报
2023-12-23 14:58:04
大佬就是厉害
回复
评论
使用道具
举报
5
#
bzhou830
回复
使用道具
举报
2023-12-23 16:47:24
泽哥v5
回复
评论
使用道具
举报
选择去发光,而不是被照亮
6
#
King6688
回复
使用道具
举报
2023-12-23 23:46:14
其他都不重要,重要的是翻车
回复
评论
使用道具
举报
7
#
爱笑
回复
使用道具
举报
2023-12-25 08:39:35
回复
评论
使用道具
举报
用心做好保姆工作
8
#
AXK123456
回复
使用道具
举报
2023-12-25 09:29:01
个大佬点赞
回复
评论
使用道具
举报
9
#
axkkj
回复
使用道具
举报
2024-4-23 19:35:49
向博主学习
回复
评论
使用道具
举报
10
#
djy876
回复
使用道具
举报
2024-9-3 11:46:57
学习打卡
回复
评论
使用道具
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
手机登录
点评
高级模式
本版积分规则
回帖并转播
回帖后跳转到最后一页
下一页 »
1
2
/ 2 页
下一页
今日推荐
AiPi-PalChatV1_“湾湾小何”提示音测试固件V2.9_UART-MCP
[WB2] 实现自动发现局域网下的设备
热帖排行
ra-01sc-p发射功率大小的使用问题
[AiPi-PalchatV1] [Windows] 克隆仓库和在线烧录遇到的一些小问
AT+MQTTPUBRAW指令所支持的最大数据传输量是多少
AiPi-PalChatV1_UART-MCP_v2.8 UART-MCP 协议配置 问题
Ai-WB2蓝牙怎么连接打印机
AI-WB2-12F电脑蓝牙连接秒断,手机搜索不到
AiPi-PalChatV1_“湾湾小何”提示音测试固件V2.9_UART-MCP
从零搭建 Ai-WB2 开发板的 Linux 开发环境—— 基于 VMware 虚拟
统计信息
会员数: 30474 个
话题数: 44643 篇
首页
分类
我的