37. 汽车电子用的单片机是8位多,还是32位?如何看待单片机在汽车电子市场中的前景?
6 s. K/ y& t t+ Z# B9 V; h答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上,令多种新功能得以实现。 , k' l0 }- e1 {& Y" q; m M0 k8 A
8 o/ Q) [5 _$ M0 s, O- h7 j
总的来说,汽车电子应用分三部份。 3 t& B! S" z" j, L! B
! w! B3 K# }' z) t% g 汽车发动机控制:限速控制,涡轮增压,燃料喷注控制等。
( C7 s# `$ X- B3 i7 ]3 K' Y1 ^# Y7 ^ 汽车舒适装置:遥控防盗系统,自动空调系统,影音播放系统,卫星导航系统等。
7 m5 I1 F6 T2 h! P 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS),防滑系统(ASR),电子稳定系统(ESP)等。
/ W( s' w% M, T- p# G% B! U" N3 X- c' ?
汽车上的各系统繁多,且日新月异,故利用何种单片机是依各系统规格,要求不一,但有一样可肯定是该单片机要符工业规格,才能忍受汽车应用的恶劣环境,高温,电源干扰,可靠度要求。不同档次的汽车其功能配置相对亦有差别,故8位单片机在较低阶的系统如机械控制,遥控防盗等应该还有空间,但高阶的系统如影音、导航及将来的无人驾驶,就非一般单片机能实现。
: r8 p; @ u3 ~0 P0 K7 L" M; Q
/ E1 U3 U0 `# W! G6 @% c) p, ?因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团会挑选单片机大厂合作, 故汽车内置的电子系统亦由单片机大厂把持,市场只剩外置系统如遥控防盗,影音导航供小厂开发。
, c" i7 q v0 s& \* b* @& }
- m7 i2 ?+ L# B1 t38. 在使用三星的s3c72n4时,觉得它的time/counter不够用。现在要同时用到3个counter,该怎么办? 9 w% }/ b+ z, K( E8 r, w U
答:您是需要三个外部counter还是需要三个定时器?如果是三个定时器标志的话,可以取这三个定时最基本的时基作为timer的基础计数,然后以这个时基来计算这三个需要的计数标志的flag,在程序中只需要查询flag是否到,再采取动作。
4 u; W7 O* o q; \8 P- ~
. G! u x9 e- n2 H- b# y: L; \如果要3个外部脉冲计数的话,这个有一定的难度,如果外部脉冲不是很频繁,可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与MCU执行速度有一定的数量级差,否则mcu可能无法处理其它程序,一直在处理外部中断。
+ b. E4 D( u5 B1 J! F( _3 B% x. Z; Y0 B( v0 e( y
39. 在芯片集成技术日益进步的今天,单片机的集成技术发展也很迅速,在传统的40引脚的基础上,飞利浦公司推出20引脚的单片机系列,使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行? $ H3 b7 ?7 T9 x5 ^6 F+ k
答:现在有很多品牌的单片机都有引脚复用功能,不止飞利浦一家,应该说这个方式前几年就已经有了。在实际应用中不会影响其功能的执行,但是要注意的是,有的MCU如果采用复用引脚的话,该引脚会有一些应用上的限制,这在相应的datasheet里面都会有描述,所以在系统规划的时候都要予以注意。 + _% D' n F- R7 @5 R: u! V
) a, `4 F7 O1 G! _40. Delta-Sigma软件测量方式,是什么概念?
6 \/ f: I, Y1 L' _; o答:Delta-Sigma原理一般应用在ADC应用中。具体来说,Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器,它们一起构成一个反馈环路。调制器以大大高于模拟输入信号带宽的速率运行,以便提供过采样。模拟输入与反馈信号(误差信号)进行差动 (delta)比较。该比较产生的差动输出馈送到积分器(sigma)中。然后将积分器的输出馈送到比较器中。比较器的输出同时将反馈信号(误差信号)传送到差动器,而自身被馈送到数字滤波器中。这种反馈环路的目的是使反馈信号(误差信号)趋于零。比较器输出的结果就是1/0 流。该流如果1密度较高,则意味着模拟输入电压较高;反之,0密度较高,则意味着模拟输入电压较低。接着将1/0流馈送到数字滤波器中,该滤波器通过过采样与抽样,将1/0流从高速率、低精度位流转换成低速率、高精度数字输出。
! W7 ~& ?/ H5 s
& r8 |3 J- r+ U! x简而言之,Delta就是差动,Sigma就是积分的意思。Delta-Sigma软件测试,我的理解应该是通过软件模拟差动积分的过程。具体来说,就是侦测外部输入的电压(或者电流)信号变化,然后通过软件积分运算,得出外部信号随时间变化的基本状况。
, t6 u0 T1 S% G1 z* k4 P, D4 l+ j8 ?; A% X, ]& O" v
41. 通常采用什么方法来测试单片机系统的可靠性? 7 S6 m& a6 ?2 ?! W
答:单片机系统可以分为软件和硬件两个方面,我们要保证单片机系统可靠性就必须从这两方面入手。
, ]8 d( l7 v7 x
1 U7 R& X, U" X8 x& m: v9 o首先在设计单片机系统时,就应该充分考虑到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响。我们以HOLTEK最基本的I/O单片机HT48R05A-1为例,它内部提供了看门狗定时器WDT防止单片机内部程序乱跑出错;提供了低电压复位系统LVR,当电压低于某个允许值时,单片机会自动RESET防止芯片被锁死;HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干扰对芯片的影响。
# X: D" Y8 h% w' N! l
2 t$ P+ \9 ~" g( [6 S8 o; A( Y当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:
$ q6 o# \* K/ f' b1 t4 [3 F# f( { Q; _
 测试单片机软件功能的完善性。 这是针对所有单片机系统功能的测试,测试软件是否写的正确完整。
) ]' ?% o8 h- I% t' m+ N: \& c' h) i 上电掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试单片机系统的可靠性。
7 E9 e. P+ `' H ] P: x i/ z- }% r% p. W# I6 v
 老化测试。测试长时间工作情况下,单片机系统的可靠性。必要的话可以放置在高温,高压以及强电磁干扰的环境下测试。
$ \& E4 K- b% {2 Q2 ~, N# `' K5 i# \% [" H3 d$ L
 ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性。例如使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。 * |4 r- O8 j+ E# c7 I. s1 P, V
1 W: l8 C" O9 E1 B当然如果没有此类条件,可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等。 ; b+ s' y J8 `# C# a
6 k* M, n# K- u. x' v( y
42. 在开发单片机的系统时,具体有那些是衡量系统的稳定性的标准?
) s6 h; |- o" f+ F( |" v- i& Q8 b答:从工业的角度来看,衡量系统稳定性的标准有很多,也针对不同的产品标准不同。下面我们大概介绍单片机系统最常用的标准。 * x) I: T3 O7 y, ~$ S- L
1 M* v* [: ?) v: f0 U, V x4 f, [$ r 电试验(ESD) " R3 @' T0 I; l
参考标准: IEC 61000-4-2 - y n' i& d( i1 [6 p
本试验目的为测试试件承受直接来自操作者及相对对象所产生之静电放电效应的程度。 ' r& d9 m7 A4 x! a8 T0 W6 Z" e* B; i
7 |4 |; B; `% |* p; m L& T9 ~
 空间辐射耐受试验(RS)
5 w* d5 z+ ?3 z- a" @) K+ t( s+ |参考标准:IEC 61000-4-3
" Y, k. j3 p$ l1 X本试验为验证试件对射频产生器透过空间散射之噪声耐受程度。
' \$ [. W ^- H& [% B( c测试频率:80 MHz~1000 MHz
( W5 z% p& P" l7 ~9 U$ _( t. S; |
& I* C8 O* b$ F' j, m+ L# a 快速脉冲抗扰测试(EFT/B) 7 e, @( w8 d0 H8 D0 |' N
参考标准:IEC 61000-4-4 ( j% q# H% I8 `0 W4 D# d6 V# Q
本试验目的为验证试件之电源线,信号线(控制线)遭受重复出现之快速瞬时丛讯时之耐受程度。
5 [# \( w; O( O. z$ ?- \8 d9 P6 _: i" `/ ^0 H9 o( w4 C
 雷击试验(Surge)
/ } |' v- {+ e( A3 B6 ?参考标准 : IEC 61000-4-5
|, u: R, O7 g! J. S本试验为针对试件在操作状态下,承受对于开关或雷击瞬时之过电压/电流产生突波之耐受程度。 " a( `6 g/ y8 M3 E' z( c
' |. f0 O5 t0 x5 X! d% m7 X 传导抗扰耐受性(CS) % e& J+ o* t8 Z6 [
参考标准:IEC 61000-4-6 * h' c+ e9 s w( f! s
本试验为验证试件对射频产生器透过电源线传导之噪声耐受程度。
+ b' x# X* V( G* u& d2 q测试频率范围:150 kHz~80 MHz
7 W) ?% X, `/ F+ [ c; Y+ J. ~* y7 m& c
; i* E% ~, b1 ~3 a+ Y1 [/ ~7 S Impulse
! c: [3 w( D h ?脉冲经由耦合注入电源线或控制线所作的杂抗扰性试验。 6 @6 }0 N( ?4 ~; N6 f* I7 Q+ O
. c) w, h1 A" |$ O43. 在设计软体时,大多单片机都设有看门狗,需要在软体适当的位置去喂狗,以防止软体复位和软体进入死循环,如何适当的喂狗,即如何精确判定软体的运行时间? . ?, M7 p" P. P6 ?/ Y5 q9 p* d
答:大多数单片机都有看门狗定时器功能(WDT,Watch Dog Timer)以避免程序跑错。HOLTEK有一款基本I/O型单片机--HT48R05A-1,我们就以它为例做个说明吧。
& o8 X) g3 J3 m: y8 S7 h
# X3 W6 h( v" `首先了解一下WDT的基本结构,它其实是一个定时器,所谓的喂狗是指将此定时器清零。喂狗分为软件和硬件两种方法。软件喂狗就是用指令来清除WDT,即CLR WDT;硬件喂狗就是硬件复位RESET。当定时器溢出时,会造成WDT复位,也就是我们常说的看门狗起作用了。在程序正常执行时,我们并不希望WDT复位,所以要在看门狗溢出之前使用软件指令喂狗,也就是要计算WDT相隔多久时间会溢出一次。HT48R05A-1的WDT溢出时间计算公式是:256*Div*Tclock。其中Div是指wdt预分频数1~128,Tclock是指时钟来源周期。如果使用内部RC振荡作为WDT的时钟来源(RC时钟周期为65us/5V),最大的WDT溢出时间为2.1秒。
4 D1 `) d2 Z$ u1 ?7 l% W: u3 k2 S8 W3 f) Q8 o3 v3 c
当我们得到了WDT溢出时间Twdt后,一般选择在Twdt/2左右的时间进行喂狗,以保证看门狗不会溢出,同时喂狗次数不会过多。 ( \; U9 n% q$ X( ^+ f* ~" C; c- `& W
0 K5 S% q. v7 l. {( V( D; I软件运行时间是根据不同的运行路线来决定的,如果可以预见软件运行的路线,那么可以根据T=n*T1来计算软件的运行时间。n是指运行的机器周期数,T1是指机器周期。HOLTEK单片机是RISC结构,大部分指令由一个机器周期组成,只需要知道软件运行了多少条指令,就可以算出运行时间了。HOLTEK的编译软件HT-IDE3000中,就有计算运行时间的工具。但是对于CISC结构的单片机,一条指令可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了。
2 X0 q8 N, P4 _: l: {2 v+ P% M( m+ H* E; c9 }% i. d
44. 我们是一家开发数控系统的专业厂,利用各种单片机和CPU开发了很多产品,在软件开发上也采用了很多通用的抗干扰技术,如:软件陷阱、指令允余、看门狗和数字滤波等等,但实际运用中还是很不可靠,如:经常莫名其妙地死机、程序跳段、I/O数据错误等,并且故障的重复性很不确定,也不是周期性地重复。往往用户使用中出现故障,但又无法重现,很让人头痛。反复检查硬件也设查出原因,所以对软件的可靠性很是怀疑。怎么办?
( s! _( g2 l* N答:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。 # C& v) [9 `) K, F. l
# S! \' K+ Q. H$ J4 }4 t8 b7 B一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。
% R) b1 R+ S0 t' m; |0 D0 A. D1 B3 X8 v3 e5 k7 N
终于贴完了,
) N+ a- r; l% C% a0 A+ S) Y2 q3 Q ^8 \8 s# t
可以在定时中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间),SET标志位,这些动作都在中断程序里面。而主程序只需要查询标志位就好了,但是注意标志位使用后,记得清除,还有中断里面的时基累加器使用以后也要记得清除。 |