RA MCU&立创EDA的训练营活动已经落下帷幕,其中有不少优秀的开源项目,让我们一起来看看小伙伴们一些优秀的作品吧 |
基于瑞萨MCU频谱灯 开源作者:LSJT395
简介: 这是一个基于瑞萨R7FA2L1AB2DFL单片机做的一个音乐频谱灯,屏幕用的是P4全彩单元板,喜欢玩点阵屏的朋友肯定会喜欢上这种“超大号点阵屏”。
硬件说明: 主控:R7FA2L1AB2DFL 音频输入:麦克风/耳机口 运放:NE5532DR 屏幕:P4全彩单元板(256mmx128mm,16扫) 串口:程序下载1 ADC0通道0:采集音频 ADC0通道1:采集环境亮度 按键:预留有四个按键,其中BOOT和RST下载程序用,KEY1和KEY2用来切换模式、颜色、亮度等 PCB上音频采集部分为了减小干扰没有铺铜 后期扩展:将增加光敏电阻用来自动调节亮度,增加DS18B20检测环境温度,增加DS3231时钟模块(可不加),以及纽扣电池,掉电时给时钟供电
软件说明: 屏幕驱动: 定时器0以100X16HZ的频率扫描屏幕,中断优先级最高(否则会出现屏幕闪烁),屏幕是16扫的,一次扫描2行,共32行分16次扫描完,定时器0产生一次更新中断在中断回调函数中只扫描一次,也就是只扫描2行,所以刷新整个屏幕需要产生16次中断,由此可知屏幕实际刷新率是100X16HZ/16=100HZ,这是很正常的刷新率了。还有另一种扫描方法如下;可以将定时器0更新中断就设为100HZ,然后再中断回调函数里面一次性扫描16次,这样也能做到100HZ刷新率,且更容易理解,但是这样的话就增加了在中断回调函数中的时间,实测在这款单片机上会影响到while(1)的循环,对于主频更高的单片机是影响很小的。
ADC采集: 定时器1用来触发ADC0的通道0采集音频,常见的音频采样频率都是44100HZ,人对10KHz以上的高频声音更加敏感,虽然这部分所携带的能量小,在屏幕上的幅度较小,不过没关系,专门预留了一个调整幅度的电位器,此电位器可以调剂音频信号的放大倍数,从而能调节频谱显示的幅度(实测有效),根据奈奎斯特定理,采集10KHz的信号,其采样频率不应低于20KHz,所以这里就将采样频率设为20KHz,定时器1用来触发ADC0通道0采用,采用结果通过DTC传输到指定内存(DTC功能与DMA类似) 注:这里ADC、TIM、DTC没有用ELC事件连接器连接,用ELC效果会更好
快速傅里叶变换 原本计划用256点采样,但是实测运算太慢,不得不采用128点才勉强能用(我怀疑是我e2 Studio配置错了,导致单片机运行速率低的离谱),fft运算用的是江科大自化协UP写的fft.c源码。
原理图:
效果图片:
工程详细内容及项目开源地址: https://oshwhub.com/lsjt395/ji-yu-rui-samcu-pin-pu-deng
更多优秀开源作品:
https://oshwhub.com/recommend/LC&RAMCU
|