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

2019-07-14 18:33发布

初始化后,每次写入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);
上面是写入部分

请问各位大神,代码有什么问题没有呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
peternie
1楼-- · 2019-07-15 12:19
一般来说
初始化后,每次写入2900的数据,示波器测量输出为0
1、换个口子试试,很有可能DAC被静电击穿,导致不能输出这个有案例的;
2、输出0,看电路是否对地短路。
3、初始化大程度是对dactype 结构的了解。看看相关配置参数;多半是这里的问题;
cnibooji
2楼-- · 2019-07-15 17:19
ADC的输出能力很弱的,看看是否带负载太大,或者外接运放试试看
xieweibin
3楼-- · 2019-07-15 20:16
 精彩回答 2  元偷偷看……
zhouxk
4楼-- · 2019-07-15 23:00
本帖最后由 toofree 于 2018-3-1 10:40 编辑

刚看了STM32F0的固件库,DAC样例非常简单。只不过触发方式为 DAC_Trigger_None,初始化完成后,随时刷DAC_SetChannel1Data(DAC_Align_12b_R, ADCVal);,DAC立即输出。






总之,先跑个样例程序,排除管脚或其它硬件故障,然后再自己发挥。
cnm7
5楼-- · 2019-07-16 03:00
可能是硬件连接异常,输出0的话,再检查下配置是否正确,不行的话,再去查官方资料DAC部分,尝试样例检测,再来对比DAC_Init(DAC_Channel_1, &dactype);DAC_Cmd(DAC_Channel_1, ENABLE);
DAC_SetChannel1Data(DAC_Align_12b_R,修改了看看对比下);DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
april_yu
6楼-- · 2019-07-16 05:17
用HAL库的例程试试吧,标准库过时了

一周热门 更多>