【Follow me第二季第3期】EK_RA6M5拓展任务——波形发生器
[复制链接]
本帖最后由 MioChan 于 2024-12-12 21:30 编辑
扩展任务要求设计一个类似信号发生器功能的例程。可在示例程序上修改。通过命令或按键,设置DAC输出波形,可通过flash存储历史波形等信息。
在这个任务我一直是想着从零新建一个工程,配置定时器、USB串口实现按钮中断、多线程之类的,结果因为第一次接触这种板子没有什么经验,被卡住了很久。最后参考了坛友beyond_笑谈在帖子( https://bbs.eeworld.com.cn/thread-1301194-1-1.html)中实现方法,同样是直接基于示例程序进行修改,这样实现起来方便了很多。先在这里感谢一下笑谈做的工作,我在他代码的基础上继续实现了正弦波的生成,并可以自定义输出波形,即输入两个缩放因子对波形的幅度和周期进行改变,并修改了保存和读取波形的部分代码,以便可以保存自己自定义的波形及其加载。
这个程序相较于示例工程主要是以下两个地方做了变动:
下图是波形生成器的菜单部分,可以在USB串口中调整,其中wavetype,amplitude_scale,period_scale是三个全局变量,wavetype 取值为1、2、3定义了三种波形类型,amplitude_scale,period_scale取值为1-10内的int形,表示对波形的缩放因子,例如amplitude_scale=1表示幅度最大,2则缩小一半,以此类推。
下图是波形生成器的DAC生成波形的部分:
下面简单演示一下,板子上电默认输出锯齿波
我们输入1输出锯齿波,然后按n使用自定义参数,输入2、2即可得到幅度和周期缩放后的锯齿波
输入2,再按y,得到默认参数的方波
输入3,再按y,得到默认参数的为正弦波
下面是演示视频:
工程代码请见后续的汇总贴
|