登录发现更多内容
首页
分类
发帖
账号
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
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
主题
554
回帖
6986
积分
论坛元老
论坛元老, 积分 6986, 距离下一级还需 9993013 积分
论坛元老, 积分 6986, 距离下一级还需 9993013 积分
积分
6986
私信
10人留言
楼主
小安派&M61零基础开发教程(官方)
41807
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
人觉得很赞
────
本帖被以下淘专辑推荐:
·
小安派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 页
下一页
浏览过的版块
吐槽专区
板子开箱专区
ESP8266系列
板子申请专区
小安派&M61环境搭建、编译烧录教程
今日推荐
Ai-BV01-32S 参数全解析——一颗语音模组的底牌,规格书里没写的
第十期电子DIY——用 Ai-WV01-32S 打造一个会说话的AI 小玩意
【DIY小项目分享】AI语音便携可调电源
ai wb2 串口调试,疯狂输出乱码
BW16打板擦除失败是什么原因
我在Application中使能了blinky sample, 程序并没有运行
机器人量产,以后会不会搬砖越来越难
FreeRTOS学习-02-i2c
FreeRTOS学习-01-PWM
FreeRTOS学习-00-led
热帖排行
Ai-BV01-32S 参数全解析——一颗语音模组的底牌,规格书里没写的
AI-BS21-32S使用AT指令都是Unknown cmd
Ra-01SC-P使用
第十期电子DIY——用 Ai-WV01-32S 打造一个会说话的AI 小玩意
【DIY小项目分享】AI语音便携可调电源
RG-03H 参数全解析——一份讲人话的规格书导读
BW20-07S支持低功耗休眠模式吗 不知道什么原因一直返回错误码32
小安派-Eyes-S1 - LVGL库入门 样式
统计信息
会员数: 31103 个
话题数: 44805 篇
首页
分类
我的