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

STM32F334配置双路DAC输出,DAC2硬件上监测不到输出

[复制链接]
mingshixu 提问时间:2019-1-22 21:02 /
本帖最后由 mingshixu 于 2019-1-23 20:17 编辑

各位老师,求助一个问题:
   最近在学习STM32F334,想实现双路DAC独立输出,根据DEMO改的代码调试过程中,DAC1能正常输出,DAC2寄存器上能看到数据,但硬件管脚上检测不到输出电平。代码如下:
  1. void Configure_DAC(void)
  2. {
  3.   /*## Configuration of GPIO used by DAC channels ############################*/
  4.    __IO uint32_t wait_loop_index = 0;
  5.   /* Enable GPIO Clock */
  6.   LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_GPIOA);  
  7.   /* Configure GPIO in analog mode to be used as DAC output */
  8.   LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_4, LL_GPIO_MODE_ANALOG);
  9.    /* Configure GPIO in analog mode to be used as DAC output */
  10.   LL_GPIO_SetPinMode(GPIOA, LL_GPIO_PIN_6, LL_GPIO_MODE_ANALOG);   
  11.   /*## Configuration of DAC ##################################################*/  
  12.   /* Enable DAC clock */
  13.   LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_DAC1);
  14.   LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_DAC2);  
  15.   /* Select trigger source */
  16.   LL_DAC_SetTriggerSource(DAC1, LL_DAC_CHANNEL_1, LL_DAC_TRIG_SOFTWARE);
  17.   LL_DAC_SetTriggerSource(DAC2, LL_DAC_CHANNEL_1, LL_DAC_TRIG_SOFTWARE);   
  18.   /* Set the data to be loaded in the data holding register */
  19.    LL_DAC_ConvertData12RightAligned(DAC1, LL_DAC_CHANNEL_1, 0x300);
  20.    LL_DAC_ConvertData12RightAligned(DAC2, LL_DAC_CHANNEL_1, 0x300);  
  21.   /* Enable interruption DAC channel1 underrun */
  22.   LL_DAC_EnableIT_DMAUDR1(DAC1);
  23.   LL_DAC_EnableIT_DMAUDR1(DAC2);
  24.   /* Enable DAC channel */
  25.   LL_DAC_Enable(DAC1, LL_DAC_CHANNEL_1);
  26.   LL_DAC_Enable(DAC2, LL_DAC_CHANNEL_1);
  27.   /* Delay for DAC channel voltage settling time from DAC channel startup.    */
  28.   wait_loop_index = ((LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US * (SystemCoreClock / (100000 * 2))) / 10);
  29.   while(wait_loop_index != 0)
  30.   {
  31.     wait_loop_index--;
  32.   }
  33.   LL_DAC_EnableTrigger(DAC1, LL_DAC_CHANNEL_1);
  34.   LL_DAC_EnableTrigger(DAC2, LL_DAC_CHANNEL_1);
  35. }
复制代码

微信图片_20190122210014.jpg 微信图片_20190122210004.jpg

调试时观测两路DAC的寄存器,数值都相同,但DAC2管脚上始终没有输出电平,请教各位老师,这个问题怎么查?


仔细阅读了数据手册,发现DAC2与DAC1不同的一点是:DAC2在输出端有一个switch需要配置,配置为switch_enable就可以了。

收藏 评论1 发布时间:2019-1-22 21:02

举报

1个回答
Kevin_G 回答时间:2019-1-24 10:13:07
DAC2可以不输出到引脚。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版