[程序源码]

屋脊雀《基于stm32F407嵌入式底层驱动开发实践 V1.0》 发布

[复制链接]
1681|4
手机看帖
扫描二维码
随时随地手机跟帖
9pin|  楼主 | 2018-8-26 12:31 | 显示全部楼层 |阅读模式
缘由
多年工作,发现很累,经常重新发明轮子。而且很多代码架构不好。
扩展,移植都很难,有时候一点新需求,就要折腾很久。
对于新人学习来说,也是一直要经历老人被坑过的坑。
因此决定抛砖引玉,整理自己多年开发的思路,在github上开源了代码。
github:https://github.com/wujique/stm32f407/tree/sw_arch

硬件设计
为了表现代码设计思路,需要硬件做配合。

例如:
1. OLED,可能接在硬件SPI上,也可能用IO模拟的SPI,也有可能是I2C接口。
2. 1个SPI上皆有多个设备,程序要如何编写驱动?
3. 同一个SPI接口,当接上不同的设备,例如 OLED或RF24L01,程序要怎么做才能改动很小?
4. 同一个SPI接口,用于接LCD,今天接OLED,明天换COG LCD,后天换TFT LCD,程序要怎么做,在换LCD时,改动容易?

找了一遍,没有找到能配合的硬件,只要自己设计了一款。
   115411rn0fhxz67779163v.jpg
如上图,小,接口设计精巧,硬件配置也是经过长期考虑精心选择的。
最主要是,能满足我对代码架构的需求。
软件架构
软件架构是一个很复杂的事情,请看教程文档。
这里,我们只对下面一个框架说明
115652nt4hhffyfhk2cfzi.jpg   
这个图示LCD的框架设计
1 SPI分两个概念,控制器和通道。控制器就是CLK、MISO、MOSI。
通道,就是控制器加上片选。为什么这样设计?请看文档说明。
2 对不同的LCD硬件接法抽象,得到一个硬件接口抽象层。
3 驱动层,是不同的LCD驱动芯片的代码。对于多有的驱动,全部符合一个统一的接口。
4经过上面这样设计,一个OLED LCD,原来接在I2C接口上,非常容易就可以将它改到SPI接口。

以前发过一个帖子,大家可以围观:http://www.stmcu.org/module/forum/thread-615814-1-1.html

资料在压缩包中,欢迎下载,github路径在文档中有,需要代码的自己去取。

未来
1. 添加更多驱动。
2. 选更多组件进行分析,例如spifs、littlefs。
3. 尽量在下一个版本添加驱动统一管理模块。

一句话:让我们一起开阔眼界,避免重复发明轮子

QQ讨论群:767214262, 欢迎大家加群讨论。众人拾柴火焰高。

我们的目标:做一套能用的开源驱动代码。
STM32F407开发板.part8.rar (2.73 MB)

相关帖子

西部传奇| | 2019-1-21 23:18 | 显示全部楼层
顶起来

使用特权

评论回复
9pin|  楼主 | 2019-2-19 17:17 | 显示全部楼层
来了方法 发表于 2019-2-1 15:46
开源项目大都兼容很多驱动。

惭愧,其实算不上很好的开源项目,只是把自己多年经验写成代码,给大家参考参考。

使用特权

评论回复
64xiaodian| | 2019-7-4 20:05 | 显示全部楼层
谢谢前辈的分享,菜鸟来过。

使用特权

评论回复
syt2012| | 2021-4-12 18:31 | 显示全部楼层

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

47

帖子

0

粉丝