你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

DAC问题求助,没信号输出【悬赏问答】

[复制链接]
bkc 提问时间:2012-7-5 10:36 /
小弟初学者,问板上大侠。我在用DAC做信号输出,三角波可以正常输出,现在在用DMA做正弦信号输出。网上找的一份例程,几经修改,才经过编译没有错误,但就是示波器检测不到信号。哪位好心人帮着看下呗。

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_lib.h"
#include


/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
#define DAC1_DHR8R1_Address      0x40007408

/* Init Structure definition */
DAC_InitTypeDef            DAC_InitStructure;
DMA_InitTypeDef            DMA_InitStructure;
TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;

/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/
ErrorStatus HSEStartUpStatus;
u16 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};

u32 DualSine12bit[32];
u8 Idx = 0;

/* Private function prototypes -----------------------------------------------*/
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);

/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : main
* Description    : Main program.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
int main(void)
{
#ifdef DEBUG
  debug();
#endif
   /* GPIO configuration */
  GPIO_Configuration();

  /* System Clocks Configuration */
  RCC_Configuration();   


  /* NVIC Configuration */
  NVIC_Configuration();

  /* TIM2 Configuration */
  /* Time base configuration */
  TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); 
  TIM_TimeBaseStructure.TIM_Period = 0x19;          
  TIM_TimeBaseStructure.TIM_Prescaler = 0x00;       
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  /* TIM8 TRGO selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Update);

  /* DAC channel1 Configuration */
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);

  /* Fill Sine32bit table */
  for (Idx= 0; Idx
收藏 评论18 发布时间:2012-7-5 10:36

举报

18个回答
bkc 回答时间:2012-7-5 10:39:26

回复:DAC问题求助,没信号输出

开发板,STM32F107VCT6
liyonghong_bj 回答时间:2012-7-5 13:48:40

RE:DAC问题求助,没信号输出

void GPIO_Configuration(void)
配置为模拟通道在试试
bkc 回答时间:2012-7-5 14:27:05

回复:DAC问题求助,没信号输出

回复第 3 楼 于2012-07-05 13:48:40发表:
void GPIO_Configuration(void)
配置为模拟通道在试试 

刚试了下,还是没效果。。。
liyonghong_bj 回答时间:2012-7-5 14:32:32

RE:DAC问题求助,没信号输出

你在程序运行时,看看DAC数据寄存器的值对不对,可能DMA配置有问题,word
bkc 回答时间:2012-7-5 15:36:11

回复:DAC问题求助,没信号输出

回复第 5 楼 于2012-07-05 14:32:32发表:
你在程序运行时,看看DAC数据寄存器的值对不对,可能DMA配置有问题,word
DMA_PeripheralDataSize,DMA_MemoryDataSize配置成byte和half_word都试了一下,没有什么效果。
另外弱问,怎样在程序运行时,查看DAC数据寄存器的值呀?新手,谅解,谢谢,是串口输出,还是特殊的软件工具?
 
yjwpm 回答时间:2012-7-12 15:32:08

RE:DAC问题求助,没信号输出【悬赏问答】

你仔细检查一下你的DMA配置项,看看是不是哪里没有设置对,看一下地址引用的地方是不是有问题。
航天航海 回答时间:2012-7-12 15:42:05

RE:DAC问题求助,没信号输出【悬赏问答】

很有可能是DMA配置项的问题,顺便看看DAC数据寄存器的值对不对。
xiaodc88 回答时间:2012-7-12 19:10:16

RE:DAC问题求助,没信号输出【悬赏问答】

肯定是DMA设置不对,仔细查查。我试过可以哈
cx032302 回答时间:2012-7-13 09:49:07

RE:DAC问题求助,没信号输出【悬赏问答】

试下这段代码
void DAC_Configuration(void)
{
        
       DAC_InitTypeDef DAC_InitStruct;
        GPIO_InitTypeDef GPIO_InitStructure;
        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        
        /* Configure DAC channe1 outputs pins */
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        DAC_DeInit();
        DAC_Cmd(DAC_Channel_1,ENABLE); //
    //DAC_Cmd(DAC_Channel_2, ENABLE);
        DAC_StructInit(&DAC_InitStruct);//将DAC_Struct的值设为默认
        DAC_InitStruct.DAC_Trigger=DAC_Trigger_Software;//由软件触发
        DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;//关闭波形生成
        DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;
        DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Enable;//使能DAC通道缓存   
        DAC_Init(DAC_Channel_1,&DAC_InitStruct);
    /* Enable DAC Channel1 */
        DAC_Cmd(DAC_Channel_1, ENABLE);
        DAC_SetChannel1Data(DAC_Align_12b_R,0x000);//12位右对齐,
        DAC_DualSoftwareTriggerCmd(ENABLE);//使能软件触发,更新DAC的值
}
starcool 回答时间:2012-7-13 11:57:09

RE:DAC问题求助,没信号输出【悬赏问答】

你是用DAC作正弦输出的么。是用于控制的吗?如果是,不妨试试用查正弦表的方法,简单,而且可靠些。
bkc 回答时间:2012-7-14 08:11:42

回复:DAC问题求助,没信号输出【悬赏问答】

回复第 10 楼 于2012-07-13 09:49:07发表:
试下这段代码
void DAC_Configuration(void)
{

DAC_InitTypeDef DAC_InitStruct;
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

/* Configure DAC channe1 outputs pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;   
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DAC_DeInit();
DAC_Cmd(DAC_Channel_1,ENABLE); //
//DAC_Cmd(DAC_Channel_2, ENABLE);
DAC_StructInit(&DAC_InitStruct);//将DAC_Struct的值设为默认
DAC_InitStruct.DAC_Trigger=DAC_Trigger_Software;//由软件触发
DAC_InitStruct.DAC_WaveGeneration=DAC_WaveGeneration_None;//关闭波形生成
DAC_InitStruct.DAC_LFSRUnmask_TriangleAmplitude=DAC_TriangleAmplitude_4095;
DAC_InitStruct.DAC_OutputBuffer=DAC_OutputBuffer_Enable;//使能DAC通道缓存   
DAC_Init(DAC_Channel_1,&DAC_InitStruct);
/* Enable DAC Channel1 */
DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,0x000);//12位右对齐,
DAC_DualSoftwareTriggerCmd(ENABLE);//使能软件触发,更新DAC的值
}
 

你这个是三角波吧,三角波我试过,是对的
bkc 回答时间:2012-7-14 08:15:30

回复:DAC问题求助,没信号输出【悬赏问答】

回复第 9 楼 于2012-07-12 19:10:16发表:
肯定是DMA设置不对,仔细查查。我试过可以哈 

u16 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};

u32 DualSine12bit[32];
u8 Idx = 0;

for (Idx= 0; Idx
bkc 回答时间:2012-7-14 08:16:53

回复:DAC问题求助,没信号输出【悬赏问答】

回复第 11 楼 于2012-07-13 11:57:09发表:
你是用DAC作正弦输出的么。是用于控制的吗?如果是,不妨试试用查正弦表的方法,简单,而且可靠些。 

确实是做正弦输出,查正弦表就是这个方法吧
bkc 回答时间:2012-7-14 08:17:51

回复:DAC问题求助,没信号输出【悬赏问答】

回复第 8 楼 于2012-07-12 15:42:05发表:
很有可能是DMA配置项的问题,顺便看看DAC数据寄存器的值对不对。 

求教您是怎样配置的,能否借鉴一下?非常感谢
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版