查看: 2991|回复: 0
打印 上一主题 下一主题

记录我的 STM32 示波器的研发经历

[复制链接]
跳转到指定楼层
沙发
发表于 2016-4-7 21:59:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近几个月,我一直在研究 STM32 示波器用于满足自己简单的实验需求。期间的经历也让我更加深刻的体会到了产品研发的不易,现在将过程简单的记录下来。
整个过程目前分为 2 个阶段:STM32F4,最高 2.4M/s 采样率、三通道+一个外部触发;STM32F3,最高 13M/s 采样率、双通道。

STM32F407 Discovery 版
最开始用 STM32F407 Discovery 制作的原因,是为了调试 GPS 数据记录仪(但结果这个 GPS 还是没有调成功,总是找不到卫星),用于查看串口和 SPI 的信号。
简单写写代码,打开 ADC + DMA 即可获取采样数据,然后,用网上买的 SPI 接口的液晶屏就可以显示了。
这个期间,最大的体会是:要做出 A,要先做出 B,然后为了测试 A,需要再做出 C。
比如,ADC + DMA 要弄出来,先得把 SPI 液晶屏给驱动了,于是要先搞 SPI。这就是为了 A 做 B。
然后,要测试 ADC 的效果,需要信号源,于是又去搞 DAC 输出正弦波,或者搞 TIM 输出 PWM,你才知道 ADC 工作是否正常啊。这就是为了测试 A 而做出 C。
就这样,一通折腾以后,出来了第一个波形:


ADC + DMA 的开发过程中,我一开始最关注的是采样率指标。做数字示波器嘛,一开始这样想也很正常吧?
于是,很认真的计算时钟频率,采样间隔等数据:


然而,采样率上去以后,波形的稳定性这个要求也被提出来了:满屏波形乱滚,怎么看?
于是,又开始很认真的考虑触发方式的设计:要稳定显示 DAC 波形,最好是用 TIM 触发;而要稳定显示 SPI 信号波形,最好是用 EXIT 的下边沿触发:


继续研究下去,发现不对啊,人家的方波都是有过冲的(虽然不是什么好东西),我这个咋看不到呢?那还用问,过冲肯定是出了信号量程的哇,我 GND~VDD 的 ADC 怎么可能看到?!
不过这样可就玩大了,正负电源+运放啊!
哎,还说什么呢,上呗!
于是,开始做正负电源:


开始做运放:


可以看到,战线已经开始拉得比较长了。。。
不过,成果还是有的,终于看到像示波器的波形了:

上图中第三个通道(最下面那个)接的,是给时钟芯片 DS1302 的 Clock 波形,难以置信吧?!这样的波形能读出时间那才怪了呢。于是,按照这个波形的线索,给时钟芯片的电路找问题。结果原因不明,最后换了一个 IO 就好了。小示波器立功了。

最后加上键盘来控制各种参数,引入了 Keil 的 CMSIS—RTOS 操作系统,于是,又是一通设计来安排任务的时间片和互相之间的交互方式:

最后得到这样一个示波器,使用的时候要打开一摊东西,非常占地方啊:


================ 分割线 ================
越过这座山,又看到另一座山。

STM32F303 Discovery 版
然后,不知道那一天,无意间看到了 STM32F303 Discovery 这块板,一看 ADC 参数:单 ADC 9M/s 的采样率(6bit 分辨率,72M ADC 时钟的情况下)?!那我还折腾 STM32F4 干嘛啊,上 STM32F3 吧。
有了上一个版本的经验,借着 STM32F303VCT6 的高采样率 ADC,那这次还不来个大的啊?!(贪婪的心态)
于是,一开始这样就是这样的架构设计(4通道每通道也有9M采样率,STM32F4 三个通道交替也才 7.2M/s啊):


然后开始疯狂计算我能得到的最高采样率:


用 1M 的 PWM 一测,果然厉害,比 2.4M/s 采样的清楚多了!(ADC1+ADC2,8 bit 分辨率交替采样,大约 13M/s 的采样率)


可是高兴得太早,运放不给力了,LM324 过一个 1M 的方波,结果就是这个样子:

不过,这时已经把采样点之间用线给连接上了,屏幕上看起来就像是个波形的样子了。为了测试给点连线的算法,专门做了 Excel 的算法测试工具
看了看高增益带宽积的运放,AD8056,7 块钱一片,一个通道就要 2 片。。。

最后把双通道加上去(ADC1+ADC2、ADC3+ADC4),成了这个样子:

屏幕刷新率现在让人捉急,大概 10帧/秒。SPI 屏的时钟频率典型值是 8M,已经用尽了。后面要改进,只能上TFT控制模块了。所以,又搞了一块 STM32F429 Discovery 。。。

盘算一遍之后,我发现,示波器的面板可能要是这个样子:

然后把除了芯片、阻容以外的零件、线材物料做了一个计算(红色的文字是线的长度,以单根 0.15 米为基准):

总结下来,居然要 150 元。加上芯片和宽带运放,估计在 200 元以上,再加上外壳和加工、打板的费用,300 左右吧。
做产品真不容易,不算不知道。不过,对于我这样的业余兴趣爱好来说,300 元一台这样的示波器其实还可以接受了,相比之下,自己投入的那些业余时间,累死的那些脑细胞才是更加昂贵的。

可是,故事并没有结束,因为我今天又看到了这个货:

真漂亮啊!第一眼看到就喜欢上了,回头再看看自己的设计,好丑。。。
嗯,接下来,该怎么办?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表