精华内容
下载资源
问答
  • 此代码基于stm32,使用DMA的双缓冲机制和stm32片上DAC达到输出指定频率正弦波
  • 基于51单片机及DAC0832芯片产生频率可调的正弦波及回测其频率
  • DAC输出音乐

    2020-08-17 11:21:54
    单片机可使用自带DAC输出模拟信号,借此可输出音乐,过程中把握好定时器频率和缓存数据及时刷新。 另外在网上看到有使用定时器直接触发DAC DMA发送的,我经过测试发现发送的是瞬间完成而不是触发一次发送一次,我的...

    简介

    单片机可使用自带DAC输出模拟信号,借此可输出音乐,过程中把握好定时器频率和缓存数据及时刷新。

    另外在网上看到有使用定时器直接触发DAC DMA发送的,我经过测试发现发送的是瞬间完成而不是触发一次发送一次,我的测试没有通过

    本篇和WAV解析篇联系极大https://blog.csdn.net/shaynerain/article/details/108052144

    DAC配置

    直接开启ADC不需要其他额外配置,如果单声道可以只开一个,立体声就开两个

    定时器配置

    定时器配置中断,和音乐源的采样频率相同,如果是立体声,则频率是二分之一倍,下面是我在STM32F4的分配

    应用程序

    开启DAC

    开启定时器

    调用wav文件解析的wav_decode_play函数

    wav相关https://blog.csdn.net/shaynerain/article/details/108052144https://download.csdn.net/download/shaynerain/12712663

    定时器如下:

    void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
    {
    		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6);
    	
    	if(wav_buf_stats)
    	{		
    		if(tim_now == 0) 
    		{
    			tim_now = wav_buf_stats&0x01;
    			if(tim_now==0) tim_now = wav_buf_stats&0x02;
    		}
    		
    		temp+=1;
    		if(temp >= WAV_BUFSIZE){
    			temp=0;
    			if(tim_now==1) {tim_now=2; wav_buf_stats &= 0x02;}
    			else if(tim_now == 2) {tim_now = 1;wav_buf_stats &= 0x01;}
    		}
    		if(tim_now == 0x01){
    			HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_8B_R,wav_buf[temp]);
    			HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_8B_R,wav_buf[temp]);
    		}
    		if(tim_now == 0x02){
    			HAL_DAC_SetValue(&hdac,DAC_CHANNEL_1,DAC_ALIGN_8B_R,wav_buf2[temp]);
    			HAL_DAC_SetValue(&hdac,DAC_CHANNEL_2,DAC_ALIGN_8B_R,wav_buf2[temp]);
    		}
    	}
    }

     

    展开全文
  • DAC输出特定波形

    千次阅读 2019-11-23 01:17:37
    我所做的任务是用stm32F4的DAC输出一段特定频率和形状的波。 下面我将其分为几个步骤。 初始化 配置DAC 配置DMA 写入波形形状 初始化 配置DAC 首先查找到能够作为DAC的串口(在这里我选择的是PA...

    DAC输出特定波形

    我所做的任务是用stm32F4DAC输出一段特定频率和形状的波。

    简述过程:

    DMA将一个存储器(在这里选用的是一个数组)和一个外设(在这里选择的是DAC)连接起来,接着只要使能,就可以完成DAC的输出了。可以将DAC输出的通道连接到示波器或者逻辑分析仪上查看所输出的波形。
    下面我将其分为几个步骤。

    • 初始化
    • 配置DAC
    • 配置DMA
    • 写入波形形状

    初始化

    • 配置DAC

    首先查找到能够作为DAC的串口(在这里我选择的是PA4),接着分别使能所选择的串口和DAC。
    下图是各引脚的复用功能,这里我选择的就是PA4的DAC1-OUT。
    在这里插入图片描述
    第一步是使能刚刚所选择的引脚

    GPIO_InitTypeDef GPIO_InitStructure;
    DAC_InitTypeDef DAC_InitType;
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;//此处选择模拟输出,模拟输入或者其它都可以。
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    //GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //这里选择什么也都可以,不必纠结。
    GPIO_Init(GPIOA, &GPIO_InitStructure);//完成GPIOA的初始化。

    完成了引脚的初始化,接着就是DAC的配置了。

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//使能DAC的时钟 
    DAC_InitType.DAC_Trigger=DAC_Trigger_T2_TRGO; //选择DAC的触发方式,这里选择的是定时器2,也就意味着对定时器2的配置就完成了DAC输出频率的配置。  
    DAC_InitType.DAC_WaveGeneration=DAC_WaveGeneration_None;//不产生波形
    DAC_InitType.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0;//屏蔽幅值设置  
    DAC_InitType.DAC_OutputBuffer=DAC_OutputBuffer_Disable ; //DAC1输出缓存关闭
     DAC_Init(DAC_Channel_1,&DAC_InitType);  //初始化DAC通道1,只是普通的输出通道,不用在意为什么选通道一。
     DAC_Cmd(DAC_Channel_1, ENABLE);  //使能DAC通道1,这一步特别重要!!!
      
      DAC_SetChannel1Data(DAC_Align_12b_R, 0);  //12位右对齐数据格式来设置DAC的值

    然后记得在main函数里头加上定时器2的初始化使能!

    TIM2_Int_Init(100-1,8400-1);//此处定时器2的频率就是DAC的输出频率了,而频率该怎么计算,大家可在网上查找或者看我的其他文章。
    • DMA配置

    首先得说明一下,在stm32F4里头,DMA的配置是通过DMA的数据流和通道来配置的,而F1只是配置通道,但大致方法是差不多的。
    此处DMA的初始化放在了一个函数里面。

    void MYDMA_Config(DMA_Stream_TypeDef *DMA_Streamx,u32 chx,u32 par,u32 mar,u16 ndtr)
    { 
     DMA_InitTypeDef  DMA_InitStructure;
     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);//DMA1时钟使能
      DMA_DeInit(DMA_Streamx);//对通道和数据流的选择看下面的图
    
    while (DMA_GetCmdStatus(DMA_Streamx) != DISABLE){}//等待DMA可配置 
      /* 配置 DMA Stream */
      DMA_InitStructure.DMA_Channel = chx;  //对通道和数据流的选择看下面的图
      DMA_InitStructure.DMA_PeripheralBaseAddr = par;//DMA所连接到的外设的地址,par我认为应该是Peripheral的缩写。
      DMA_InitStructure.DMA_Memory0BaseAddr = mar;//DMA 存储器的地址,由于这里用的是数组,所以存储器的地址也就是数组的地址了。
      DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;//选择存储器到外设模式,顾名思义,不难理解。在其他场景中我们也可以选择其他模式。
      DMA_InitStructure.DMA_BufferSize = ndtr;//数据传输量,也就是数组的大小
      DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设非增量,这里外设选择的是DAC,所以不需要外设增量
      DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//存储器增量模式,也就是传输时会自动地按顺序将数组中的数一个个传输到DAC。
      DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//外设数据长度,由于我选用的数据长度是32位,所以这里选择了全字,其实没必要这么大,大家可以自行选择。全字的长度是32,半字是16,字节是8。这里也跟前面的12位右对齐有关。
      DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;//存储器数据长度,道理同上面。
      DMA_InitStructure.DMA_Mode = DMA_Mode_Circular ;//循环模式,也就是循环地不断输出该波形。 
      DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;//这个程序中没有太多的中断,所以这个可以随意选。
      DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
      DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
      DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//存储器突发单次传输。
      DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
      DMA_Init(DMA_Streamx, &DMA_InitStructure);//初始化该数据流。
     DMA_Cmd(DMA_Streamx, ENABLE); //使能。
     DAC_DMACmd(DAC_Channel_1,ENABLE);//将DAC和DMA连接起来。

    在这里插入图片描述
    在这里插入图片描述对于这个初始化函数,填完对应的数据流,通道,memory_address,可能就是外设地址比较令人头疼,那外设地址怎么找?
    在这里插入图片描述找到stm32f4xx.h或者是stm32f1xx.h,在里面找到你所需要的外设的结构体,结构体中就包括了这个外设所涉及的各种寄存器地址,根据描述选中你需要的地址。
    最终如下:(DMA1,STEAM5,CH7,外设为dac2,这里选的是dac channel1 12位右对齐;然后下一个是数组的地址,最后一个参数是数组的大小)

    MYDMA_Config(DMA1_Stream5,DMA_Channel_7,(u32)&DAC->DHR12R1,(u32)DATA2,SEND_BUF_SIZE);//DMA1,STEAM5,CH7,外设为dac2,这里选的是dac channel1 12位右对齐;然后下一个是数组的地址,最后一个参数是数组的大小
    
    • 写入数组,也就是所谓的存储器。

    这里大家想要输出什么波形就输入对应的数据(要记得乘以4096再除以3.3)。

    如果在运行过程中需要改变波形,只需在运行过程改变该数组里面的值,不需要再次调用初始化的函数,或者再次使能DMA,DAC。

    比如在按键触发的中断中改变数组的值,或者直接将指针指向其他数组。就能够实现按键改变输出波形。

    下面是我的数组数据。

    u32 DATA2[SEND_BUF_SIZE]={
      2460,
    2440,2420,2400,2380,2360,2340,2320,2300,2280,2260,2240,2220,2200,2180,2160,2140,2120,2100,2080,2060,
    2040,2020,2000,1980,1960,1940,1920,1900,1880,1860,1840,1820,1800,1780,1760,1740,1720,1700,1680,1660,
    1640,1620,1600,1580,1560,1540,1520,1500,1480,1500,1520,1540,1560,1580,1600,1620,1640,1660,1680,1700,
    1720,1740,1760,1780,1800,1820,1840,1860,1880,1900,1920,1940,1960,1980,2000,2020,2040,2060,2080,2100,
    2120,2140,2160,2180,2200,2220,2240,2260,2280,2300,2320,2340,2360,2380,2400,2420,2440,2460,2480,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
    12,25,38,51,64,77,90,103,116,129,142,155,168,181,194,206,219,232,245,258,
    270,283,296,308,321,333,346,358,371,383,395,408,420,432,444,456,468,480,492,504,
    516,528,540,551,563,575,586,597,609,620,631,642,654,665,676,686,697,708,719,729,
    740,750,760,770,781,791,801,811,820,830,840,849,859,868,877,886,895,904,913,922,
    931,939,948,956,964,972,980,988,996,1004,1011,1019,1026,1033,1040,1047,1054,1061,1068,
     };

    觉得对你有帮助就点个赞或收藏吧,熬夜肝的的确不容易。

    展开全文
  • 使用STM32F103的DAC模块输出一定频率的正弦波,频率和每个波形的点数均可修改!
  • STM32 ADC采集和DAC输出

    2015-07-10 22:34:43
    STM32 ADC采集通过DAC直接输出,采集频率最大700hz可完全不失真,700到4k,打点不完全,4k以上开始失真
  • 该例程用的stm32发03vc,keil5。有12路pwm,用pwm模拟dac输出电压的,不过如果不改变频率,只改变占空比,最高电压只有3.2V,已达到我的要求,就没用改变频率的部分
  • 轮流更新每个 DAC,并切换到合适的输出端,就可以使整个系统的有效吞吐率加倍。在复用这些 DAC输出时使用高质量的高速开关,这对系统总体性能是至关重要的。本设计实例中的电流型 DAC 考虑到输出开关的电流导引...
  • PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。PWM 模式分为两种,PWM1 和 PWM2,总得来说是差不多。 2.相关代码 使用了野火自带...

    一、PWM输出

    1.PWM输出模式

    PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。PWM 模式分为两种,PWM1 和 PWM2,总得来说是差不多。

    2.相关代码

    使用了野火自带的PWM输出波形工程文件在这里插入图片描述
    main.c

    #include "stm32f10x.h"
    #include "bsp_led.h"
    #include "bsp_GeneralTim.h"  
    
    /**
      * @brief  主函数
      * @param  无  
      * @retval 无
      */
    int main(void)
    {
    	/* led 端口配置 */ 
    	LED_GPIO_Config();
    	
    	/* 定时器初始化 */
    	GENERAL_TIM_Init();
    	
      while(1)
      {      
      }
    }
    

    生成hex文件
    在这里插入图片描述

    3.程序烧录

    在这里插入图片描述

    4.结果验证

    通过PB5观察到输出一个矩形脉冲波形
    在这里插入图片描述

    二、DAC输出

    STM32F103指南者的DAC输出通道为PA4和PA5,使用这两个引脚来观测输出波形
    在这里插入图片描述

    1.输出一个周期2khz的正弦波

    • 正弦波频率的计算方式:
      在这里插入图片描述
      我们需要输出一个周期为2kHz的正弦波,通过计算公式,我们可以得到,一共需要3600个采样点

    • 打开野火自带的正弦波表制作脚本,生成3600个采样点,这些点存在.c文件中
      在这里插入图片描述
      修改为

    %用于产生正弦数据表,输出到文件dac_sinWave.c 文件中,复制到c语言数组即可
    
    n = 2*pi/3600 : 2*pi/3600 : 2*pi      %分成3600等份
    
    a = sin(n)+1;                     %求取sin函数值并向上平移一个单位,消除负数值
    a = a * 3.3/2;                    %调整幅值,使范围限制为0~3.3   
    r = a* (2.^12) /3.3               %求取dac数值,12位dac LSB = 3.3/2.^12 
    r = uint16(r);                     %double型数据转化成16位整型数据 
    
    for i = 1:32                        
    if r(i) > 4095                      %限制数据最大不超过4095
        r(i) = 4095
    end
    end 
    
    dlmwrite('dac_sinWave.c',r);      %把数据写入到文件,方便添加到stm32工程中
    plot(n,r,'.')                     %把这些点画出来 
    
    • 打开DAC输出工程,进行修改
      在这里插入图片描述
      将生成的点放入Sine12bit[POINT_NUM]中
      在这里插入图片描述
    • 结果验证
      烧录程序后,示波器接PA4、PA5观察所得结果
      在这里插入图片描述
      有嘀嘀嘀的声音,但由于蜂鸣器没有接三极管和电阻,没有进行声音的放大,所以只有很小的声音。

    2.将一段数字音频歌曲数据转换为模拟音频波形输出

    • 打开Adobe Audition CS6,裁剪出一段音乐,这里采用了采样44100hz,量化16bit,2声道。
      在这里插入图片描述
    • 转码转为16进制
      在这里插入图片描述
    • 将得到的16进制码放入Sine12bit[POINT_NUM]中,修改点数为5120
    • 结果
      在这里插入图片描述

    参考链接:
    https://www.cnblogs.com/zhugeanran/p/8542395.html
    https://blog.csdn.net/kevin_IoT/article/details/61650516?utm_source=blogxgwz3
    https://blog.csdn.net/dcx1205/article/details/9002542?utm_medium=distribute.wap_relevant.none-task-blog-baidujs_title-14
    https://blog.csdn.net/qq_36355662/article/details/80606753

    展开全文
  • 使用STM32输出PWM波形 1、使用资料:野火开发板资料...按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率 . 脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高

    使用STM32输出PWM波形

    1、使用资料:野火开发板资料
    《零死角玩转STM32》

    2、PWM模式介绍
    脉宽调制(PWM)基本原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。也就是在输出波形的半个周期中产生多个脉冲,使各脉冲的等值电压为正弦波形,所获得的输出平滑且低次谐波少。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率 .
    脉冲宽度调制(PWM)是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
    主函数

    int main(void)
    {
    	/* led 端口配置 */ 
    	LED_GPIO_Config();
    	
    	/* 定时器初始化 */
    	GENERAL_TIM_Init();
    	
      while(1)
      {      
      }
    
    

    调用

    void GENERAL_TIM_Init(void)
    {
    	GENERAL_TIM_GPIO_Config();
    	GENERAL_TIM_Mode_Config();		
    }
    

    3、具体步骤
    1)将整个工程编辑运行
    2)选择设置,打开,并更改部分设置,配置为软件仿真模式。
    在这里插入图片描述在这里插入图片描述
    3)打开调试,并将波形输出
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    单机运行代码,若没有波形显示,可以通过鼠标的滚轮查看,或者点击Zoom(In(放大)Out(缩小))
    在这里插入图片描述

    在这里插入图片描述

    用STM32F103的DAC输出正弦波

    1)输出一个周期2khz的正弦波(循环)。此波形驱动作用至蜂鸣器或喇叭,会呈现一个“滴…”的单音;

    1、使用资料(上文下载的野火资料)
    2、DAC简介
    DAC 为数字/模拟转换模块,作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与 ADC 相反。在常见的数字信号系统中,大部分传感器信号被化成电压信号,而 ADC 把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由 DAC 输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。
    STM32 具有片上 DAC 外设,它的分辨率可配置为 8 位或 12 位的数字输入信号,具有
    两个 DAC 输出通道,这两个通道互不影响,每个通道都可以使用 DMA 功能,都具有出错
    检测能力,可外部触发
    功能框图
    在这里插入图片描述

    正弦波频率计算
    在这里插入图片描述

    具体介绍可以查看《零死角玩转STM32》

    3、找到需要的工程文件,第38个DAC_输出正弦波。

    在这里插入图片描述1)打开工程
    2)使用matlab,更改bsp_dac.c文件中波形数据数值。
    找到matlab函数,将matlab生成的.c文件找到。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    
    %用于产生正弦数据表,输出到文件dac_sinWave.c 文件中,复制到c语言数组即可
    
    n = 2*pi/3600 : 2*pi/3600 : 2*pi      %分成3600等份
    
    a = sin(n)+1;                     %求取sin函数值并向上平移一个单位,消除负数值
    a = a * 3.3/2;                    %调整幅值,使范围限制为0~3.3   
    r = a* (2.^12) /3.3               %求取dac数值,12位dac LSB = 3.3/2.^12 
    r = uint16(r);                     %double型数据转化成16位整型数据 
    
    for i = 1:32                        
    if r(i) > 4095                      %限制数据最大不超过4095
        r(i) = 4095
    end
    end 
    
    dlmwrite('dac_sinWave.c',r);      %把数据写入到文件,方便添加到stm32工程中
    plot(n,r,'.')                     %把这些点画出来 
    

    在这里插入图片描述
    3)更改波形点数
    在这里插入图片描述
    在这里插入图片描述
    4)将工程运行,生成.hex文件,拷贝到芯片中,通过PA4,PA5端口,用示波器观察输出。
    在这里插入图片描述

    2)将一段数字音频歌曲数据转换为模拟音频波形输出(循环)。

    1、下载一首歌曲,并下载nodepad++、Ultraedit、Adobe Audition。
    2、参考资料

    在这里插入图片描述6、用Ultraedit打开记事本,右键选择范围,保存
    在这里插入图片描述
    7、用notepad++打开上面保存文件,编辑–列块编辑–插入文本 ,生成如下文件。
    在这里插入图片描述
    在这里插入图片描述

    8、将生成的代码放到上面的DAC工程中。
    在这里插入图片描述
    9、编辑,运行,将工程生成.hex文件,拷贝到芯片中,通过示波器观察输出。

    展开全文
  • 频率又和DAC_TriangleAmplitude有关 就是这个DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_1023; <p>DAC_TriangleAmplitude这个值选的太大,无法达到高频率,例如我选...
  • FPGA控制DAC输出正弦波、三角波

    千次阅读 2018-05-28 14:07:15
    第一步:生成波形coe文件第二步:将coe文件添加到ROM中第三步:控制FPGA刷新输出ROM中的数据://----刷新频率设置参数 dac_dataalways @(posedge i_clk or negedge i_rstn) begin if(!i_rstn) begin update_clk ...
  • 上一个BLOG分析了ADC输出的ENABLE,VALID,DATA信号。补充一张在旁边呜呜响的频谱分析仪的图: 我们看到中心频率是2.4G,在2.4G技术上加了大约半个,每格式2M,半格就是1M。这是因为我们使用的是2.4G射频,基带...
  • (STM32)使用DAC输出WAVE音频波形

    万次阅读 2011-10-12 15:26:11
    本想使用PWM输出音频的,但无论怎么样调试,PWM的音频的频率总不对。后来,改用DAC了。 配置: 芯片:STM32F103VET DACDAC通道2(8位右对齐)、定时器TIM7中断更改DAC值 WAVE数据:以const形式放于芯片上(8kHz...
  • stm32f4 DAC DMA 频率发生器+FreeRTOS

    千次阅读 2013-10-23 12:02:04
    最近学习了STM32F4 将FreeRTOS移植到了STM32 Discovery的板子上 做了一个频率发生器 可以产生 正弦波、三角波 通过蓝牙与电脑通信可以调整频率。FreeRTOS的移植我是基于FreeRTOS最新官方7.5.2版,在FreeRTOS上面我...
  • STM32配置DAC输出固定电压和方波

    千次阅读 2013-08-27 17:55:09
    STM32F103VCT6自带两个12位DACDAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了。ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.17us。如果AD和DA有对称关系的话,那么很可能跟ADC...
  • STM32F407VET.基于DDS 用内置DAC实现多种波形(正弦 方波 三角波 锯齿波)输出,支持频率可调 (范围1HZ-5MHZ 在5MHz下精度大约100khz左右) 有自定义波形功能
  • 使用 GUIDE 和数据采集工具箱,用户可以选择安装的工具箱类型和板。 一旦选定,用户就能够以选定的时钟和波形频率输出正弦波、方波和三角波。 此外,用户能够控制输出的幅度和通道。
  • 针对基于DC-AC可编程交流电源频率与相位调节分辨率较低、高次谐波叠加困难、输出波形畸变等问题,提出了应用处理器STM32F103ZET6内置的两路12 bit DAC来拟合波形作输出的方案。CPU计算出所需的波形点,经DAC拟合输出...
  • 文章目录一、DAC简介二、输出周期为2kHz的正弦波① 通过如下公式计算出,周期频率位为2kHz大约需要采集1800个点② 通过matlab制作正弦波表③ 将模拟好的数据替换工程中的波形数据三、音频信号输出四、参考资料 ...
  • 想使用ESP32的PWM功能请查看:《ESP32 学习笔记》 之Arduino环境下 如何优雅的输出频率可变的PWM波 这篇 查看 esp32-hal-dac.c 文件,我们很容易看出 DAC功能 仅适用于 IO25 和 IO26 两个引脚,并在...
  • 这里写目录标题一、 PWM相关概念PWM控制的基本原理二、用STM32F103输出一路PWM波形三、DAC的介绍1.DAC(数字/模拟转换模块)2.ADC(模拟/数字转换模块)3.DAC的特点4.DAC模块功能框图四、输出周期2khz的正弦波五、将...
  • 利用DAC0832的单片机输出正弦波信号,高精度,频率、幅度可调
  • ADDA-DAC0832数码管显示输出.实现以一定频率从暗到亮显示
  • 这里分为两个部分:第一部分实现特定频率单音频信号波形的输出;第二部分实现歌曲音频信号波形的输出。 目录(一)DAC简介1.STM32的DAC2.DAC主要特征3.DAC通道模块框图(二)单音频正弦波输出1.实验目的2.ADC 配置3...
  • STM32F103系列_DAC 可以产生方波正弦波,可以通过调整,改变频率、幅值、等等参数
  • STM32之DAC固定电压输出配置

    千次阅读 2014-06-22 20:38:42
    STM32F103VCT6自带两个12位DACDAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了。ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.17us。如果AD和DA有对称关系的话,那么很可能跟ADC...
  • 绝大多数的DAC都是单极性的,只有极少数的DAC是双极性输出,使用单极性DAC要想输出双极性信号,那么只需要将输出的单极性信号通过电平的平移使其变为双极性信号,此时就需要用到运放。使用运放搭建的减法电路应用就...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 413
精华内容 165
关键字:

dac输出频率