|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机的资源配置与调度相对简单,根据详细的官方指导,以及开发设计参考(各类开发板)步骤即可; e9 C8 {- `6 k3 b3 F9 N# I
一、单片机内核. M( o9 {$ L T; Y2 i6 W
*不同的内核有不同的性能/功耗表现,按需选择;
7 O9 L" j3 i# k7 k% S*内核即代表某系列的单片机;
& ^$ `8 y" K) N$ M% }) Z. H- G* |1、简单基础单片机内核: 51、STM8、AVR、PIC、S08、430;
. u: }+ t* x k3 o2、ARM Cortex系列:Cortex-M0内核是低功耗的内核;
. a) w$ e! v) l5 o" d) w, S8 {3 _3、ARM全系列详解找arm官网。
$ |$ D3 h4 G8 T2 }/ f5 t4、两种逻辑电路集成器件:& J( u9 L$ a6 r
a、FPGA:基于门编程(altera、xilinux);类似:SDAM 掉电不保存;
( d' c9 Q! E2 u b、cpld:基于块编程;类似:EEPRM FLASH 掉电保存; 9 J% a# l; @1 F$ j
) d& [7 \' o* P
二、单片机选型
: r) L' C+ O2 n' j2 H*市面的产品基本都是围绕这几款单片机:51(低端)、ST(中端)、ARM(高端);
/ F' I1 Q, O$ r% w6 V0 y1 a1、单片机的性能;; o1 C( [% r" v N3 o" S
2、单片机的自身资源是否满足项目需求,长远考虑后续的更新迭代(封装、功能)、系统升级和维护难度;
6 _$ f, ?& @6 Q0 v( [3 m2 T% C a、内存是否足够(储存常量数组、密码等数据);
. M$ u: G& A I# A0 v, |6 t b、I/O的数量充足;9 |" M8 n+ z' A6 N/ c, q
c、外设资源(RTC、IIC(硬件、模拟)、SPI、UART);
3 S" K- B; [9 o6 J3、开发周期:熟悉该类型单片机的硬件与软件,可用高级语言编写和调试;+ m, _; r5 G( X: i3 r
4、单片机的价格、货源、体积、封装;
1 t8 x; M! |* `" Z & Y5 S) j1 y2 `: I/ v* c
1 Q3 O( }7 D, {% `) g Q/ `# y三、单片机的资源配置要点5 A# z8 T% f! X) n% O- _
要点总结:
2 B4 ~* s8 Q2 |: L1 ]*单片虽然种类很多,但大同小异,掌握了产品的开发流程以及基本资源的配置方法,可以在任意平台上游刃有余;. s" Q5 p- `$ H
1、涉及到多数据线、地址线的应用,尽量选择连续IO资源,这样效率会高点;
- L2 Z9 W# ~: e2、能够使用硬件资源的尽量使用硬件资源,提高工作效率;
$ L& N2 P: N% u: h6 q3、共用中断服务函数;
0 C/ A, W" F' m: U4、优化等级可以提高单片机运行速度?7 K/ g- h# T0 _+ b2 e
5、VCAP引脚为了保证内部主调压器的电压稳定;4 a3 h0 ~; F' V! ]
6、时钟的重要性-保证信号的同步进行(在信号上升沿或下降沿采样);% C( |; o; }7 q6 d
7、mVpp 噪声波形幅度单位;
- {+ A3 }3 L& Y0 [* h8、Vpp=Vpeak to peak 一个信号或电压源其最高和最低的电压波幅(差值);4 _. q, u1 ^5 ~. [
9、JTAG功能的GPIO引脚默认是第一功能是JTAG,想使用普通IO使用,必须先关闭JTAG接口功能;
5 A' N% [6 G- h- S7 V10、程序字节对齐的作用:提高运行效率,在一些内存池操作时需要采用; (面对一些旧式CPU,要求字节对齐);
9 |4 K9 o0 c' @, ?( H) _$ L11、底层驱动尽量参考官方,切勿随意更改,产生很多隐患;
/ _8 Y; N4 c4 u% n3 X6 D0 j9 W
9 K$ A" X9 a/ R! L* k四、GPIO* U) K( y4 u/ J
*GPIO看似简单,但很多使用细节,注意掌握;& G+ g* P& V# ^) V
1、使用GPIO模式:4 Q' h+ j- n4 w0 B2 O7 }
输入:弱上拉输入,浮空输入,消极(高阻态)输入;
/ K# Q* D& d2 [; N( I输出:推挽输出,开漏输出;
6 d. ? I. T" `; d" {" a7 a; P8 h $ @1 h$ d3 s, Y6 J
2、真正的开漏脚:输出高电平相当于开关断开,需要外接上拉(优点:1)灌电流承受能力强;2)可以多个开漏脚连接实现线与);适合做电流型驱动(20ma);
7 ?, b( Q# j' r& z
) n7 m7 i i% L7 g% c3、准双向口:可输出输入高低电平;
& J. K5 A& q: @, g9 d7 L; P" d
* n! K7 r, }# j _1 B9 d7 ]- L4 ^2 s3 P4、GPIO必须开启时钟,才可以配置;6 q' o; R/ G* f1 K" {1 g
1 U, f( K( P) n
5、上下拉电阻. Y. c% R7 N; u6 A1 C
a、单片机GPIO接上拉电阻的作用:与内部电阻并联,减少总电阻的阻值,从而使端口的电平升高,整体抬高端口的电位;, r2 e h j5 F, o# \* i) K
b、单片机GPIO接下拉电阻的作用:与内部电阻串联,增加总电阻的阻值,从而使端口的电平降低,整体拉低端口的电位;
P, D% a, r' e4 @1 O) {+ { . j3 W1 t' n/ B- x+ q% U) c$ ?
6、GPIO的低功耗处理:
; Q+ h5 k) J) `5 f; | a、空闲IO处理(悬空处理); ^$ r" @/ F5 S! d3 Z8 ~! q2 g
b、占用IO处理(上电开启、睡眠关闭);
2 D) z! \9 n6 p3 U* T c、中断唤醒IO处理(睡眠前开启/使能中断、唤醒前禁止中断(输入模式));
8 v' O# Y. m7 v: N: T* h d、使用睡眠设置函数(例程);
- S, ^. x; ~2 P! o: e4 P
4 X. a; v& W% Y5 I. F% D7、IO口的高阻态问题
2 D {( d' \- |$ @) I a、数字电路概念,常用于总线的分时复用功能上(作断开作用);
0 k8 I I2 i* b8 W+ Q b、设置高阻态时相当于电阻无限大,该门电路放弃对输出端电路的控制;
) f: j/ y) e+ I3 F# N4 d c、设置高阻态输入,可降低功耗,以及对前级影响;) `( F) n. B3 G: `- H5 W" s4 _
d、高阻态与准双向口的区别6 Y7 I. v+ n, s! P
1)可作模拟信号输出输入,悬空时电平随外界;
% B8 f; ^/ p7 \: ?9 \: y J& U- ] *(配置因单片机的不用而不同,AVR无高阻态;NXP可直接读端口电平;先置1后配置)
2 m. l, s$ ?, Y# Y+ y: m0 } 2)准双向口只能做数字IO口输入输出,悬空时电平为1;
; q0 K- S% J5 v0 a( l% y$ B 0 P- G$ `1 | Q( |
8、中断配置+ Z$ M8 N! z# O, _
*设置优先级之前必须关闭中断,否则会导致hard fault;
/ r5 Q( X: F# L% V a、外部低电平有效:配置下降沿触发,上拉模式;
. I3 r3 U2 |! w% G1 h4 e b、外部高电平有效: 配置上升沿触发,消极模式;, b2 _3 E4 r; n k" m
1 T2 f1 w! m. T6 Z/ A( x. F
0 _ K3 E/ p5 Z7 r: \" e6 f5 `8 y( \) g五、ADC; Q1 [0 f- M$ R" ]) H
1、AD满量程可能性:
, m/ }, B5 C4 g* d9 M a、输入电压超过基准电压;
! `5 M/ W3 U( w) B$ f7 e b、基准电压无输入或过低;$ u4 @6 b) |! K; s: J# B; C
2、AD的满量程是参考电压;
" M6 n8 |7 l, ?) a3、采样率的选择(时钟分频、采用保持时间);
5 n0 ?' ]8 [1 k( S. k5 d% c/ c) H' ?4、DMA通道时可采用高速,中断采用低速;% B" `8 ^) D/ b9 r1 H
5、IO的选择(内部有上下拉)与配置模式(消极模式); ^6 L$ L# R/ q! L
6、电路设计(尽量以最短的距离连接);5 s1 d7 N" k3 E' I6 I
- w( c6 K0 p: k3 L! Q 9 c- u! t' a/ O
六、IIC(半双工)
' D3 W$ o. N6 C" K/ [3 i1 o0 @5 p! a1、地址硬件移位,软件移位;
: r9 j, N Q& R+ C% k2、时序准确;
! h2 a! x' n2 w' k: _) N: S k3、EEPROM发送256字节以上需要重新发送设备地址;
" a! f# y. t0 m `7 f0 Y7 N5 A4、注意地址位数;- z* E, q3 H3 R3 b* z
5、常用的一对多(寻地址);
+ y3 g& Q5 ^1 e( ~9 P; g2 K1 L9 b6、如果SCL/SDA是开漏脚,需要给加上拉电阻;
- z2 N d) u& X: m& B# V: d" ]7、先配置GPIO,再使能时钟;(BUSY位的置位问题);
3 p0 h: X9 {" q) y) s8、硬件IIC开漏输出脚;5 j+ a/ D% {; t
9、总线速率:有些支持100KHZ,有些支持400KHZ(10KHZ/1MHZ/3.4MH Z); D E! `% {+ U+ d% a6 l
10、ST系列的IIC网上评论:
2 T/ f* j+ o2 {( T% f4 V% `***大家都在聊IIC,我也来说说我的认为,硬件IIC在ST的设计中并无使用问题,但是存在使用便捷性问题,不知道大家是否研究过硬件IIC和模拟IIC,若从速率上比较,硬件肯定有优势,若从程序复杂度上分析,ST片子上反而是模拟的IIC比较简单,这是因为ST在IIC资源设计上有意规避了一些问题保证知识产权,引入了相当多功能位设定和事件配置,好处是通信很透明,不好的是和我们一般使用的习惯有出入,有的工程师弄了半天发现复杂度没有降低太多,索性还是用起了模拟方法,所以有的人就说ST有缺陷,实际不是缺陷,是你是否用得惯的问题。8 Q( l/ Y) [9 q, s2 I2 B
七、SPI(全双工器件的多样性) ^3 w3 g# g0 R! R
1、三线(MOSI=MISO或无CS)与四线(标准); B5 `& ]6 B; |; V
2、CPOL/CPHA模式,主与从相反的时钟信号(调试重点,不同设备必须操作在相同的模式下);
. ?# k! j+ n4 k, ]/ R' ^* J3、片选信号(低或高有效)0 i& g' o8 b9 F; m/ C
4、支持不同的字长;( m0 N7 ~) l9 B7 ], v r& r$ b
5、只能收或发;
3 s1 S. ]; G, b7 t2 B7 G6、是否支持命令;
- J3 Q- C5 A, r9 |1 \/ F6 x
& u" R+ ?! u; K) g8 Z |
|