小弟初学者,问板上大侠。我在用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 |
回复:DAC问题求助,没信号输出
RE:DAC问题求助,没信号输出
配置为模拟通道在试试
回复:DAC问题求助,没信号输出
void GPIO_Configuration(void)
配置为模拟通道在试试
刚试了下,还是没效果。。。
RE:DAC问题求助,没信号输出
回复:DAC问题求助,没信号输出
你在程序运行时,看看DAC数据寄存器的值对不对,可能DMA配置有问题,word
DMA_PeripheralDataSize,DMA_MemoryDataSize配置成byte和half_word都试了一下,没有什么效果。
另外弱问,怎样在程序运行时,查看DAC数据寄存器的值呀?新手,谅解,谢谢,是串口输出,还是特殊的软件工具?
RE:DAC问题求助,没信号输出【悬赏问答】
RE:DAC问题求助,没信号输出【悬赏问答】
RE:DAC问题求助,没信号输出【悬赏问答】
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的值
}
RE:DAC问题求助,没信号输出【悬赏问答】
回复: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的值
}
你这个是三角波吧,三角波我试过,是对的
回复:DAC问题求助,没信号输出【悬赏问答】
肯定是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
回复:DAC问题求助,没信号输出【悬赏问答】
你是用DAC作正弦输出的么。是用于控制的吗?如果是,不妨试试用查正弦表的方法,简单,而且可靠些。
确实是做正弦输出,查正弦表就是这个方法吧
回复:DAC问题求助,没信号输出【悬赏问答】
很有可能是DMA配置项的问题,顺便看看DAC数据寄存器的值对不对。
求教您是怎样配置的,能否借鉴一下?非常感谢