校电赛信号发生器

校电赛题目:代码链接在文章底部

1.基本要求
  (1)具有产生正弦波、方波、三角波三种周期性波形的功能。
  (2)具有波形存储功能。
  (3)输出波形的频率范围为100Hz~20kHz;频率可调,频率步进间隔≤100Hz。
  (4)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。
  (5)具有显示输出波形的类型、频率(周期)和幅度的功能。
2.发挥部分
  (1)输出波形频率范围扩展至100Hz~200kHz。
  (2)用键盘或其他输入装置可以产生任意波形。
(3)增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于±3%(负载电阻变化范围:100Ω~∞)。
  (4)具有掉电存储功能,可存储掉电前用户编辑的波形和设置。
  (5)可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波输出)。

参考资料:

1.硬汉嵌入式论坛:http://www.armbbs.cn/forum.php
可以去论坛查找STM32信号发生器的资源
2.ADI官网:https://www.analog.com/cn/index.html
查找ADI公式的芯片手册
3.开发平台:正点原子STM32F407开发板
OSC2002虚拟示波器

动手做过的方案:

方案一:用STM32F407 DAC+DMA
当DAC传输的点数为50时,频率可以达到200KHz,但是频率高时波形整体向上漂移,失真严重
峰值为3.3V,需要自己再搭建放大电路。
方案二:用PCF8951(在杂货箱里意外发现的模块,不知道哪位学长玩过的)
IIC信息传输,50个点,速率最高100Hz
方案三:用ADI公司的芯片
我下单了AD9959PCB板,在闲鱼买了3片AD9959芯片(80一片),电路板测试和代码写完后,发现
AD9959这款芯片只能产生正弦波,AD9833可以产生3种波形,这就是做东西之前不认真看芯片手册的
问题,亏大了。不过AD9959这款芯片很强大,高频的波形非常好看。

注意事项

1.STM32可编程电压检测器(PVD)。
关于PVD,通俗一点来讲就是当你断电后,开发板上有电容存在,电压并不会立即变为零。设
定某阈值电压,当电压低于这个阈值时,进入中断,在中断里执行某些操作。
我一开始掉电存储方案就是用PVD做,在中断里进行保存信息,但是电容不给力,只能保存一位数据。
后来的程序就是每更改一次参数,就是保存一次。
2.存储器。
方案一:STM32F407内部FLASH。
方案二:24C02芯片
两个方案都可以,我最后用的24C02
3.输入方式。
我参考别人的方案,用4.3寸触摸屏做了一个简单的界面,搞的触摸按键。写逻辑时就难了。从使用和操作性上来说用蓝牙或者串口助手是比较简单的,自己编写一个简单的指令集,一串数据发送过去,单片机一解析,这个操作多简单。用按键的话还得判断第几位,哪个参数,数据少点还可以,多的话掉头发。
4.显示方式。
用0.96显示屏(4线,IIC)还是非常好的。我这有块正点原子探索者开发板和4.3寸电容触摸屏,想搞的花里胡哨一点,就用显示屏输出波形(就是画点),界面显示的波数一定,幅度随你的参数变化。
5.放大电路。
就用运放芯片加两个电位器简单搭建的。具体放大需求大家可以去比如TI之类的网站查找芯片。
6.特定波形暂时没想好处理方案,想好再修改。

校电赛信号发生器_第1张图片
校电赛信号发生器_第2张图片
校电赛信号发生器_第3张图片
所有代码亲测上传,代码备注写的很详细:
方案一波形生成代码链接:
https://download.csdn.net/download/qq_40723777/12021735
方案二波形生成代码链接:
https://download.csdn.net/download/qq_40723777/12021718
方案三波形生成代码链接:
https://download.csdn.net/download/qq_40723777/12021752
方案一某一版本整体代码(触摸屏,图形显示):
https://download.csdn.net/download/qq_40723777/12021847

你可能感兴趣的:(单片机爱好者)