最有设计感的STM32开发板

愿景:做一套能用的开源嵌入式驱动(非LINUX)
官网:www.wujique.com
github: https://github.com/wujique/stm32f407
淘宝:https://shop316863092.taobao.com/?spm=2013.1.1000126.2.3a8f4e6eb3rBdf
技术支持邮箱:code@wujique.com、github@wujique.com
资料下载:https://pan.baidu.com/s/12o0Vh4Tv4z_O8qh49JwLjg
QQ群:767214262

1
市面那么多开发板了,为什么还要重新做一款?

首先要说明的是,我们的目的不是做开发板。
我们的目的是做软件架构设计。

软件设计中,最需要考虑的,我认为就分层模块化。
如果直接让你分层模块化程序,可能很纠结,搞不清楚到底应该如何封装接口。
那么我们换一个思路,为什么要模块化?为什么要分层?
原因是,我们要解决复用问题。
例如,一个SPI接口,配合两条CS管脚,控制两个FLASH。
这样的情景,SPI接口就是复用。
复用,写程序的时候就需要将SPI的驱动做成一个接口清晰的模块。
配合实际应用环境,非常容易认识到对一个驱动进行模块化的必要性,
也很容易想到,应该如何实现模块化,模块化的驱动接口应该如何设计。

好了,市面的开发板都没有这样的硬件复用场景。
我们只好自己设计一块有硬件复用的开发板。

这是缘由。
开发板

2
如何设计?
首先,核心板底板的模式是必须的,这样可以只替换核心板,就可以玩很多芯片。
其次,外扩的接口参考树莓派,主要外扩:SPI,I2C,串口,IO。
电子模块按照外扩接口设计。
而且对外扩接口进行了专门设计。如图:

一个SPI接口的OLED模块,可以接在上面的硬件SPI上,也可以接到最下面的IO口中,用软件模拟SPI。
一个I2C接口,可以接在中间的I2C外扩接口上,也可以接到最下面的IO口中,用软件模拟I2C。

如此,我们就可以模拟很复杂的硬件环境:
OLED接在硬件SPI3上,这个SPI3同时接有两片FLASH。
还有一个OLED接在下面的IO上,用软件模拟SPI。
还有一个OLED接在I2C上,,,,,,

在这样的复用环境中,只有良好的驱动架构设计,写程序才会轻松:
一个OLED驱动,如何兼容SPI接口和I2C接口?
一个SPI驱动,如何兼容硬件SPI和IO模拟的SPI?

经过思考,最终的驱动分层如下图:

简单说这几句,很难说明白。
更多想法,请查看本网站资料。

发表评论

电子邮件地址不会被公开。 必填项已用*标注