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。

4.2DAC配置