网站首页 > 编程文章 正文
(本文摘自21ic论坛,作者:21ic网友 enderman1)
写在前面的话:
第一次参加论坛里的比赛,相对自己的能力进行一个检验,请大家多多关照~听说比赛截止时间是下月月底?本人决定慢慢来(虽然现在程序都写的差不多了),所以准备一天更新一次吧~(或许。。。)
本次设计采用硬件有
主控: STM32F410 主要原因是本人手头正好有个STM32F410 nucleo的官方板卡(自带ST_link)美滋滋~
示波器: 蹭实验室的~
三极管若干:可能考虑到放大产生的信号
其它:....
思路:
使用stm32 DAC功能产生各种信号 (0~3v)
先来一个板卡的靓图~~
关于这次设计我准备分为三大部分来实现:
第一部分:理论分析与方案构想
第二部分:基本功能实现与论证
第三部分:代码优化与功能扩展
额外部分:作品展示与总结+视频演示
【第一部分】
一、实现方案分析
1、大概分析:首先拿到这个题目,要求要用MCU产生各种波形(线性波形)。要了解一个道理:MCU现在采用的是stm32,它是一个离散(数字)的系统(类比计算机),若要让他产生一个模拟信号,由于单片机拥有自身的工作频率,因此每次产生的信号理想状态都是冲击函数δ(t-τ)(序列)与想要产生的波形f(t-τ)的乘积,如图所示:(忽略垃圾字...)
在实际情况下相当于对t时刻进行平顶抽样之后产生的那个值(也可以看作一个很窄门函数平移的结果),如图:
而目的是产生一个线性的模拟信号,因此当取样周期τ趋近于无穷小的时候,才可以达到理想状态,当然对于单片机来说(对于一个离散的数字系统而言)是不可能的,因此要尽量减少产生信号的周期;当然就算再减少,在示波器也可以看到阶梯状的信号~如图:
放大--
2、难点分析:这个题目的难点个人认为是产生高斯噪声,主要原因是噪声是随机的,一个离散的系统(计算机,单片机等)无法产生一个真正的随机数,因为srand()里放的种子一般是时间或是与时间相关的值,都是有规律可循的,因此很难产生一个真正的随机数。当然解决办法也是有的,我会在后面提到。但是我又审了一遍题突然又发现原来是周期高斯函数。。。。。。。波形是这样的:
当然,还有就是自定义信号,可能会比较难设计。。。
3、题目分析:产生正弦信号,三角波,锯齿波等等,都可以用公式来实现;信号叠加功能可以直接叠加两个产生信号的函数相加即可;总而言之,主要是实现它们的算法。
4、实现思路分析:配置一个固定频率的dac产生信号,也就是说门函数是固定的,这也带来一个弊端:产生的信号频率越高,越失真(说白了就是越容易变成阶梯状的函数),好处就是容易写~ 请看下图:
显而易见,频率大的信号在一个周期之内所遍历的梳状函数更少。。
二、硬件设计分析
设计框图:
1、说实话,这个题目涉及的硬件设计部分并不多,最多也就是用洞洞板或是画PCB电路图制作一个板卡的转接板,转接板上可以搞一些按键,和OLED显示转接口;按键来控制输出信号的参数,OLED来显示当前输出信号的参数。
2、我选择打板(听说现在打板很便宜??)我居然有个骚气的想法:这个转接板甚至连原理图都不用画,直接。。。
三、软件设计分析
说实话,快半年没有正儿八经的写32的程序了,于是我决定省点事儿,主要是跑思路。。。
软件设计用的keil 5 STM32CubeMX(自动生成初始化代码美滋滋)
总之今天就到这里了,其实今天已经吧功能写的差不多了;明天准备把今天写的代码完善一下。。。主要是晚上刚刚从实验室回来懒得拎示波器,所以也没法往下进行咯,今天先整理下思路,明天见~
更多内容,请点击 查看更多 阅读。
猜你喜欢
- 2024-09-11 STM32使用keil编译时出现结构体未定义错误原因
- 2024-09-11 STM32按键中断应用实例(stm32多个按键中断)
- 2024-09-11 如何安装KEIL5,从零起步学习单片机STM32系列
- 2024-09-11 用keil5进行STM32项目开发时,那些让人摸不着头脑的程序
- 2024-09-11 如何使用keil 5 编写 51单片机 工程
- 2024-09-11 如何使用STM32的片上调试接口进行软件调试和性能优化
- 2024-09-11 STM32 CubeMX生成的代码调试与优化技巧
- 2024-09-11 原来STM32单片机的开发如此的简单
- 2024-09-11 CubeMX与STM32的Keil开发基础(stm32cubeide keil)
- 2024-09-11 STM32硬件错误HardFault_Handler的处理方法
你 发表评论:
欢迎- 最近发表
-
- 数据不丢失 从Windows 11的DEV版降级到正式版
- Win11学院:在Windows11 25905预览版中如何启用Dev Drive
- DEVC++的卸载(devcon卸载驱动)
- win11 dev 开发版 升级攻略完整版
- 最新Windows11+Windows10系统各种版本永久激活密钥以及下载链接
- 想学Python,却还记不住语法?神仙书籍 python背记手册双手奉上
- 如何用Python语言开发大型服务器程序
- 30天Python 入门到精通(python零基础入门到精通)
- 入门扫盲:9本自学Python PDF书籍,让你避免踩坑,轻松变大神!
- 学好Python需要看的4本书推荐(学python好用的书)
- 标签列表
-
- spire.doc (59)
- system.data.oracleclient (61)
- 按键小精灵源码提取 (66)
- pyqt5designer教程 (65)
- 联想刷bios工具 (66)
- c#源码 (64)
- graphics.h头文件 (62)
- mysqldump下载 (66)
- sqljdbc4.jar下载 (56)
- libmp3lame (60)
- maven3.3.9 (63)
- 二调符号库 (57)
- 苹果ios字体下载 (56)
- git.exe下载 (68)
- diskgenius_winpe (72)
- pythoncrc16 (57)
- solidworks宏文件下载 (59)
- qt帮助文档中文版 (73)
- satacontroller (66)
- hgcad (64)
- bootimg.exe (69)
- android-gif-drawable (62)
- axure9元件库免费下载 (57)
- libmysqlclient.so.18 (58)
- springbootdemo (64)
本文暂时没有评论,来添加一个吧(●'◡'●)