矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 2284|回复: 25

最近玩的STM32

[复制链接]
     
发表于 2024-3-2 19:44:47 | 显示全部楼层 |阅读模式
本帖最后由 iffi123 于 2024-3-2 21:28 编辑

板子是去年打的,做了一半就搁置了

前段时间重新拾起来,最近有空时就写些代码,完善功能或者优化结构,还挺顺利

就是一个普通的播放器,我不是追求什么hifi,只求能正常发声并控制,主要目的是学习,音质确实很好,这几天下班回家就开起来听,自己做的听起来感觉有点不一样。

最早用的电阻触摸TN屏,调通后感觉比较不好用,比如需要校准,然后买了一块同大小的IPS电容屏,相比之下,比之前TN好太多,色彩扎实可视角度大,当初不了解看便宜就买了TN屏真是坑
IMG_20240224_112849.jpg

不得不说,电容触摸真的好太多了

不过巧的是,最近买的IPS屏,排针接口和之前的TN一样,连信号线的顺序都一样(不同生产厂家),太好了,我直接插上就可以,不用重新打板
IMG_20240224_112918.jpg

再回到板子上,电路上,用si5351生成STM32需要的时钟和DAC的时钟,输出用了一片音频接口芯片,可驱动耳机和喇叭,也支持线路输入,话筒输入
未标题-1.jpg

再说说软件,所有的底层驱动都是自己写的,没有参考任何现成代码,保持程序的一致性

电容触摸是走I2C,所以比较简单,不过,只要触摸没释放,就会一直产生中断,需要软件加以处理,以免出错; si5351设置也是走I2C, 官方有个工具可以算参数

液晶屏走SPI,按照手册的时序和指令操作,就没什么说的,不过这2块屏,虽然都是ILI9341,不过好像分别是9341和9341V, 初始化序列不同,我直接换上新屏,能显示,颜色全乱不正确,重新用厂家给的序列,就正常,

稍麻烦的是TF驱动,因为不想用别人的代码,所以我下载了一个SD3.0规范原文(除了H7系列之外好像支持2.0),重点研究识别过程(card identifilication),发现网上的信息有很多不正确,1.1和2.0操作混淆,规范写的最准确,严格按其流程操作就可以,
屏幕截图 2024-03-02 203822.png

因为SDIO读写数据需要操作DMA, 所以稍微麻烦点,中间碰到一个乌龙,当初在1位模式调试通过,单块多块读写都成功,但是4位模式始终不成功,后来接示波器发现TF插座和CPU的SDIO引脚存在虚焊,汗,居然还有这种常识错误 浪费了我多少时间,一直怀疑软件写的有误,重焊后一次成功, 4位模式+48MHz时钟最高支持到24MB/s读写,可以说一般的应用绰绰有余

然后实验了FFT, 作为音乐的频谱显示,我设计了3种风格的谱线,一种是原始的柱状显示,还有平滑柱状,最后是包络空心风格(这好像比较流行的),如图,不过UI界面还没优化,简单示意一下
IMG_20240302_184612.jpg

并且实践了状态机的程序结构,用起来优点多多,之前就听说,这次得以一试

最后一个麻烦点的是FAT32的支持,我也坚持自己写驱动,这个还没全部完成,目前可以顺利读取卡里的音乐文件播放,参考FAT32的原理,只要根据簇号定位存放的扇区,并在FAT表查找下一个簇号,链式结构一个个串起来,实现起来并不复杂
未标题-1.jpg

一个板子可以学习不少东西,还是挺值得

视频链接





评分

4

查看全部评分

     
 楼主| 发表于 2024-3-2 20:43:08 | 显示全部楼层
本帖最后由 iffi123 于 2024-3-2 20:46 编辑
bis 发表于 2024-3-2 20:39
玩儿底层的纯属神志不清,peripheral register太多太复杂,学了做个项目完了就完了,没有后续建设性经验。


我现在写的程序,以后都可以用到的,每个功能一个模块,下次拿出来简单改改端口或配置之类就可以

比如LCD驱动,其实不是这次写的,是玩上一块板子写的,因为主控型号一样,这次拿出来改一下SPI设置就可以用,如果下次板子还有TF卡,一样可以用到这次的代码
回复 支持 1 反对 0

使用道具 举报

     
发表于 2024-3-2 19:52:45 | 显示全部楼层
现在扎实学东西的人太少了,都挣快钱去了。
我最近因工作需要,又开始学习Excel。整天头晕脑胀的。年龄不饶人了

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

     
发表于 2024-3-2 19:58:31 | 显示全部楼层
干得漂亮~~
强烈邀请你使用我的编辑器来开发,帮我测试/提建议。能脚踏实地干事的人,提出的建议会更有实用价值
https://www.ed-x.cn/manual.html
回复 支持 反对

使用道具 举报

     
发表于 2024-3-2 20:34:05 | 显示全部楼层
玩底层,学到的都是妥妥的干货!
回复 支持 反对

使用道具 举报

     
发表于 2024-3-2 20:39:07 | 显示全部楼层
玩儿底层的纯属神志不清,peripheral register太多太复杂,学了做个项目完了就完了,没有后续建设性经验。
回复 支持 反对

使用道具 举报

     
发表于 2024-3-2 21:13:53 来自手机 | 显示全部楼层
音频数据用的是wav/raw,还是上mp3软解码了?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2024-3-2 21:15:25 | 显示全部楼层
t3486784401 发表于 2024-3-2 21:13
音频数据用的是wav/raw,还是上mp3软解码了?

目前是wav, 因为最简单,没问题了以后才再试mp3
回复 支持 反对

使用道具 举报

     
发表于 2024-3-2 21:43:28 来自手机 | 显示全部楼层
iffi123 发表于 2024-3-2 21:15
目前是wav, 因为最简单,没问题了以后才再试mp3

嗯的确是好思路。

mp3单单解码就够折腾一阵子了
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:42:23 | 显示全部楼层
板子用什么软件画的?
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:42:39 | 显示全部楼层
t3486784401 发表于 2024-3-2 21:43
嗯的确是好思路。

mp3单单解码就够折腾一阵子了

解码算法么?
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:43:17 | 显示全部楼层
bis 发表于 2024-3-2 20:39
玩儿底层的纯属神志不清,peripheral register太多太复杂,学了做个项目完了就完了,没有后续建设性经验。

怎么才能有后续建设性经验?
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:47:38 | 显示全部楼层
李默 发表于 2024-3-3 00:43
怎么才能有后续建设性经验?

软硬件分割呗。比如软件说置1,给中间代码发,然后中间代码给硬件代码发。

STM32的库,把中间代码给硬件做好了,你只要写纯软到中间的代码就行。

然而蠢货们偏要自己写中间代码到寄存器,我是无法理解这种行为的。
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:54:47 | 显示全部楼层
bis 发表于 2024-3-3 00:47
软硬件分割呗。比如软件说置1,给中间代码发,然后中间代码给硬件代码发。

STM32的库,把中间代码给硬 ...


某些算法在STM32内部已经用硬件实现,可以直接调用?

不要自己用寄存器重新实现算法?
回复 支持 反对

使用道具 举报

     
发表于 2024-3-3 00:56:55 | 显示全部楼层
李默 发表于 2024-3-3 00:54
某些算法在STM32内部已经用硬件实现,可以直接调用?

不要自己用寄存器重新实现算法?

库已经把硬件操作封装好了。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2024-5-9 06:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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