265|0

65

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第3期】DAC配置生成波形及性能测试 [复制链接]

  本帖最后由 breeze_i 于 2024-12-17 21:25 编辑

简介:本次实验使用RA6M5的片内外设DAC模块,产生三角波和正弦波,驱动LED,实现呼吸灯效果。

打开用户手册,找到DAC模块,框图如下:

可以看到,这是一个转换精度12为的ADC,有两路输出,在原理图中看到DA0对应的引脚是P014。本次将DAC输出通过杜邦线连接到LED3上。

二、模块配置
打开e2studio,如图打开FSP配置界面:添加DAC模块。

三、三角波、正弦波实现

第一个DAC_output()是三角波,第二个函数DAC_output_sineware()是生成正弦波。

  • fsp_err_t DAC_output(void)
  • {
  • static int16_t a=1;
  • gs_dac_value=(uint16_t)(gs_dac_value+a);
  • if(gs_dac_value>=0x0FFF)
  • // if (gs_dac_value >= 0x5)
  • {
  • a = -1;
  • }
  • else if (gs_dac_value == 0)
  • {
  • a = 1;
  • }
  • fsp_err_t status = R_DAC_Write(&g_dac0_ctrl, gs_dac_value);
  • return status;
  • }
  • fsp_err_t DAC_output_Sinewave(void)
  • {
  • fsp_err_t ret;
  • uint64_t currenttime=gs_dwTick;
  • // uint16_t DAC_value=0;
  • uint64_t t_ms=(currenttime-gs_starttime); //ms
  • double t_s =(double)t_ms/1000;//(double)(t_ms/1000);
  • DAC_value=(uint16_t)((sin(t_s)+1)/2*4096);
  • ret = R_DAC_Write(&g_dac0_ctrl, DAC_value);
  • return ret;
  • }

四、实验现象

使用杜邦线将P014和P008短接,将工程中P008引脚去使能,即保持在高阻态。

1.在10ms任务中调用三角波生成函数DAC_outoput();实验现象如视频所示(可能是白天太亮了,手机摄像头录的LED3变化不明显)。

播放器加载失败: 未检测到Flash Player,请到安装
20241215_090931

2.在10ms任务中调用三角波生成函数DAC_outoput_Sineware();实验现象如视频所示(这次把旁边的绿色led2关掉试试),可以看到红色LED3的明暗变化,实现了呼吸灯效果,然后打开FreeMaster看一下DAC生成的波形是按照正弦规律变化的。

播放器加载失败: 未检测到Flash Player,请到安装
20241215_092632

下面配置ADC模块。

按照如下步骤在DAC工程中添加ADC模块

属性设置:

我选用的是Channel0,P000引脚,不使用中断。采样精度选最高的12bit

点击Generate Project Content生成代码。

驱动函数封装

在src文件夹下新adc.h,adc.c两个文件。

adc.c添加代码如下

  • #include "adc.h"
  • volatile bool scan_complete_flag = false;
  • uint16_t gs_adc_value=0;
  • void ADC_Init()
  • {
  • fsp_err_t status = R_ADC_Open(&g_adc0_ctrl, &g_adc0_cfg);
  • if(status!=FSP_SUCCESS)
  • {
  • while(1);
  • }
  • status = R_ADC_ScanCfg(&g_adc0_ctrl, &g_adc0_channel_cfg);
  • if(status!=FSP_SUCCESS)
  • {
  • while(1);
  • }
  • }
  • //void adc_callback(adc_callback_args_t * p_args)
  • //{
  • // FSP_PARAMETER_NOT_USED(p_args);
  • // scan_complete_flag = true;
  • //}
  • void ADC_READ_DATA()
  • {
  • fsp_err_t status = R_ADC_ScanStart(&g_adc0_ctrl);
  • adc_status_t adc_status;
  • do{
  • status=R_ADC_StatusGet(&g_adc0_ctrl, &adc_status);
  • }while(adc_status.state==ADC_STATE_SCAN_IN_PROGRESS);
  • //if(scan_complete_flag==true)
  • {
  • status = R_ADC_Read(&g_adc0_ctrl,ADC_CHANNEL_0, &gs_adc_value);
  • // scan_complete_flag = false;
  • }
  • }


注意ADC转换需要时间,尽管只要0.4us,但这个时间对mcu来说还是很长的,在开始扫描之后需要等待转换完成之后,才能读取到数据。

 

 

 

然后再在hal_entry()函数中中调用ADC_Init()函数,初始化ADC模块。

在1ms任务中调用ADC 读取函数

使用Freemaster观测dac模块设定输出值和adc模块采集到的电压值,可以看到两条曲线基本重合,说明dac模块的输出还是挺准的。


 

 

 

 

 

 

点赞 关注
个人签名

学习使人进步

 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
电路“集成”使军事力量倍增

电路“集成”使军事力量倍增自从60年代第一块集成电路问世,30多年来,微电子技术得到了飞速发展,首先在军事上得到广泛的应用, ...

配有数字式增益和带宽控制的交流放大器

配有数字式增益和带宽控制的交流放大器 慧聪网2005年3月21日14时58分 在低噪声模拟电路中,高增益放大器在输入 ...

【EEWORLD模块整理】+tlc2543(A/D)

今年我用的模块资料 已经证实好用

Arduino创意设计集:硬件设计头脑风暴--EEWORLD大学堂

机器总动员:Arduino让WALL·E动起来:https://training.eeworld.com.cn/course/560 用Arduino自搭了一个声控的wall-e自动机器 ...

低成本无线WiFi音乐播放系统设计

以STM32F103作为微处理器,设计了一个低成本的无线WiFi音乐播放系统,结合接收WiFi数据的WM-G-MR-08(wm631)模块和VS1003B音频解 ...

针对恶劣工业环境选择以太网的三大注意事项

在以太网取得了突飞猛进发展的当代,现已在商业和企业市场上得到了大量的应用。由于它具有定义明确的标准和易于部署的特性, ...

电机控制基础——定时器基础知识与PWM输出原理

本帖最后由 DDZZ669 于 2021-2-20 11:45 编辑 单片机开发中,电机的控制与定时器有着密不可分的关系,无论是直流电机,步进电 ...

RS-422输入阻抗测试

求助:RS-422输入阻抗测试 疑问:422标准是不是有规定输入阻抗大于4KΩ? 求助:RS-422的输入阻抗测试方法。

RDA收音机问题

我设计出来的RDA5807FP收音机出现以下问题:在环境温度升高过程中,收音效果会变差。35度以上就会变差,此时起动自动搜台,会收 ...

AM335x无法启动(封装后型号OSD3358)beaglebone

我使用了AM335x 封装的CPU时(封装后型号为OSD3358),但是通过uboot启动时,出现了无法启动问题。请问启动时需要有其它配置吗? ...

关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 9

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表