xxw-370311 发表于 2017-12-12 19:27:13

stmf32f051 dac 无论怎么配置 pa4都没有输出

初始化后,每次写入2900的数据,示波器测量输出为0,代码如下:
        DAC_InitTypeDef dactype;
        GPIO_InitTypeDef gpioinit;
          /* GPIOA clock enable */              RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
          /* Configure PA.04 (DAC_OUT1) as analog */
          gpioinit.GPIO_Pin =GPIO_Pin_4;
          gpioinit.GPIO_Mode = GPIO_Mode_AN;
          gpioinit.GPIO_PuPd = GPIO_PuPd_NOPULL;
          GPIO_Init(GPIOA, &gpioinit);
       RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
        dactype.DAC_Trigger = DAC_Trigger_Software;
        dactype.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
        dactype.DAC_WaveGeneration = DAC_WaveGeneration_None;
        dactype.DAC_LFSRUnmask_TriangleAmplitude = DAC_LFSRUnmask_Bit0;
        DAC_Init(DAC_Channel_1, &dactype);
        DAC_Cmd(DAC_Channel_1, ENABLE);
上面是初始化dac部分,

        DAC_SetChannel1Data(DAC_Align_12b_R, 2900);
        DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
上面是写入部分

请问各位大神,代码有什么问题没有呢?


五哥1 发表于 2018-1-29 00:44:21

楼主可以用官方例程和你的程序对比的看下

黑皮男 发表于 2018-3-1 09:24:50

GPIOA的端口时钟没有使能

wudianjun2001 发表于 2018-3-1 09:25:09

还是网上找个现成的例程,测试通过后对比修改下比较直接,底层的东西大部分不需要花大量时间去弄

bargagebaobei 发表于 2018-3-1 09:26:21

pa4 你设置为上拉看看,外围电路上有没有负载啊,还有就是a口时钟我没看见使能的代码啊

zhjb1 发表于 2018-3-1 09:38:05

您设置PA5作为DAC输出试试。

wenyangzeng 发表于 2018-3-1 09:42:40

本帖最后由 wenyangzeng 于 2018-3-1 09:56 编辑

少了DAC触发源:
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
当然还要对对应的定时器进行配置。

wolfgang2015 发表于 2018-3-1 10:05:52

wenyangzeng 发表于 2018-3-1 09:42
少了DAC触发源:
DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
当然还要对对应的定时器进行配置 ...

“dactype.DAC_Trigger = DAC_Trigger_Software;”
有,他用的是软件触发源。

wolfgang2015 发表于 2018-3-1 10:09:25

一般来说
初始化后,每次写入2900的数据,示波器测量输出为0
1、换个口子试试,很有可能DAC被静电击穿,导致不能输出这个有案例的;
2、输出0,看电路是否对地短路。
3、初始化大程度是对dactype 结构的了解。看看相关配置参数;多半是这里的问题;

jcx0324 发表于 2018-3-1 10:23:35

ADC的输出能力很弱的,看看是否带负载太大,或者外接运放试试看
页: [1] 2
查看完整版本: stmf32f051 dac 无论怎么配置 pa4都没有输出