缘由
多年工作,发现很累,经常重新发明轮子。而且很多代码架构不好。
扩展,移植都很难,有时候一点新需求,就要折腾很久。
对于新人学习来说,也是一直要经历老人被坑过的坑。
因此决定抛砖引玉,整理自己多年开发的思路,在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时,改动容易?
找了一遍,没有找到能配合的硬件,只要自己设计了一款。
如上图,小,接口设计精巧,硬件配置也是经过长期考虑精心选择的。
最主要是,能满足我对代码架构的需求。
软件架构
软件架构是一个很复杂的事情,请看教程文档。
这里,我们只对下面一个框架说明
这个图示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)
STM32F407开发板.part7.rar
(5 MB)
STM32F407开发板.part6.rar
(5 MB)
STM32F407开发板.part5.rar
(5 MB)
STM32F407开发板.part4.rar
(5 MB)
STM32F407开发板.part3.rar
(5 MB)
STM32F407开发板.part2.rar
(5 MB)
STM32F407开发板.part1.rar
(5 MB)
|