|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的资源配置与调度相对简单,根据详细的官方指导,以及开发设计参考(各类开发板)步骤即可;% p+ E/ C& J( W% p, U& O$ O
一、单片机内核
1 c" S w* \8 b6 V/ r/ P*不同的内核有不同的性能/功耗表现,按需选择;. V. D! X5 n& |
*内核即代表某系列的单片机;
! a6 n2 H w# ^; q b" Y6 R6 d1、简单基础单片机内核: 51、STM8、AVR、PIC、S08、430;
. M0 }% s: P7 ~' n5 L2、ARM Cortex系列:Cortex-M0内核是低功耗的内核;( d& A* x+ f" ^0 \$ c6 _0 G
3、ARM全系列详解找arm官网。; B9 @, s9 F }+ I
4、两种逻辑电路集成器件:
" C; A- O& V* s z a、FPGA:基于门编程(altera、xilinux);类似:SDAM 掉电不保存;! B& V5 Z) N+ l# J
b、cpld:基于块编程;类似:EEPRM FLASH 掉电保存; . f G+ [; C+ x! E& |, M; |
3 A. P" d+ d$ P" d二、单片机选型0 o; I, [8 o" ?7 O
*市面的产品基本都是围绕这几款单片机:51(低端)、ST(中端)、ARM(高端);
7 G, m6 p. S7 @7 }! _1、单片机的性能;' G% [9 e+ Q) {) s
2、单片机的自身资源是否满足项目需求,长远考虑后续的更新迭代(封装、功能)、系统升级和维护难度;
z6 D7 \! j k! L4 b5 ? a、内存是否足够(储存常量数组、密码等数据);
) I: z! Q# Y5 ]- z b、I/O的数量充足;
9 J4 j: ]9 q, n6 R( d j c、外设资源(RTC、IIC(硬件、模拟)、SPI、UART);1 j6 G8 n4 d. t) d
3、开发周期:熟悉该类型单片机的硬件与软件,可用高级语言编写和调试;
# G4 C$ ?; n# b& d4、单片机的价格、货源、体积、封装;
/ f) M. J$ d% X- h+ m- r- _# U 5 G) y7 A) p. Z9 G( Y
/ A+ r) D- u. E) E# f
三、单片机的资源配置要点
! w3 ]( J& [; k' v/ E6 @要点总结:
* v" Q8 } k# J, X5 f. b. h*单片虽然种类很多,但大同小异,掌握了产品的开发流程以及基本资源的配置方法,可以在任意平台上游刃有余;
' k3 a1 n$ E5 ?0 b1 Y" N! A. Q1、涉及到多数据线、地址线的应用,尽量选择连续IO资源,这样效率会高点;8 W. l I% m# L! v: y( T
2、能够使用硬件资源的尽量使用硬件资源,提高工作效率;( c0 j( m- e0 s. f3 i
3、共用中断服务函数;
8 Q/ T' U7 j' ?& N4、优化等级可以提高单片机运行速度?; t1 ~ E R6 {/ P7 Y
5、VCAP引脚为了保证内部主调压器的电压稳定;
" H$ h) I% C! G: z5 B/ r# f6、时钟的重要性-保证信号的同步进行(在信号上升沿或下降沿采样);
) t! V8 f. K+ H/ [7、mVpp 噪声波形幅度单位;
1 @$ x3 ^. `) V9 a8、Vpp=Vpeak to peak 一个信号或电压源其最高和最低的电压波幅(差值);
! i u. {' y# R; a5 G& w- X9、JTAG功能的GPIO引脚默认是第一功能是JTAG,想使用普通IO使用,必须先关闭JTAG接口功能;$ y' D. J/ x; H5 j- I3 |; m
10、程序字节对齐的作用:提高运行效率,在一些内存池操作时需要采用; (面对一些旧式CPU,要求字节对齐);2 b1 V* |% c6 f9 e$ L
11、底层驱动尽量参考官方,切勿随意更改,产生很多隐患;
$ P5 `; t- ], N$ a/ q" \/ y" N ; A' b* S, y% w: |# a
四、GPIO
, t( V2 R% a/ ^. M*GPIO看似简单,但很多使用细节,注意掌握;
. c3 I( M1 X: _1 m4 V$ n" f* T1、使用GPIO模式:& q2 g$ [" a: G' w7 v1 Q: K
输入:弱上拉输入,浮空输入,消极(高阻态)输入;
3 f, W) ?* G- `/ z) W输出:推挽输出,开漏输出;
- S( E" }1 G" w: @# i% B
# J$ N8 \- Q; r L2 W4 X2、真正的开漏脚:输出高电平相当于开关断开,需要外接上拉(优点:1)灌电流承受能力强;2)可以多个开漏脚连接实现线与);适合做电流型驱动(20ma);9 ~% N; t9 A0 r- ?: n+ V k+ |# [
% C" S% A0 g0 F! G. X4 W
3、准双向口:可输出输入高低电平;1 Y1 n- k/ c/ b# E- G
0 _, |" k4 x8 x5 _ g6 k4、GPIO必须开启时钟,才可以配置;/ _, j! W! |( C) V" V! F2 E
8 n4 O# Q4 H& }; Z, t5 E; V5、上下拉电阻# X7 n& m: x6 L
a、单片机GPIO接上拉电阻的作用:与内部电阻并联,减少总电阻的阻值,从而使端口的电平升高,整体抬高端口的电位;/ i9 Q1 [( o- C" `
b、单片机GPIO接下拉电阻的作用:与内部电阻串联,增加总电阻的阻值,从而使端口的电平降低,整体拉低端口的电位;
6 D; z5 e8 b+ T }8 ?* |, R) f# H5 H
5 V5 e2 q6 O5 ~" s6、GPIO的低功耗处理:! ~& O6 |1 M% d% N! o
a、空闲IO处理(悬空处理);( z) e! g2 w3 ?. T# Z
b、占用IO处理(上电开启、睡眠关闭); l7 R5 T# E5 ]# K% ~+ s& O
c、中断唤醒IO处理(睡眠前开启/使能中断、唤醒前禁止中断(输入模式));
+ e' `! k6 s% A, u- X d、使用睡眠设置函数(例程);' r* u( v" }% S
0 N0 y7 t* [* }5 d" ~7、IO口的高阻态问题( @$ c1 o0 E$ l$ w
a、数字电路概念,常用于总线的分时复用功能上(作断开作用);3 O6 r. k4 {& Z7 P0 [/ Q; F
b、设置高阻态时相当于电阻无限大,该门电路放弃对输出端电路的控制;3 ^2 J, ]) X0 ~; U0 W$ @ p. ^/ W x
c、设置高阻态输入,可降低功耗,以及对前级影响;
/ ^( z. y. U T- D0 V d、高阻态与准双向口的区别: F; m3 }% P3 B! a
1)可作模拟信号输出输入,悬空时电平随外界;
- F. r. T" O5 B$ C) B- s6 y3 m. \4 q *(配置因单片机的不用而不同,AVR无高阻态;NXP可直接读端口电平;先置1后配置)/ h; J4 e5 N, t1 H9 V
2)准双向口只能做数字IO口输入输出,悬空时电平为1;# _% S% F6 W+ h$ o9 w% b# |
+ N7 |: a1 C9 e
8、中断配置
4 F& ]% m8 m% s! M/ I$ I *设置优先级之前必须关闭中断,否则会导致hard fault;
6 q P6 z+ u$ ~ a、外部低电平有效:配置下降沿触发,上拉模式;! r' g0 g+ x8 Q
b、外部高电平有效: 配置上升沿触发,消极模式;- R& ?8 ]+ w5 p8 @* @# ?+ K! A
; C4 q6 ]" T$ F2 d& e) y1 S
' y2 ^( v$ p X( P# k+ A5 o五、ADC/ B5 D& {% |+ q, ^! T
1、AD满量程可能性:
X6 S* ~$ Z( ~1 _4 v a、输入电压超过基准电压;! _/ U5 s S/ u7 ]
b、基准电压无输入或过低;! k; Q2 ?1 W+ k( |8 N& P. n
2、AD的满量程是参考电压;# \0 O* l6 z1 y) \2 T, X3 a
3、采样率的选择(时钟分频、采用保持时间);
, n" ^/ k2 }) P: |+ o4、DMA通道时可采用高速,中断采用低速;
u7 E! M# r6 u" E5、IO的选择(内部有上下拉)与配置模式(消极模式);1 L6 @$ N* [- n1 v a- T# z
6、电路设计(尽量以最短的距离连接);9 s( s% s. D, i& Y4 W. C
: S) \* r- V. h
. I' F+ o( B; U
六、IIC(半双工)+ t) m* X9 U* E( W4 T
1、地址硬件移位,软件移位;
/ j7 v8 M# o# \6 ]/ }2、时序准确;0 C; j6 X" j5 f$ I! F* y9 L
3、EEPROM发送256字节以上需要重新发送设备地址;" |, G0 [% @% A+ f1 s! Y* c4 ?
4、注意地址位数;
7 {8 B) D6 e: q9 i" \5、常用的一对多(寻地址);# k6 N' s s& C
6、如果SCL/SDA是开漏脚,需要给加上拉电阻;: I/ y: p+ h, Q- s6 m& N' X- v
7、先配置GPIO,再使能时钟;(BUSY位的置位问题);8 ~7 w& K7 g% L6 I* ^
8、硬件IIC开漏输出脚;
8 Z' J3 _" O$ v3 z; z, h9 T6 f9、总线速率:有些支持100KHZ,有些支持400KHZ(10KHZ/1MHZ/3.4MH Z);
8 x" @9 z. a9 P( h' }/ n" v10、ST系列的IIC网上评论:
* g/ \, T* X4 O7 Y* F9 x***大家都在聊IIC,我也来说说我的认为,硬件IIC在ST的设计中并无使用问题,但是存在使用便捷性问题,不知道大家是否研究过硬件IIC和模拟IIC,若从速率上比较,硬件肯定有优势,若从程序复杂度上分析,ST片子上反而是模拟的IIC比较简单,这是因为ST在IIC资源设计上有意规避了一些问题保证知识产权,引入了相当多功能位设定和事件配置,好处是通信很透明,不好的是和我们一般使用的习惯有出入,有的工程师弄了半天发现复杂度没有降低太多,索性还是用起了模拟方法,所以有的人就说ST有缺陷,实际不是缺陷,是你是否用得惯的问题。
& G/ A% _# o9 u- M/ J七、SPI(全双工器件的多样性)
4 Q$ l% c7 K3 q8 T6 n1、三线(MOSI=MISO或无CS)与四线(标准);5 t) x& k% ?& |* L. N# {/ u) e
2、CPOL/CPHA模式,主与从相反的时钟信号(调试重点,不同设备必须操作在相同的模式下);
# } P5 j5 h. l& ^4 g- |8 n3、片选信号(低或高有效)0 f7 ~2 J. g8 g2 s3 W( t2 R
4、支持不同的字长;
0 t/ _6 b# s; j5、只能收或发;' @/ j4 d8 H& W4 A. \% \( I8 U9 x
6、是否支持命令;4 Y" z, s: a9 I: l) |( K2 d0 t) Z
7 O) ]- g4 A, v% m3 m |
|