一、系统架构
本次实验主要的功能就是在F103开发板上,DAC通道1输出值,然后外接杜邦线值ADC的通道1上面去,通过打印到串口出去,看采样的电压值是否相等
注意点: 必须将杜邦线接收PA1和PA4,让PA4通道产生的模拟电压值能够被PA1捕获到,不然你代码写出玫瑰花来也没用。
二、原理讲解
网上关于输出寄存器或者是模式有很多种,官方手册给的也很详细很复杂
而在学习阶段我们也不会使用那么复杂的模型 所以我们这里一切从简,ADC和DAC都采用最简单的模式
但是无论是什么模式我们需要很明确的概念就是
ADC:将模拟量转化成为数字量
DAC:向数字量转化成为模拟量
模拟量和数字量具体的含义比较难以理解,我们可以简单的理解模拟量就是我们的电压值,
数字量就是存放在寄存器中的值,二者有对应的关系
三。环境配置
环境我是用cubex生成的
串口1使能,方便打印数据
ADC1 的通道1 查手册可以知道复用了PA4y引脚
DAC1 的通道1 查手册复用PA1
外接杜邦线才能将起作用,因为芯片内部是不相连 必须外接导线才可以将电压值导通
四、代码
这里我只列写出关键性主要的代码 通过串口打印 输出比较两个值
u16 adcx;
u16 dacval=0;
while(1)
{
dacval+=200;
HAL_DAC_SetValue(&DAC1_Handler,DAC_CHANNEL_1,DAC_ALIGN_12B_R,dacval);//设置DAC值
printf("\r\n为DAC通道1设置 : %d\r\n",dacval);
adcx=Get_Adc_Average(ADC_CHANNEL_1,20);//读取前面设置DAC的值
printf("\r\n从DAC通道1读取到的值是 : %d\r\n",adcx);
HAL_Delay(1000);
}
五、实验结果