第二十二章 AT32F403A基于V2库 dac输出

目录

概述

硬件

DAC

软件

初始化    

初始化代码

测试

测试代码

测试结果

最后


概述

         本文主要是使用AT32F403A开发板,基于V2库实现dac输出电压的功能。

         串口工具使用的Atlink-ez自带的串口功能。

         工程建立、调试工具配置在前面章节有详细介绍。


     

硬件

         硬件方面使用的是参考官方AT32F437 SURF板子而设计的一个AT32F403A开发板,板子上的芯片是AT32F403AVGT7的型号,开发板上面还板载了一个atlink-ez的仿真器,atlink-ez除了可以在线仿真和下载之外还有一个串口的功能,硬件上是通过跳线帽接到了MCU的串口1,pa9/10上面。

        如下图是开发板pcb图,以及硬件资源。(左边上角的就是atlink-ez,用usb线接到pc即可):


         如下是实物图:

        本章是dac输出的功能,dac1的输出默认io是pa4,测试时示波器直接接到pa4的排针即可


DAC

         Dac即数模转换,和adc是相反的功能。常规下IO的拉低拉高就是0v和3.3v,dac可以产生0到参考电压之间的电压值。

         AT32F403A的数模转换器(DAC)采用 12 位数字输入,产生 0 至参考电压之间的模拟输出。数字部分可以配置为 8 位或者12 位模式,支持单/双 DAC 的左对齐或者右对齐,同时可以与 DMA 配合使用。两个 DAC1/DAC2 各有一个数模转换器,每个 DAC1/DAC2 可以独立进行数模转换,也可以双DAC同时触发进行转换。

         DAC1/2的通道只有这两个固定IO。

软件

初始化    

         本文使用DAC1来输出电压,也就是PA4,IO要设置为模拟输出模式,无上下拉。

         开启DAC的时钟,设置触发模式,这里为软件触发模式,使能触发,使能DAC即可。需要输出电压时,先设置电压值,然后调用软件触发函数即可输出对应的电压。

初始化代码

/*
*DAC1初始化
*PA4
*软件触发
*
*/

void m_dac_init(void)
{
	gpio_init_type gpio_init_struct = {0};
	crm_periph_clock_enable(CRM_DAC_PERIPH_CLOCK, TRUE);	//开启DAC时钟
	crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);	//开启gpioa时钟

	gpio_init_struct.gpio_pins = GPIO_PINS_4;		  	//PA4
	gpio_init_struct.gpio_mode = GPIO_MODE_ANALOG;	  	//模拟
	gpio_init_struct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL;		//输出
	gpio_init_struct.gpio_pull = GPIO_PULL_NONE;				//无上下拉
	gpio_init_struct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;	//
	gpio_init(GPIOA, &gpio_init_struct);

	dac_trigger_select(DAC1_SELECT, DAC_SOFTWARE_TRIGGER);		//设置软件触发模式
	dac_trigger_enable(DAC1_SELECT, TRUE);					//触发使能
	dac_output_buffer_enable(DAC1_SELECT, TRUE);		//使能 DAC 输出缓存

	dac_enable(DAC1_SELECT, TRUE);	// 使能DAC1
	
	dac_1_data_set(DAC1_12BIT_RIGHT,0);	//设置输出0v电压
	dac_software_trigger_generate(DAC1_SELECT);	//软件触发设置值
}

测试

测试代码

         先输出2v电压持续1ms,然后输出0v电压持续1ms,循环。

测试结果

         实际输出的电压和软件设置的输出电压一致。


最后

         有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值