加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 推荐器件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

最近在看单片机....

2021/06/02
550
阅读需 4 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

最近在看单片机,需要用一个1块钱不到的51单片机,做一个简化版FFT程序。而且,这个单片机也不支持小数,也不支持乘法。

脑袋里真的有两个小人,在那吵:

一个说,别看了,和你专业又没关系,和领导说,就说你干不了

另一个说,再坚持坚持,万事开头难,撑过去了,又是一遍天。

对于单片机熟手来说,单片机太简单了;

对于算法熟手来说,FFT太简单了;

对于C语言高手来说,C语言太简单了;

可是对于我一个纯硬件人员,这三个真的是太难了。

啃了一个礼拜,终于用matlab把FFT算法给整出来了。虽然计算结果和matlab内置FFT算法一致,但是耗时比它长不少。

看matlab的help文件,顺藤摸瓜,发现一个网站,上面竟然整理了三十多年各个作者的FFT算法程序,还针对这些算法,分析了不同系统下,运行精度和速度。

找了上面运行速度最快的看了一下,发现自己实在是看不懂。就对自己说,算了算了,自己啥也不会,还是老老实实先从最基本的教科书开始吧。等运算速度确实达不到要求的时候,再研究这些。

所以就按照书上的基-2蝶形运算,在matlab上一级一级地算,做了个128点的FFT运算。

在matlab上验证完,想搬到单片机上时,傻眼了。

在matlab上用的是定点小数的运算,可是单片机不支持小数,只支持整数。

也就是说,我得存在单片机上一个数。这个数呢,我心里知道是个小数,但是单片机看着是个整数。就这点,就把我绕的够呛,到今天为止,还没绕明白。

先说说,我对这些有多不敏感吧。

我家老二老三,因为看上去很小只,所以我经常会抱着她们称体重。以前,在北京的时候,朋友送了个婴儿称,直接放上就行,不用我计算。

现在,因为搬家,需要精简东西,就把那个称留在北京了。现在称,需要大人先上去称一下净重,然后大人抱小孩上去称个总重,两者相减一下。

对我来说,纯靠脑袋记这两个数字都有困难,需要借助纸或者其他人。然后心算这俩数字的减法,我挑战过一次,就放弃了,改用手机上的计算器。

所以,单片机看是个整数,但是我得把它看成小数,还要在这种情况下,用移位相加方法来实现小数乘法,真的是挑战我的记忆力和逻辑能力啊。

如果你问我为啥我要这么虐自己呢,直接和领导说,不干自己专业外的事情就行了呗。

那是因为我有一颗上进的心哪!!!

还有,作为一名干了十年的硬件人员,真的是很羡慕做软件的人啊!动动键盘,就能改变世界!

参考文献:http://www.fftw.org/benchfft

推荐器件

更多器件
器件型号 数量 器件厂商 器件描述 数据手册 ECAD模型 风险等级 参考价格 更多信息
ATTINY85-20SUR 1 Atmel Corporation RISC Microcontroller, 8-Bit, FLASH, AVR RISC CPU, 20MHz, CMOS, PDSO8, 0.208 INCH, GREEN, EIAJ, PLASTIC, SOIC-8

ECAD模型

下载ECAD模型
$1.43 查看
ATXMEGA256A3U-AU 1 Atmel Corporation RISC Microcontroller, 16-Bit, FLASH, AVR RISC CPU, 32MHz, CMOS, PQFP64, 14 X 14 MM, 1 MM THICKNESS, 0.80 MM PITCH, GREEN, PLASTIC, MS-026AEB, TQFP-64

ECAD模型

下载ECAD模型
$6.75 查看
FT232RL 1 FTDI Chip Serial I/O Controller, CMOS, PDSO28, 5.30 X 10.20 MM, 0.65 MM PITCH, GREEN, SSOP-28

ECAD模型

下载ECAD模型
$10.08 查看

相关推荐

电子产业图谱