你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
wujique 发布时间:2018-8-26 12:19
本帖最后由 huangxuejia-29212 于 2019-3-10 23:15 编辑 # o5 t0 k, i; R
) c+ _0 k" i1 ^! W& W
以前陆陆续续在论坛发了一些讨论分享。
" v& h+ E6 `8 l4 o0 H由于被拉创业,本来打算尽快完成的文档整理今天终于算做完,但还不完善。, V% M+ P7 v! q: l7 ^$ u6 T
思考再三,还是打包发布。  K! d+ ~( U) w& [# K1 N! r
同时建QQ讨论群:767214262, 欢迎大家加群讨论。众人拾柴火焰高。# h* _0 D, t( Q0 z
" k; G0 R  m; T! M' d) X
我们的目标:做一套能用的开源驱动代码。
7 }" |8 C$ b3 }+ V8 B& G! I: {  L
0 V$ E! x$ L+ s8 G2 l  F" l% U/*git hub 代码修改记录:& \! Z0 z- d9 I1 b* s. Y9 p
20190310        增加zbar_develop分支,基于407和OV2640,能解码,效果不理想,待优化
6 d' l; j& f( e: t/ W( g3 `201902278 I6 M8 |& f# x; b4 E! U
        增加电子纸IL91874驱动芯片驱动。
4 U/ W) X5 d' {2 E        待优化,电子纸刷新很慢,目前软件都是发送数据就更新了,当现实多行分开的内容时,这样的方案不理想。9 P, @& `' x1 P/ ?1 d9 _2 l
        后续要修改为:指定显示区域------发送数据到显存--------进行refresh操作,三步式。# A- |. B( Z) G7 W
*/7 F0 [! H; a, O: k; U

; \* M7 S% q1 b为了新来的朋友了解,重新说下过程。8 {* A. w! @3 k% i( J) J' B% n" _
缘由, Y  P0 q! G+ ?$ u/ _# l
多年工作,发现很累,经常重新发明轮子。而且很多代码架构不好。
6 H/ ^; t! K6 s扩展,移植都很难,有时候一点新需求,就要折腾很久。
; V7 J: y2 r0 t- ~+ z* j% y对于新人学习来说,也是一直要经历老人被坑过的坑。
* m# b$ M  k1 o6 y6 M4 U' L因此决定抛砖引玉,整理自己多年开发的思路,在github上开源了代码。) e8 f- W( Q; C' {
0 g) V1 O! U) ^7 E2 U% C' Y6 n
硬件设计  r) G# ]9 E2 p5 @8 F8 s
为了表现代码设计思路,需要硬件做配合。. S! R, }. [' S# F0 f* ~
" e. z+ r) T* T" h: V
例如:
/ x& K* d+ W6 ]- H- a$ |/ u1. OLED,可能接在硬件SPI上,也可能用IO模拟的SPI,也有可能是I2C接口。: o% R0 |, w) A3 e3 g" ?, m
2. 1个SPI上皆有多个设备,程序要如何编写驱动?
4 O$ L+ \( |  T! W- Q8 E5 g7 K3. 同一个SPI接口,当接上不同的设备,例如 OLED或RF24L01,程序要怎么做才能改动很小?
/ H) e1 r  F4 N4. 同一个SPI接口,用于接LCD,今天接OLED,明天换COG LCD,后天换TFT LCD,程序要怎么做,在换LCD时,改动容易?) H1 d1 s3 ]1 r1 i9 r' X7 y4 F

, H* ]/ L* r& y' Z: H找了一遍,没有找到能配合的硬件,只要自己设计了一款。
, ~6 @) n9 i" |# } 产品图.JPG
' z. s# ?7 d- D/ i% h* b' M如上图,小,接口设计精巧,硬件配置也是经过长期考虑精心选择的。
1 N9 ~2 |& ?$ z+ ?) e5 w6 @, [最主要是,能满足我对代码架构的需求。8 \% y' x! C7 |1 \9 p$ |
5 ~1 E0 s+ l# Z, _! v- q+ _
软件架构7 }! i8 q! {% z7 |3 S( z
软件架构是一个很复杂的事情,请看教程文档。
4 p8 o; j/ C6 N2 T9 D这里,我们只对下面一个框架说明9 O1 M* V3 {, o. ^5 N9 C3 `
LCD分层图.jpg   t* K7 c4 t# _& p) R, i. V: w
这个图示LCD的框架设计5 J1 |5 g- |6 s
1 SPI分两个概念,控制器和通道。控制器就是CLK、MISO、MOSI。) b+ s$ H9 I, U# t1 O  @+ e5 Z
通道,就是控制器加上片选。为什么这样设计?请看文档说明。
/ @( W- P, {/ J5 T7 N( w7 J: g! F2 对不同的LCD硬件接法抽象,得到一个硬件接口抽象层。
# y- Q6 \8 @  k+ }# w7 B6 l. j3 驱动层,是不同的LCD驱动芯片的代码。对于多有的驱动,全部符合一个统一的接口。
' I, Y# n8 g1 \/ y* R4经过上面这样设计,一个OLED LCD,原来接在I2C接口上,非常容易就可以将它改到SPI接口。
+ T% M3 @  }# B7 Q: R# `# j" n  K; @$ x6 q( n' ~9 Y
以前发过一个帖子,大家可以围观:https://www.stmcu.org.cn/module/forum/thread-615814-1-1.html
$ ]( _# U# H" c1 j9 f
+ Q4 }8 s1 O( U+ a% @  ^资料在压缩包中,欢迎下载,github路径在文档中有,需要代码的自己去取。. n' c, f! \  [* A
9 l7 K* i9 C7 u
未来
9 {4 J2 ~3 i1 s( B* x7 U1. 添加更多驱动。
' u. H5 t6 l0 S& A7 B2. 选更多组件进行分析,例如spifs、littlefs。! m* B: |6 ]: x: ~. r/ b
3. 尽量在下一个版本添加驱动统一管理模块。% b7 H2 B  p" }2 r# o& W

' s! T, r" }; {4 w3 Q一句话:让我们一起开阔眼界,避免重复发明轮子。% ?% y& p3 K) x( ~

2 x) K, x8 p" E3 K' @9 `
2 E0 P3 m* w; z' ~$ m 移植uboot命令行.pdf (476.46 KB, 下载次数: 89)

STM32F407开发板.part1.rar

下载

15 MB, 下载次数: 389

STM32F407开发板.part2.rar

下载

15 MB, 下载次数: 332

STM32F407开发板.part3.rar

下载

7.73 MB, 下载次数: 127

评分

参与人数 2 ST金币 +22 收起 理由
sblpp + 2 很给力!
g921002 + 20 很给力!

查看全部评分

赞 收藏 10 评论36 发布时间:2018-8-26 12:19

举报

36个回答
奏奏奏 回答时间:2018-8-27 05:42:43
我提一下我的想法:1、现在这个形势下还用标准库来写有点奇怪了。你的架构图与ST官方的HAL库的基本相似。
7 \5 m+ c$ t: G7 v1 E2、目的是想将驱动的共性部分合并,但是还不如自己重新写代码。我打个比方,比如说楼主提到过的SPI驱动的屏幕,我之前用过类似的串口的触摸屏,SPI的配置部分是通用的,这个可以用STM32CubeMX来配置,那么接下来问题来了,屏幕之间不同的驱动时序图要怎么合并?就算有几个楼主列出来的型号是可以通用的,如果用户开发用到是别的型号,而选用的型号不符合怎么办?; ?4 ?6 \! `: s. O1 `# p' b4 I
3、如果定位就是卖开发板,实用性上不如官方的探索板与评估板,这外设还要自己去外接呢。楼主是想要切哪一个细分市场的蛋糕自己要想清楚,即使说不走商业化,开源硬件也是要有自己的独特定位才能够被开发者持续关注并使用的。1 G/ `5 w0 u* n( t
wujique 回答时间:2019-3-3 11:00:43
g921002 发表于 2019-3-1 19:264 B; K* _' w7 [5 H9 c
很不錯的板子。個人想法野人獻曝一下。
& ?% Z" s4 \) Q8 y" m
. O9 U$ k+ z5 N如果是以開發版為目的,這個的確不適合。
0 H* V! q1 p# T
这没任何问题,是我疏忽了。
radio2radio 回答时间:2018-8-26 15:29:55
支持您。
pythonworld 回答时间:2018-8-26 19:37:37
支持支持!!大家都用起来才好!!
tjdee 回答时间:2018-8-26 21:27:39
参考一下周立功公司驱动模型
wujique 回答时间:2018-8-26 23:03:08
zhousun 发表于 2018-8-26 21:27
& n6 o  j, m( I6 D2 Q参考一下周立功公司驱动模型
, c" r5 O0 r6 {: c% J' u: w1 {# z
AMetal框架?
海迹天涯 回答时间:2018-8-27 09:40:30
支持支持!
勿忘心安110 回答时间:2018-8-27 17:16:12
支持楼主
tjdee 回答时间:2018-8-28 10:05:56
huangxuejia-292 发表于 2018-8-26 23:03- P7 K/ B  W3 _: k- A: b
AMetal框架?

* \% X4 m0 v3 X- c3 w3 c2 K对的,感觉不错
ssssss 回答时间:2018-8-28 10:51:45
zhousun 发表于 2018-8-28 10:05
  E" o2 u# z) s对的,感觉不错

% Y( w6 h- J, F可以的
wujique 回答时间:2018-8-28 22:12:16
zhousun 发表于 2018-8-28 10:05
1 ?6 _4 |* i! A9 k) @对的,感觉不错
% `6 J0 F' I( c/ J
没认真研究过,浏览过一次。
8 H" l8 z' \: ?) \周工好像在说接口规范化。
' C1 [) y$ a/ S. \- P% n" a我觉得这个做多了,有积累的公司,都会形成一套接口。5 R  G- Z3 W0 ^+ z0 V4 P
接口是底层和APP之间的分割。! T6 ^) ~( h; q' M0 m
我现在考虑更多的是,驱动要怎么搭。) X/ j& l! F, N$ X) {8 N) z

6 s5 A+ p0 M& g6 O1 o% \5 J" N! {5 W有空再看看周工的书。。
zero99 回答时间:2018-8-29 09:45:58
支持下!
robin_zhu 回答时间:2018-8-31 08:58:59
谢谢分享...
网络孤客 回答时间:2018-8-31 09:40:49
学习学习,板子不错。
1315150719@qq.c 回答时间:2018-9-14 10:38:12
感谢分享,下载学习一下
: ?  u+ ~/ S1 p( t1 Y# E( E9 t
123下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版