STM32F103C8T6制作简易示波器
1设计需求
通过stm32f103c8t6实现一个简易示波器功能,该示波器可以检测0-3.6khz频率范围内的波形。
也可以输出波形,输出方波、三角波、正弦波。
2技术方案
通过stm32的ADC功能,采集输入信号,最后由oled屏进行显示。
采样频率通过定时器控制,定时器触发ADC采样,然后通过DMA搬运数据,从而达到最大效率。
通过测试,ADC功能正常,可以采集波形,但是DAC输出波形异常,无法输出波形,查阅资料,发现stm32f103c8t6是小容量的单片机,没有DAC功能,所以无法直接通过dac配置输出。
3代码实现
直接看demo
https://download.csdn.net/download/weixin_51248645/88707820
4stm32f103zet6示波器
没有DAC的示波器叫什么示波器,换平台,采用stm32f103zet6进行配置。
4.1ADC配置
ADC最大频率计算:
由于stm32f103外部时钟频率最大为14M,所以配置定时器触发时,也不能超出这个值。
ADC最大频率:ADCCLK=14MHz,采样时间=1.5周期。
则:TCONV = 1.5 + 12.5 = 14 周期 = 1μs,采样频率为1Mhz。
1Mhz ?真的是极限吗?
当然不是,有两个方法提升。
1.正规方法:采用4通道ADC,分别在1/4周期进行采样,通过拼接的方式,实现1*4=4M频率的采样。
2.瞎整方法:外部时钟频率最大14M,这不能突破吗?
这次先弄个1M的进行测试。
ADC采用6分频,12M的时钟。采样时间=1.5周期。频率为0.86Mhz。
通过定时器配置,系统时钟是72M,定时器触发时间应大于1/0.86Mhz,则
TIM2_PWM_Init(T-1,pre-1);
T*pre/72M>1/0.86M 取pre=1,得T>83.7。
取T=84,PWM的Pulse取12。