939|0

170

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

上海航芯ACM32G103开发板学习笔记07(DAC输出) [复制链接]

 

==9:DAC输出==

9.1:DAC概述和主要特性

概述:

image-20240112145628935

主要特性:

image-20240112145646603

9.2:软件设计

首先查看数据手册,找出DAC输出功能引脚。

image-20240112145804442

image-20240112145832358

image-20240112145856934

软件设计思路:

1:配置DAC输出引脚

  1. void DAC_GPIO_Init(void)
  2. {
  3. __RCC_GPIOA_CLK_ENABLE();
  4. /* Initialization GPIO */
  5. /**DAC1 GPIO Configuration
  6. PA4 ------> DAC_OUT1
  7. PA5 ------> DAC_OUT2
  8. */
  9. GPIO_InitTypeDef GPIO_handle;
  10. GPIO_handle.Drive = GPIO_DRIVE_LEVEL3;
  11. GPIO_handle.Mode = GPIO_MODE_ANALOG;
  12. GPIO_handle.Pin = GPIO_PIN_4|GPIO_PIN_5;
  13. GPIO_handle.Pull = GPIO_NOPULL;
  14. GPIO_Init(GPIOA,&GPIO_handle);
  15. }

2:DAC时钟使能

  1. __RCC_DAC1_CLK_ENABLE();

3:DAC输出配置

  1. /******************************************************************************
  2. * <a href="https://bbs.eeworld.com.cn/home.php?mod=space&uid=159083" target="_blank">@brief</a> : DAC Output config.
  3. * @param : None.
  4. * @return: None
  5. ******************************************************************************/
  6. void DAC_Config_OutPut()
  7. {
  8. DAC_InitTypeDef sConfig={0};
  9. sConfig.DAC_Trigger = DAC_TRIGGER_T6_TRGO;
  10. sConfig.DAC_Trigger2 = DAC_TRIGGER_T8_TRGO;
  11. sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
  12. sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
  13. sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_EXTERNAL;
  14. sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
  15. DAC_Init(DAC,DAC_CHANNEL_1, &sConfig);
  16. DAC_Init(DAC,DAC_CHANNEL_2, &sConfig);
  17. DAC_Cmd(DAC, DAC_CHANNEL_1,ENABLE);
  18. DAC_Cmd(DAC, DAC_CHANNEL_2,ENABLE);
  19. }

4:配置DAC输出电压

  1. /******************************************************************************
  2. * @brief : DAC output voltage initialization.
  3. * @param : None.
  4. * @return: None
  5. ******************************************************************************/
  6. void DAC_Config_OutPut_Voltage()
  7. {
  8. DAC_InitTypeDef sConfig;
  9. sConfig.DAC_Trigger = DAC_TRIGGER_SOFTWARE;
  10. sConfig.DAC_Trigger2 = DAC_TRIGGER_SOFTWARE;
  11. sConfig.DAC_SampleAndHold = DAC_SAMPLEANDHOLD_DISABLE;
  12. sConfig.DAC_OutputBuffer = DAC_OUTPUTBUFFER_DISABLE;
  13. sConfig.DAC_ConnectOnChipPeripheral = DAC_CHIPCONNECT_EXTERNAL;
  14. sConfig.DAC_UserTrimming = DAC_TRIMMING_FACTORY;
  15. DAC_Init(DAC,DAC_CHANNEL_1, &sConfig);
  16. DAC_Init(DAC,DAC_CHANNEL_2, &sConfig);
  17. /* 自动校准,可根据需要开启/关闭 */
  18. SPL_DACEx_SelfCalibrate(DAC, &sConfig,DAC_CHANNEL_1);
  19. SPL_DACEx_SelfCalibrate(DAC, &sConfig,DAC_CHANNEL_2);
  20. Delay_Simple(500000);
  21. }

5:设置自定义电压值

  1. /******************************************************************************
  2. * @brief : DAC output voltage.
  3. * @param : voltage :output voltage value.
  4. * @return: None
  5. ******************************************************************************/
  6. void DAC_OutPutVoltage(float voltage)
  7. {
  8. if( voltage > 3.3)
  9. {
  10. return;
  11. }
  12. uint16_t data=((voltage / 3.3) * 4095);
  13. DAC_SetDualChannelData(DAC,DAC_ALIGN_12B_R,data,data);
  14. DAC_Cmd(DAC, DAC_CHANNEL_1,ENABLE);
  15. DAC_Cmd(DAC, DAC_CHANNEL_2,ENABLE);
  16. DAC_SoftwareTriggerCmd(DAC, DAC_CHANNEL_1,ENABLE);
  17. DAC_SoftwareTriggerCmd(DAC, DAC_CHANNEL_2,ENABLE);
  18. }

9.3:测试输出

编辑代码,设置PA4,PA5指定输出2V。

  1. void bsp_init(void)
  2. {
  3. RCC_ClocksTypeDef RCC_Clocks;
  4. #if (INS_ACCELERATE_ENABLE == 1)
  5. System_EnableIAccelerate();
  6. #endif
  7. #if (DATA_ACCELERATE_ENABLE == 1)
  8. System_EnableDAccelerate();
  9. #endif
  10. /* Set Interrupt Group Priority */
  11. NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);
  12. SystemClock_Config();
  13. SystemCoreClockUpdate();
  14. RCC_GetClocksFreq(&RCC_Clocks);
  15. SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);
  16. /*串口2初始化*/
  17. BSP_UART_Init(115200);
  18. #ifdef USE_BSP_DAC
  19. BSP_DAC_Init();
  20. DAC_OutPutVoltage(2.0);
  21. #endif
  22. DEBUG_LOG("bsp_init_ok");
  23. }

使用万用表来测试PA4和PA5的输出电压值。

PA4输出电压:

image-20240112150650194

PA5输出电压:

image-20240112150752438

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 15

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表