野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11585|回复: 5

DAC输出正弦波有没有视频呀

[复制链接]
发表于 2019-3-25 19:39:27 | 显示全部楼层 |阅读模式
想输出正弦波,自己写完后没有输出,想看看视频,学习一下
回复

使用道具 举报

发表于 2019-3-26 08:38:43 | 显示全部楼层
这个只有文档
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 13:09:28 | 显示全部楼层

#include "sin.h"

const u16 Sine12bit[32] = {
        2448,2832,3186,3496,3751,3940,4057,4095,4057,3940,
        3751,3496,3186,2832,2448,2048,1648,1264,910,600,345,
        156,39,0,39,156,345,600,910,1264,1648,2048
};

      u32 DualSine12bit[32];

static void DAC_Config(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        DAC_InitTypeDef  DAC_InitStructure;


  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);       
       
               
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
       

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
  GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
       



  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;                                               
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;       
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;       
        DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);


  DAC_Init(DAC_Channel_2, &DAC_InitStructure);


  DAC_Cmd(DAC_Channel_1, ENABLE);

  DAC_Cmd(DAC_Channel_2, ENABLE);


  DAC_DMACmd(DAC_Channel_1, ENABLE);
}



static void DAC_TIM_Config(void)
{
       
        TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
       
       
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
       

// TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
  TIM_TimeBaseStructure.TIM_Period = (20-1);                                                                              
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                                                              
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                   
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;         
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);


  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

       
  TIM_Cmd(TIM2, ENABLE);

}


static void DAC_DMA_Config(void)
{       
        DMA_InitTypeDef  DMA_InitStructure;

       
        RCC_APB1PeriphClockCmd(RCC_AHB1Periph_DMA1,ENABLE);
       
       
        DMA_InitStructure.DMA_Channel=DMA_Channel_7;
  DMA_InitStructure.DMA_PeripheralBaseAddr = DAC_DHR12RD_ADDRESS;                                       
  DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&DualSine12bit ;                               
  DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;                                                                                       
  DMA_InitStructure.DMA_BufferSize = 32;                                                                                                                                               
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                               
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                       
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;       
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;                                       
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                                                       
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                                                       
        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(DMA1_Stream5, &DMA_InitStructure);
       

  DMA_Cmd(DMA1_Stream5, ENABLE);
}



void DAC_Mode_Init(void)
{
        uint32_t Idx = 0;  

        DAC_Config();
        DAC_TIM_Config();       
       
  for (Idx = 0; Idx < 32; Idx++)
  {
    DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  }
       
        DAC_DMA_Config();
}


为什么我照着文档写的,却没有波形输出?我的是f407

回复 支持 反对

使用道具 举报

发表于 2019-3-26 13:47:24 | 显示全部楼层
407的我们也有配代码啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 15:18:47 | 显示全部楼层
flyleaf 发表于 2019-3-26 13:47
407的我们也有配代码啊

能问一下在哪找吗?真的没看到有407,只找到了429
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-26 15:25:03 | 显示全部楼层
flyleaf 发表于 2019-3-26 13:47
407的我们也有配代码啊

公众号找到了,我再看看,谢谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 01:00 , Processed in 0.039389 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表