OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10913|回复: 8

STM32双DAC同时转换问题

[复制链接]

4

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2015-1-22
在线时间
6 小时
发表于 2015-1-23 09:46:21 | 显示全部楼层 |阅读模式
5金钱
const uint16_t Sine12bit[32] = {
                      2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
                      3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909, 
                      599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647};

const uint16_t Tri12bit[32] = {
                      0, 0, 0, 0, 0, 0, 0, 0, 200, 400,
                      600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 2200, 2400, 
                      2600, 2800, 3000, 3200, 3400, 3600, 3800, 4000, 3000, 2000, 1000, 0};

const uint16_t Sta12bit[32] = {
                      1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000,
                      1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 
                      1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000};

uint32_t DualSine12bit[32];


/**
  * @brief  使能DAC的时钟,初始化GPIO
  * @param  无
  * @retval 无
  */
static void DAC_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
        DAC_InitTypeDef  DAC_InitStructure;

  /* 使能GPIOA时钟 */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);        
        
        /* 使能DAC时钟 */        
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
        
  /* DAC的GPIO配置,模拟输入 */
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
        //GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
        


  /* 配置DAC 通道1 */
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;                                                //使用TIM2作为触发源
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;        //不使用波形发生器
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;        //不使用DAC输出缓冲
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);


  /* 配置DAC 通道2 */
        DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;                                                //使用TIM6作为触发源
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;        //不使用波形发生器
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;        //不使用DAC输出缓冲
  DAC_Init(DAC_Channel_2, &DAC_InitStructure);
        
        
        DAC_SetChannel1Data(DAC_Align_12b_R, 0x0000);
  DAC_SetChannel2Data(DAC_Align_12b_R, 0x0000);


  /* 使能通道1 由PA4输出 */
  DAC_Cmd(DAC_Channel_1, ENABLE);
  /* 使能通道2 由PA5输出 */
  DAC_Cmd(DAC_Channel_2, ENABLE);
        
        

        

  /* 使能DAC的DMA请求 */
  DAC_DMACmd(DAC_Channel_2, ENABLE);
        DAC_DMACmd(DAC_Channel_1, ENABLE);
        
        
        //DAC_DualSoftwareTriggerCmd(ENABLE);
}


/**
  * @brief  配置TIM
  * @param  无
  * @retval 无
  */
static void DAC_TIM2_Config(void)
{
        
        TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
        
        /* 使能TIM2时钟 */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
        
  /* TIM2基本定时器配置 */
// TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
  TIM_TimeBaseStructure.TIM_Period = 19;                                                                               //定时周期 20  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                                                               //预分频,不分频
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                    //时钟分频系数
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;          //向上计数模式
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /* 配置TIM2触发源 */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

        /* 使能TIM2 */
  TIM_Cmd(TIM2, ENABLE);

}


static void DAC_TIM6_Config(void)
{
        
        TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
        
        /* 使能TIM6时钟 */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE);
        
  /* TIM6基本定时器配置 */
// TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
  TIM_TimeBaseStructure.TIM_Period = 39;                                                                               //定时周期 40  
  TIM_TimeBaseStructure.TIM_Prescaler = 0x0;                                                               //预分频,不分频
  TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;                                                    //时钟分频系数
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;          //向上计数模式
  TIM_TimeBaseInit(TIM6, &TIM_TimeBaseStructure);

  /* 配置TIM6触发源 */
  TIM_SelectOutputTrigger(TIM6, TIM_TRGOSource_Update);

        /* 使能TIM6 */
  TIM_Cmd(TIM6, ENABLE);

}

/**
  * @brief  配置DMA
  * @param  无
  * @retval 无
  */
static void DAC2_DMA_Config(void)
{        
        DMA_InitTypeDef  DMA_InitStructure;

        /* 使能DMA2时钟 */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
        
        /* 配置DMA2 */
  DMA_InitStructure.DMA_PeripheralBaseAddr =  0x40007414;                                        //外设数据地址DAC_DHR12R2
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Tri12bit ;                                //内存数据地址 Tri12bit
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                                                                        //数据传输方向内存至外设
  DMA_InitStructure.DMA_BufferSize = 32;                                                                                                                                        //缓存大小为32字节        
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                                //外设数据地址固定        
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                        //内存数据地址自增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;        //外设数据以字为单位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                                        //内存数据以字为单位        
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                                                        //循环模式
  DMA_InitStructure.DMA_Priority = DMA_Priority_Medium;                                                                                        //高DMA通道优先级
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                                                                                //非内存至内存模式        

  DMA_Init(DMA2_Channel4, &DMA_InitStructure);
        
  /* 使能DMA2-14通道 */
  DMA_Cmd(DMA2_Channel4, ENABLE);
}


static void DAC1_DMA_Config(void)
{        
        DMA_InitTypeDef  DMA_InitStructure;

        /* 使能DMA2时钟 */
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE);
        
        /* 配置DMA2 */
  DMA_InitStructure.DMA_PeripheralBaseAddr =  0x40007408;                                        //外设数据地址DAC_DHR12R1
  DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&Sine12bit ;                                //内存数据地址 Sine12bit
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralDST;                                                                                        //数据传输方向内存至外设
  DMA_InitStructure.DMA_BufferSize = 32;                                                                                                                                        //缓存大小为32字节        
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                                //外设数据地址固定        
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                        //内存数据地址自增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;        //外设数据以字为单位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                                        //内存数据以字为单位        
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                                                        //循环模式
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                                                        //高DMA通道优先级
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;                                                                                                                //非内存至内存模式        

  DMA_Init(DMA2_Channel3, &DMA_InitStructure);
        
  /* 使能DMA2-13通道 */
  DMA_Cmd(DMA2_Channel3, ENABLE);
}


/**
  * @brief  DAC初始化函数
  * @param  无
  * @retval 无
  */
void DAC_Mode_Init(void)
{
        //uint32_t Idx = 0;  

        DAC_Config();
        
        DAC_TIM6_Config();
        DAC2_DMA_Config();
        
        
        DAC_TIM2_Config();
        DAC1_DMA_Config();
        

        
        
        /* 填充正弦波形数据,双通道右对齐*/
  //for (Idx = 0; Idx < 32; Idx++)
  //{
  //  DualSine12bit[Idx] = (Sine12bit[Idx] << 16) + (Sine12bit[Idx]);
  //}
}



DAC1由TIME2控制,DMA2CH3通道传输数据至DAC_DHR12R1寄存器,地址0x40007408。写入的数据为正弦波。
DAC2由TIME6控制,DMA2CH4通道传输数据至DAC_DHR12R2寄存器,地址0x40007414。写入的数据为锯齿波。


想要分别产生不同频率的正弦波与锯齿波。 分别只配置各自通道时,两通道都能产生各自的波形。

问题有两个:

1.无论单独配置任一通道,未配置的通道也产生波形且与被配置通道波形一样;
2.两通道同时打开时,无法独立输出两个波形,有明显的干扰,但两通道输出结果一样。


求解,会不会是后续电路对输出有影响?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-1-23 09:46:22 | 显示全部楼层
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-11-1
在线时间
1 小时
发表于 2015-3-29 15:41:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
同问!!!!!!!!!!!!!!!!!
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
24
金钱
24
注册时间
2015-3-20
在线时间
0 小时
发表于 2015-3-29 18:11:21 | 显示全部楼层
期待,楼主解决没?
就玩玩
回复

使用道具 举报

0

主题

25

帖子

0

精华

新手入门

积分
13
金钱
13
注册时间
2016-3-6
在线时间
43 小时
发表于 2017-2-7 09:57:52 | 显示全部楼层
我也在考虑这个问题,还没能解决。虽然没有正确的答案,但我看出您这个方案的一点不妥之处:
-----------------------------------------------------------------------------------------------
DAC1由TIME2控制,DMA2CH3通道传输数据至DAC_DHR12R1寄存器,地址0x40007408。写入的数据为正弦波。
DAC2由TIME6控制,DMA2CH4通道传输数据至DAC_DHR12R2寄存器,地址
0x40007414。写入的数据为锯齿波。
------------------------------------------------------------------------------------------------
以上两个寄存器是不对的,这是在单个DAC情况下,才能这么用的。
双DAC时,应该是:DHR8RD 或 DHR12RD 或 DHR12LD
希望能给您一点帮助,更希望您能找到解决问题的方法,贴到这里共享。
事在人为,顺势而为。
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2017-10-4
在线时间
19 小时
发表于 2017-10-11 11:19:36 | 显示全部楼层
sweetstandard 发表于 2017-2-7 09:57
我也在考虑这个问题,还没能解决。虽然没有正确的答案,但我看出您这个方案的一点不妥之处:
------------ ...

双通道频率振幅可调节DA输出 您调通了吗?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
14
金钱
14
注册时间
2019-7-28
在线时间
3 小时
发表于 2019-8-4 21:05:37 | 显示全部楼层
我也试了好久,在使能和通道值是这样配置的,然后两路DAC都能用了
        DAC_Cmd(DAC_Channel_1,ENABLE);  
        DAC_Cmd(DAC_Channel_2,ENABLE);
  
  DAC_SetDualChannelData(DAC_Align_12b_R, 0, 0);  
并且发现DAC_DualSoftwareTriggerCmd(ENABLE);这个函数好像并没有用……,希望能帮到楼主
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2022-3-3
在线时间
12 小时
发表于 2022-4-7 18:04:03 | 显示全部楼层
本帖最后由 AllenShen 于 2022-4-7 18:05 编辑

我是这么配置的,倒是实现双路独立输出了
  1. #include "dac.h"
  2. #include "math.h"
  3. uint16_t Sine12bit[Point_Num];
  4. uint16_t Tri12bit[Point_Num];
  5. /******************************************************************
  6. 函数名称:DAC_Config()
  7. 函数功能:DAC初始化
  8. 参数说明:
  9. 备    注:使用PA4,通道1;PA5,通道2
  10. *******************************************************************/        
  11. void DAC_Config(void)
  12. {
  13.   GPIO_InitTypeDef GPIO_InitStructure;
  14.         DAC_InitTypeDef  DAC_InitStructure;
  15.         
  16.   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);//使能GPIOA时钟        
  17.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);//使能DAC时钟
  18.   
  19.   /*******************初始化GPIO口***************/
  20.   GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4;
  21.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
  22.   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  23.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  
  24.   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  25.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  26.         
  27.         GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_5;
  28.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  29.         /*******************初始化DAC***************/
  30.   DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;//使用TIM2作为触发源
  31.   DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;        //不使用波形发生器
  32.   DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;        //不使用DAC输出缓冲
  33.         DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude = DAC_TriangleAmplitude_4095;//三角波振幅,未用,但不能为空
  34.   DAC_Init(DAC_Channel_1, &DAC_InitStructure);
  35.         DAC_InitStructure.DAC_Trigger = DAC_Trigger_T5_TRGO;//使用TIM5作为触发源
  36.         DAC_Init(DAC_Channel_2, &DAC_InitStructure);
  37.         
  38.   DAC_Cmd(DAC_Channel_1, ENABLE);//配置DAC 通道1
  39.         DAC_Cmd(DAC_Channel_2, ENABLE);
  40.         DAC_DMACmd(DAC_Channel_1, ENABLE);//使能DAC的DMA请求
  41.         DAC_DMACmd(DAC_Channel_2, ENABLE);//使能DAC的DMA请求
  42. }

  43. /******************************************************************
  44. 函数名称:DAC_TIM2_Config()
  45. 函数功能:TIM2初始化
  46. 参数说明:
  47. 备    注:生成的正弦波周期=(arr+1)*(psc+1)/Tclk/Point_Num
  48. *******************************************************************/
  49. void DAC_TIM2_Config(u16 arr,u16 psc)
  50. {
  51.         TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
  52.         
  53.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能TIM2时钟,TIM2CLK 为84M
  54.         
  55.   TIM_TimeBaseStructure.TIM_Period = arr;//定时周期
  56.   TIM_TimeBaseStructure.TIM_Prescaler = psc;//预分频
  57.   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//时钟分频系数
  58.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
  59.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  60.   TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);//配置TIM2触发源
  61.   TIM_Cmd(TIM2, ENABLE);//使能TIM2
  62. }
  63. /******************************************************************
  64. 函数名称:DAC_TIM5_Config()
  65. 函数功能:TIM5初始化
  66. 参数说明:
  67. 备    注:生成的三角波周期=(arr+1)*(psc+1)/Tclk/Point_Num
  68. *******************************************************************/
  69. void DAC_TIM5_Config(u16 arr,u16 psc)
  70. {
  71.         TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;
  72.         
  73.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);//使能TIM5时钟,TIM5CLK 为84M
  74.         
  75.   TIM_TimeBaseStructure.TIM_Period = arr;//定时周期
  76.   TIM_TimeBaseStructure.TIM_Prescaler = psc;//预分频
  77.   TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;//时钟分频系数
  78.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
  79.   TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure);

  80.   TIM_SelectOutputTrigger(TIM5, TIM_TRGOSource_Update);//配置TIM5触发源
  81.   TIM_Cmd(TIM5, ENABLE);//使能TIM5
  82. }
  83. /******************************************************************
  84. 函数名称:DAC_DMA_Config()
  85. 函数功能:DMA初始化
  86. 参数说明:
  87. 备    注:DAC1使用DMA1,通道7,数据流5,DAC2使用DMA1,通道7,数据流6,
  88. 这是手册固定死的
  89. *******************************************************************/
  90. void DAC_DMA_Config(void)
  91. {        
  92.         DMA_InitTypeDef  DMA_InitStructure;
  93.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE);
  94.         //通道1DMA配置
  95.   DMA_InitStructure.DMA_Channel = DMA_Channel_7;  
  96.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(DAC_BASE+0x08);                //外设数据地址
  97.   DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&Sine12bit;                        //内存数据地址 Sine12bit
  98.   DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral;                                                                        //数据传输方向内存至外设
  99.   DMA_InitStructure.DMA_BufferSize = Point_Num;                                                                                                                //缓存大小为Point_Num字节        
  100.   DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;                                //外设数据地址固定        
  101.   DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;                                                                        //内存数据地址自增
  102.   DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;        //外设数据以字为单位
  103.   DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;                                        //内存数据以字为单位        
  104.   DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;                                                                                                        //循环模式
  105.   DMA_InitStructure.DMA_Priority = DMA_Priority_High;                                                                                        //高DMA通道优先级
  106.   DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  107.   DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
  108.   DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  109.   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  110.   DMA_Init(DMA1_Stream5, &DMA_InitStructure);
  111.   DMA_Cmd(DMA1_Stream5, ENABLE);//使能 DMA_Stream
  112.         //通道2DMA配置
  113.   DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(DAC_BASE+0x14);                //外设数据地址
  114.         DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)Tri12bit;                        //内存数据地址 Tri12bit
  115.         DMA_Init(DMA1_Stream6, &DMA_InitStructure);
  116.         DMA_Cmd(DMA1_Stream6, ENABLE);//使能 DMA_Stream
  117. }

  118. double TriangularVol(double x)
  119. {
  120.     float k=1/PI;
  121.     if(x<PI)
  122.         return k*x;
  123.     else
  124.         return (-k)*x+2;
  125. }

  126. /******************************************************************
  127. 函数名称:DAC_Mode_Init()
  128. 函数功能:完成DAC+TIM2+TIM5+DMA初始化并获取波形数据
  129. 参数说明:
  130. 备    注:生成的正弦波/三角波周期=(arr+1)*(psc+1)/Tclk*Point_Num
  131. *******************************************************************/
  132. void DAC_Mode_Init(void)
  133. {
  134.         uint32_t Idx = 0;  
  135.   u32 outdata=0;
  136.         DAC_Config();
  137.         DAC_TIM2_Config(TIM2_Init_Data);
  138.   DAC_TIM5_Config(TIM5_Init_Date);
  139.   /*******************获取正弦波数据***************/
  140.         for(Idx = 0; Idx < Point_Num; Idx++)
  141.         {
  142.                         outdata = (sin(2*PI*Idx/Point_Num)+1)*2047;
  143.                         Sine12bit[Idx]=outdata;
  144.         }
  145.   /*******************获取三角波数据***************/
  146.         for(Idx = 0; Idx < Point_Num; Idx++)
  147.         {
  148.                         outdata = (TriangularVol(2*PI*Idx/Point_Num))*4095;
  149.                         Tri12bit[Idx]=outdata;
  150.         }
  151.         DAC_DMA_Config();
  152. }
复制代码
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2023-3-21
在线时间
9 小时
发表于 2023-5-12 22:57:35 | 显示全部楼层
刘中1 发表于 2019-8-4 21:05
我也试了好久,在使能和通道值是这样配置的,然后两路DAC都能用了
        DAC_Cmd(DAC_Channel_1,ENABLE);  
        D ...

DAC_DualSoftwareTriggerCmd(ENABLE);是用软件触发,这里是用的外部定时器触发,不用是对的
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-24 14:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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