这是一个卑微电子信息学员的开始
哦 现在是通信
4月5日工作记录
这是学习stm32的第n天
卑微通信学员开始了stm32的学习过程。
从‘0’开始完成一个阻抗分析仪
怎么说呢,这种东西会者不难
不会嘛,就像我绝望了好久,别说了
如何理解阻抗分析仪的原理
我决定另起一篇写 有点难度(链接还在我脑子里)。
后面的是各种操作,反正你一步步做就是对的。
有问题不懂看下面这篇博客。
给我划重点!!
这里先说明CUBEMAX的操作,这样操作的好处和原因解释在后面。
CUBEMAX操作
1配置时钟和SW
2ADC配置
ADC1开启IN12,独立输入,同时IN12的引脚会作为OPAMP的输出,点击对应的引脚就可以设置。
3DAC配置
DAC1作为输入信号源,timer15触发,采样频率1M。开启DMA循环模式,DMA中断优先等级中级。
DAC3向OPAMP正输入提供VCC/2的电压。软件触发,开启DMA循环模式,DMA中断优先等级低。
4OPAMP配置
独立工作模式并用DAC3channel2的输出作为正输入,与前面对应。别的不用做多的设置。
5GPIO配置(我将数据放到显示屏上进行显示)
随便配置两个引脚就完事。
关于ADC的相关配置
重点就在于IN12是一个复用引脚(少引出一根导线),这样操作可以提升阻抗分析仪的精准性。
关于DAC的相关配置
重点在于DAC3是一个内部的输出,选用out2作为OPAMP的正输入。这样直接可以少引出一个引脚,同时做到了最短距离连接和稳定性。
关于OPAMP的相关配置
重点在于OPAMP使用独立工作模式并用DAC3channel2作为正输入,与前面提到的相对应。
关于显示屏的相关配置
去看这篇博客
https://blog.csdn.net/mohaoyuan/article/details/115269883
写过的东西绝不做第二遍
将所有配置串联起来
好了,现在准备过程都完成了,要开始的就是纯代码的操作了。
完成DAC的初始化
对DAC1out1的初始化:
//DAC1 ch1 start&&wave
HAL_DAC_Start(&hdac1, DAC_CHANNEL_1);
Coswave_Maker(ffv,POINT_NUMBER,2);
HAL_DAC_Start_DMA(&hdac1, DAC_CHANNEL_1,(uint32_t *)coswave,POINT_NUMBER,DAC_ALIGN_12B_R);
其中Coswave_Maker是我的自制函数,生成对应点数和幅度的余弦波,然后就按部就班。
对DAC3out2的初始化:
//DAC3 ch2 start
HAL_DAC_SetValue(&hdac3, DAC_CHANNEL_2, DAC_ALIGN_12B_R, 2048);
HAL_DAC_Start(&hdac3, DAC_CHANNEL_2);
就输出VCC/2就可以了。
完成OPAMP的初始化
//OPAMP3 start
HAL_OPAMP_Start(&hopamp3);
HAL_OPAMP_SelfCalibrate(&hopamp3);
最后一句话是对OPAMP的自校准
完成ADC的初始化
//ADC1 start
HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);
HAL_Delay(100);
第二句是ADC的自校准。第三局给它时间等待校准完成
完成TIMER的初始化
//timer 15 start
if (HAL_TIM_Base_Start(&htim15) != HAL_OK)
{
/* timer start error */
Error_Handler();
}
完成LCD的初始化
//LCD start
OLED_Init();
OLED_Clear();
// OLED_ShowString(0,0,"range",8);
// OLED_ShowString(0,2,"phase",8);
OLED_ShowString(0,0,"Rc",8);
OLED_ShowString(0,2,"Cc",8);
OLED_ShowString(0,4,"Rb",8);
OLED_ShowString(0,6,"Cb",8);
到这里初始化和最开始的配置就完成了,感觉写了很多了,再另起一篇博客继续。
本文仅供学习使用,禁止一切转载或调用,最终解释权由作者本人享有。