Professional Documents
Culture Documents
www.arm.vn
Trang 1
Author: ARMVN
www.arm.vn
Mc Lc
Mc Lc ....................................................................................................................... 1 Chng 1...................................................................................................................... 6 GII THIU ............................................................................................................... 6 1.1 Cortex l g?....................................................................................................... 6 1.2 Mt vi c im ni bt ca STM32 ............................................................. 9 1.2.1 S tinh vi .................................................................................................. 10 1.2.2 S an ton ................................................................................................ 11 1.2.3 Tnh bo mt ........................................................................................... 11 1.2.4 Pht trin phn mm .............................................................................. 12 1.2.5 Dng Performance v Access ca STM32 ............................................ 12 Chng 2.................................................................................................................... 14 TNG QUAN V CORTEX ................................................................................... 14 2.1 Cc phin bn kin trc ARM ....................................................................... 14 2.2 B x l Cortex v n v x l trung tm Cortex ........................................ 15 2.3 n v x l trung tm Cortex (Cortex CPU) ............................................... 15 2.3.1 Kin trc ng ng (Pipline) ................................................................ 15 2.3.2 M hnh lp trnh (Programmers model) ............................................ 16 2.3.2.1 Thanh ghi XPSR .............................................................................. 18 2.3.3 Cc ch hot ng ca CPU .............................................................. 19 2.3.4 Tp lnh Thumb-2 .................................................................................. 21 2.3.5 Bn b nh (Memory Map) .............................................................. 22 2.3.6 Truy cp b nh khng xp hng (Unaligned Memory Accesses) ..... 24 2.3.7 Di Bit (Bit Banding) .............................................................................. 25 2.4 B x l Cortex ............................................................................................... 28 2.4.1 Bus ............................................................................................................ 28 2.4.2 Ma trn Bus ............................................................................................. 29 2.4.3 Timer h thng (System timer) .............................................................. 29 2.4.4 X l ngt (Interrupt Handling)............................................................. 30 2.4.5 B iu khin vector ngt lng nhau (Nested Vector Interrupt Controller) ......................................................................................................... 30 2.4.5.1 Phng php nhp v thot khi mt ngoi l ca NVIC (NVIC Operation Exception Entry And Exit) ........................................................ 32 2.4.5.2 Cc ch x l ngt cao cp (Advanced Interrupt Handling Modes) ............................................................................................................ 33 2.4.5.2.1 Quyn u tin ngt (Interrupt Pre-emption) ......................... 33 2.4.5.2.2 K thut Tail Chaining trong NVIC ....................................... 34 2.4.5.3 Cu hnh v s dng NVIC ............................................................. 35 2.4.5.3.1 Bng vector ngt (Exception Vector Table) ........................... 35 2.5 Cc ch nng lng .................................................................................. 40 2.5.1 Cch i vo ch nng lng thp ca CPU Cortex ........................ 40
Trang 2
Author: ARMVN
www.arm.vn
2.5.2 Khi h tr g li CoreSight .................................................................. 42 Chng 3.................................................................................................................... 45 PHN CNG C BN CHO MT THIT K THC T ............................... 45 3.1 Kiu ng gi chip v kiu chn linh kin .................................................... 45 3.3.1 S mch phn cng c bn ................................................................ 47 Chng 4.................................................................................................................... 48 KIN TRC H THNG CA ARM CORTEX ................................................. 48 4.1 Cu trc b nh .............................................................................................. 49 4.2 Ti a hiu nng .............................................................................................. 50 4.2.1 Vng Kha Pha(Phase Lock Loop) ............................................................ 51 4.2.1.1 Cu hnh cho bus....................................................................................... 53 4.2.2 Flash Buffer .................................................................................................. 54 4.2.3 Direct Memory Access ................................................................................. 55 Chng 5.................................................................................................................... 61 NGOI VI.................................................................................................................. 61 5.1 Ngoi vi a dng.............................................................................................. 61 5.1.1 Cc cng I/O a dng .............................................................................. 61 5.1.1.1 Chc nng thay th(Alternate Function) ........................................ 63 5.1.1.2 Event Out ........................................................................................... 64 5.1.2. Ngt ngoi(EXTI).................................................................................... 64 5.1.3 ADC ........................................................................................................... 66 5.1.3.1 Thi gian chuyn i v nhm chuyn i ..................................... 66 5.1.3.2 Analogue WatchDog ......................................................................... 69 5.1.3.3 Cu hnh ADC ................................................................................... 69 5.1.3.4. Dual mode ......................................................................................... 71 5.3.1.4.1. C hai khi ADC cng hot ng cng ch Regular hoc Injected....................................................................................................... 71 5.3.1.4.2. C hai khi cng hot ng 2 ch Regular v Injected xen k.......................................................................................................... 72 5.3.1.4.3. Hot ng xen k nhanh v chm Regular............................. 72 5.3.1.4.4. Ch kch hot thay th......................................................... 73 5.3.1.4.5. Kt hp ng b ha Regular v kch hot thay th ............. 73 5.3.1.4.6. Kt hp ng b ha Injected v xen k Regular .................. 73 5.1.4. B nh thi a nhim v nng cao ....................................................... 74 5.1.4.1. B nh thi a nhim ..................................................................... 74 5.1.4.1.1 Khi Capture/Compare ............................................................. 75 5.1.4.1.2 Khi Capture .............................................................................. 75 5.1.4.1.3 Ch PWM Input.................................................................... 76 5.1.4.1.5 Ch One Pulse ....................................................................... 78 5.1.4.3 ng b ho cc b nh thi........................................................... 78 5.1.5 RTC v cc thanh ghi Backup ................................................................ 79 5.2 Kt ni vi cc giao tip khc ........................................................................ 80
Trang 3
Author: ARMVN
www.arm.vn
5.2.1 SPI ............................................................................................................. 80 5.2.2 I2C ............................................................................................................. 82 5.2.3 USART ...................................................................................................... 83 5.2.4 CAN ........................................................................................................... 85 5.2.5 USB ............................................................................................................ 88 Chng 6.................................................................................................................... 89 CH TIU TH NNG LNG THP........................................................ 89 6.1 Ch bnh thng - RUN mode .................................................................. 89 6.1.1 Ch Half-cycle v Prefetch-buffer..................................................... 90 6.2. Cc ch s dng cng sut tiu th thp ................................................ 91 6.2.1. SLEEP ...................................................................................................... 91 6.2.2 STOP Mode .............................................................................................. 92 6.3 Standby ............................................................................................................ 94 6.4. S tiu th cng sut ca ngun d phng (Backup Region Power Consumption) ........................................................................................................ 96 6.5 H tr Debug (Debug Support) ..................................................................... 96 Chng 7.................................................................................................................... 97 TNH AN TON ....................................................................................................... 97 7.1 Reset Control ................................................................................................... 97 7.2 Kim tra in p ngun .................................................................................. 99 7.3 H thng an ton xung nhp (Clock Security System - CSS) ...................... 99 7.4 Watchdogs ..................................................................................................... 100 7.4.1 Windowed Watchdog ............................................................................ 101 7.4.2 Independent Watchdog ......................................................................... 102 7.5 Tnh nng ngoi vi ........................................................................................ 104 7.5.1 GPIO Port Locking (kha port GPIO) ................................................ 104 7.5.2 Analog Watchdog ................................................................................... 104 7.5.3 Break Input............................................................................................. 104 Chng 8: ................................................................................................................ 105 FLASH ..................................................................................................................... 105 8.1 Lp trnh v m bo an ton cho FLASH ni .......................................... 105 8.2 Hot ng xa v ghi .................................................................................... 106 8.3 Cc byte Option (Option Bytes)................................................................... 107 8.3.1 Bo v ghi ................................................................................................ 107 8.3.2 Bo v c ............................................................................................... 107 8.3.3 Byte Cu hnh ......................................................................................... 108 Chng 9: ................................................................................................................ 109 CNG C PHT TRIN ...................................................................................... 109 9.1 Evaluation Tools............................................................................................ 110
Trang 4
Author: ARMVN
www.arm.vn
9.2 Cc th vin v giao thc ............................................................................. 110 9.3 H iu hnh thi gian thc ......................................................................... 111
Trang 5
Author: ARMVN
www.arm.vn
1.1 Cortex l g?
Dng ARM Cortex l mt b x l th h mi a ra mt kin trc chun cho nhu cu a dng v cng ngh. Khng ging nh cc chip ARM khc, dng Cortexk l mt li x l hon thin, a ra mt chun CPU v kin trc h thng chung. Dng Cortex gm c 3 phn nhnh chnh: dng A dnh cho cc ng dng cao cp, dng R dnh cho cc ng dng thi gian thc nh cc u c v dng M dnh cho cc ng dng vi iu khin v chi ph thp. STM32 c thit k da trn dng Cortex-M3, dng Cortex-M3 c thit k c bit nng cao hiu sut h thng, kt hp vi tiu th nng lng thp, CortexM3 c thit k trn nn kin trc mi, do chi ph sn xut thp cnh tranh vi cc dng vi iu khin 8 v 16-bit truyn thng. Cc chip ARM7 v ARM9 c cc nh sn xut bn dn thit k vi gii php ring ca mnh, c bit l phn x l cc cc ngt c bit (exception) v cc ngt thng thng (interrupt). Cortex-M3 a ra mt li vi iu khin chun nhm cung cp phn tng qut, quan trng nht ca mt vi iu khin,
Trang 6
Author: ARMVN
www.arm.vn
bao gm h thng ngt (interrupt system), SysTick timer (c thit k cho h iu hnh thi gian thc), h thng kim li (debug system) v memory map. Khng gian a ch 4Gbyte ca Cortex-M3 c chia thnh cc vng cho m chng trnh, SRAM, ngoi vi v ngoi vi h thng. Khng ging vi ARM7 c thit k theo kin trc Von Neumann (b nh chng trnh v b nh d liu chung vi nhau), Cortex-M3 c thit k da theo kin trc Harvard (b nh chng trnh v b nh d liu tch bit vi nhau), v c nhiu bus cho php thc hin cc thao tc song song vi nhau, do lm tng hiu sut ca chip. Khng ging vi cc kin trc ARM trc , dng Cortex cho php truy cp d liu khng xp hng (unaligned data, v chip ARM l kin trc 32bit, do tt c cc d liu hoc m chng trnh u c sp sp kht vi vng b nh l bi s ca 4byte). c im ny cho php s dng hiu qu SRAM ni. Dng Cortex cn h tr vic t v xo cc bit bn trong hai vng 1Mbyte ca b nh bng phng php gi l bit banding. c im ny cho php truy cp hiu qu ti cc thanh ghi ngoi vi v cc c c dng trn b nh SRAM m khng cn mt b x l lun l (Boolean processor).
Trang 7
Author: ARMVN
www.arm.vn
Khi trung tm ca STM32 l b x l Cortex-M3. B x l Cortex-M3 l mt vi iu khin c tiu chun ho gm mt CPU 32bit, cu trc bus (bus structure), n v x l ngt c h tr tnh nng lng ngt vo nhau (nested interrupt unit), h thng kim li (debug system) v tiu chun b tr b nh (standard memory layout). Mt trong nhng thnh phn chnh ca li Cortex-M3 l NVIC (Nested Vector Interrupt Controller). NVIC cung cp mt cu trc ngt chun cho tt c cc vi iu khin c thit k da trn li Cortex v cch x l cc ngt c bit (exceptional interrupt). NVIC cung cp cc vector ngt chuyn dng ln ti 240 ngun ngt t ngoi vi, mi ngun ngt c th c u tin ho vi cc mc ring bit. NVIC c thit k x l cc ngt i hi thi gian p ng cc k nhanh (extremely fast interrupt). Thi gian t lc nhn mt tn hiu ngt cho ti khi thc thi dng lnh u tin trong trnh phc v ngt ch l 12 chu k xung nhp. Cng vic ny c thc hin t ng bi mt vi chuong trnh (microcode) c ci sn trong CPU. Trong trng hp xut hin cc interrupt lng nhau (tc l xy ra ngt khi ang x l ngt trc ), NVIC s dng mt phng thc gi l tail chain cho php ngt lin tip c phc v vi tr ch c 6 chu k xung nhp. Trong sut giai on lu tr d liu ln vng nh stack bt u thc thi chng trnh phc v ngt, mt ngt c mc u tin cao hn ngt hin ti c th cnh tranh vi (pre-empt) ngt hin ti m khng chu bt k tr hon no. Cu trc ngt cng i km vi ch tit kim nng lng ca trong li Cortex-M3. CPU c th c cu hnh t ng vo ch tit kim nng lng sau khi thot khi ngt. Sau li tip tc ng cho n khi mt exception (ngt c bit) xut hin. Mc d Cortex-M3 c thit k nh l mt li chi ph thp (low cost core), nhng n vn l mt CPU 32-bit v vn h tr hai ch hot ng: Thread v Handler, mi ch c th c cu hnh vi mi vng stack ring bit ca n, iu ny cho php thit k cc phn mm phc tp v h tr cc h diu
Trang 8
Author: ARMVN
www.arm.vn
hnh thi gian thc. Li Cortex c h tr mt timer 24-bit t ng np li gi tr, n s cung cp mt ngt timer u n cho mt nhn RTOS (Real Time Operating System). Cc chip ARM7 v ARM9 c hai tp lnh (tp lnh ARM 32-bit v tp lnh Thumb 16-bit), trong khi dng Cortex c thit k h tr tp lnh ARM Thumb-2, tp lnh ny c pha trn gia tp lnh 16 v 32bit, nhm t c hiu sut cao ca ca tp lnh ARM 32-bit vi mt m chng trnh ti u ca tp lnh Thumb 16-bit. Tp lnh Thumb-2 c thit k c bit dnh cho trnh bin dch C/C++, tc l cc ng dng da trn nn Cortex hon ton c th c vit bng ngn ng C m khng cn n chng trnh khi ng vit bng assembler nh ARM7 v ARM9.
1.2 Mt vi c im ni bt ca STM32
ST a ra th trng 4 dng vi iu khin da trn ARM7 v ARM9, nhng STM32 l mt bc tin quan trng trn ng cong chi ph v hiu sut (price/performance), gi ch gn 1 Euro vi s lng ln, STM32 l s thch thc tht s vi cc vi iu khin 8 v 16-bit truyn thng. STM32 u tin gm 14 bin th khc nhau, c phn thnh hai nhm: dng Performance c tn s hot ng ca CPU ln ti 72Mhz v dng Access c tn s hot ng ln ti 36Mhz. Cc bin th STM32 trong hai nhm ny tng thch hon ton v cch b tr chn (pin) v phn mm, ng thi kch thc b nh FLASH ROM c th ln ti 128K v 20K SRAM.
Trang 9
Author: ARMVN
www.arm.vn
Dng STM32 c hai nhnh, nhnh Performance hot ng vi xung nhp ln n 72Mhz v c y cc ngoi vi, nhnh Access hot ng vi xung nhp ti a 36Mhz v c t ngoi vi hn so vi nhnh Performance.
1.2.1 S tinh vi
Thot nhn th cc ngoi vi ca STM32 cng ging nh nhng vi iu khin khc, nh hai b chuyn i ADC, timer, I2C, SPI, CAN, USB v RTC. Tuy nhin mi ngoi vi trn u c rt nhiu c im th v. V d nh b ADC 12-bit c tch hp mt cm bin nhit t ng hiu chnh khi nhit thay i v h tr nhiu mode chuyn i. Mi b timer c 4 khi capture compare, mi khi timer c th lin kt vi cc khi timer khc to ra mt mng cc timer tinh vi. Mt timer cao cp chuyn h tr iu khin ng c, vi 6 u ra PWM vi dead time lp trnh c v mt ng break input s buc tn hiu PWM sang mt trng thi an ton c ci sn. Ngoi vi ni tip SPI c mt khi kim tng CRC bng phn cng cho 8 v 16 word h tr tch cc cho giao tip th nh SD hoc MMC. STM32 c h tr thm 7 knh DMA (Direct Memory Access). Mi knh c th c dng truyn d liu n cc thanh ghi ngoi vi hoc t cc thanh ghi ngoi vi i vi kch thc t (word) d liu truyn i c th l 8/16 hoc 32-bit. Mi ngoi vi c th c mt b iu khin DMA (DMA controller) i km dng gi hoc i hi d liu nh yu cu. Mt b phn x bus ni (bus arbiter) v ma trn bus (bus matrix) ti thiu ho s tranh chp bus gia truy cp d liu thng qua CPU (CPU data access) v cc knh DMA. iu cho php cc n v DMA hot ng linh hot, d dng v t ng iu khin cc lung d liu bn trong vi iu khin. STM32 l mt vi iu khin tiu th nng lng thp v t hiu sut cao. N c th hot ng in p 2V, chy tn s 72MHz v dng tiu th ch c 36mA vi tt c cc khi bn trong vi iu khin u c hot ng. Kt hp vi cc ch tit kim nng lng ca Cortex, STM32 ch tiu th 2A khi
Trang 10
Author: ARMVN
www.arm.vn
ch standby. Mt b dao ng ni RC 8MHz cho php chip nhanh chng thot khi ch tit kim nng lng trong khi b dao ng ngoi ang khi ng. Kh nng nhanh i vo v thot khi cc ch tit kim nng lng lm gim nhiu s tiu th nng lng tng th.
1.2.2 S an ton
Ngy nay cc ng dng hin i thng phi hot ng trong mi trng khc khe, i hi tnh an ton cao, cng nh i hi sc mnh x l v cng nhiu thit b ngoi vi tinh vi. p ng cc yu cu khc khe , STM32 cung cp mt s tnh nng phn cng h tr cc ng dng mt cch tt nht. Chng bao gm mt b pht hin in p thp, mt h thng bo v xung clock v hai b watchdogs. B u tin l mt watchdog ca s. Watchdog ny phi c lm ti trong mt khung thi gian xc nh. Nu nhn n qu sm, hoc qu mun, th watchdog s kch hot. B th hai l mt watchdog c lp, c b dao ng bn ngoi tch bit vi xung nhp h thng chnh. H thng bo v xung nhp c th pht hin li ca b dao ng chnh bn ngoi (thng l thch anh) v t ng chuyn sang dng b dao ng ni RC 8MHz.
1.2.3 Tnh bo mt
Mt trong nhng yu cu khc khe khc ca thit k hin i l nhu cu bo mt m chng trnh ngn chn sao chp tri php phn mm. B nh Flash ca STM32 c th c kha chng truy cp c Flash thng qua cng debug. Khi tnh nng bo v c c kch hot, b nh Flash cng c bo v chng ghi ngn chn m khng tin cy c chn vo bng vector ngt. Hn na bo v ghi c th c cho php trong phn cn li ca b nh Flash. STM32 cng c mt ng h thi gian thc v mt khu vc nh d liu trn SRAM c nui nh ngun pin. Khu vc ny c mt u vo chng gi mo, c th kch hot mt s kin ngt khi c s thay i trng thi u vo ny. Ngoi ra mt s kin chng gi mo s t ng xa d liu c lu tr trn SRAM c nui bng ngun pin.
Trang 11
Author: ARMVN
www.arm.vn
Trang 12
Author: ARMVN
www.arm.vn
Trang 13
Author: ARMVN
www.arm.vn
Trang 14
Author: ARMVN
www.arm.vn
Cc ti liu hng dn k thut cho Cortex-M3 v kin trc ARMv7-M c th c ti v t website ca ARM ti www.arm.com.
Trang 15
Author: ARMVN
www.arm.vn
CPU Cortex c th thc thi hu ht cc lnh trong mt chu k n. Ging nh CPU ca ARM7 v ARM9, vic thc thi ny t c vi mt ng ng ba tng. Tuy nhin Cortex-M3 kh nng d on vic r nhnh gim thiu s ln lm rng (flush) ng ng.
Trong khi mt lnh ang c thc thi, th lnh tip theo s c gii m v lnh tip theo na s c ly v t b nh. Phng thc hot ng ny s pht huy hiu qu ti a cho m tuyn tnh (linear code), nhng khi gp phi mt r nhnh (v d cu trc lnh ifelse) th cc ng ng phi c lm rng (flush) v lm y (refill) trc khi m c th tip tc thc thi. Vi CPU ARM7 v ARM9, vic r nhnh l rt tn km v mt hiu sut m (code performance). Trong CPU Cortex c ng ng ba tng c tng cng kh nng d on r nhnh, c ngha rng khi mt lnh r nhnh c iu kin xut hin, mt thao tc ly lnh da trn suy on c thc hin, do lnh r nhnh c iu kin sn sng thc hin m khng cn chu thm mt thao tc no. Trng hp xu nht khi gp phi mt r nhnh gin tip, khi khng th thc hin vic ly lnh da trn vic suy on, do phi lm rng ng ng dn. Kin trc ng ng l cha kha dn n hiu sut tng th ca CPU Cortex, v vy khng cn bt k cn nhc, xem xt c bit no c thc hin trong m ng dng.
Trang 16
Author: ARMVN
www.arm.vn
hng phi c np vo mt tp thanh ghi trung tm, cc php tnh d liu phi c thc hin trn cc thanh ghi ny v kt qu sau c lu li trong b nh.
Do vy tt c cc hot ng ca chng trnh tp trung xung quanh tp thanh ghi ca CPU. Tp thanh ghi ny bao gm mi su thanh ghi 32-bit. Cc thanh ghi R0-R12 l cc thanh ghi n gin, c th c dng cha cc bin ca chng trnh. Cc thanh ghi R13-R15 c chc nng c bit trong CPU Cortex. Thanh ghi R13 c dng nh l con tr ngn xp (stack pointer). Thanh ghi ny c chia thnh nhm (banked), cho php CPU Cortex c hai ch hot ng, mi ch c khng gian ngn xp ring bit. c im ny thng c h iu hnh thi gian thc (Real Time Operating System) s dng c th chy m h thng ca mnh trong mt ch bo v. Trong CPU Cortex c hai ngn xp c gi l main stack v process stack. Thanh ghi R14 tip theo c gi l thanh ghi lin kt (link register). Thanh ghi ny c s dng lu tr cc a ch tr v khi mt cuc gi th tc (call a procedure) c thc hin. iu ny cho php CPU Cortex thc hin rt nhanh vic nhp v thot khi mt th tc (fast entry and exit to a procedure). Nu chng trnh ca bn gi su vo nhiu lp chng trnh con, trnh bin dch s t ng lu R14 trn ngn xp (stack). Thanh ghi cui cng R15 l b m chng trnh (Program Counter); n l mt phn ca tp thanh ghi trung tm, n c th c c v thao tc ging nh bt k thanh ghi khc.
Trang 17
Author: ARMVN
www.arm.vn
Hnh 2.4. Thanh ghi trng thi chng trnh ca CPU Cortex
Thanh ghi xPSR cng c th c truy cp thng qua ba bit hiu c bit (special alias names) cho php truy cp vo cc bit trong xPSR. Nm bit u l nhng c m iu kin v c gn bit hiu (aliased) nh thanh ghi trng thi chng trnh ng dng. Bn c N, Z, C, V (Negative, Zero, Carry v Overflow) s c thit lp v xa ty thuc vo kt qu ca mt lnh x l d liu. Bit Q l c s dng bi cc lnh ton hc DPS ch ra rng mt bin t gi tr ti a hoc gi tr ti thiu ca n. Ging nh tp lnh ARM 32bit, cc lnh Thumb-2 ch c thc hin nu m iu kin ca lnh ph hp vi trng thi ca cc c trong thanh ghi trng thi chng trnh ng dng (Application Program Status Register). Nu m iu kin ca lnh khng ph hp, th lnh i ngang qua ng ng nh l mt lnh NOP (lnh ny khng
Trang 18
Author: ARMVN
www.arm.vn
lm g c). iu ny m bo rng cc lnh i qua ng ng mt cch trn tru v gim thiu lm rng ng ng. Trong CPU Cortex, k thut ny c m rng vi thanh ghi trng thi chng trnh thc thi. y l mt bit hiu ca bit cc bit t 8-26 ca xPSR. N gm ba trng: trng "If then", trng "interrupt continuable instruction"v trng lnh Thumb. Lnh Thumb-2 c mt phng php hiu qu khi thc hin cc khi lnh nh 'if then'. Khi mt kim tra iu kin l ng, n c th thit lp mt gi tr trong vng IT, bo cho CPU thc thi ln bn lnh. Nu vic kim tra iu kin l sai, cc lnh ny s i ngang qua ng ng nh l mt lnh NOP. V vy, mt dng lnh C in hnh s c m ho nh sau:
If (r0 ==0) CMP r0,#0 ITTEE EQ Then r0 = *r1 +2; LDR r0,[r1] ADDr0,#2 ;compare r0 to 0 ;if true execute the next two instructions ;load contents of memory location into r0 ;add 2
Hu ht cc lnh Thumb-2 thc thi trong mt chu k n, mt s khc (nh lnh load v store) cn nhiu chu k. V vy, CPU Cortex c th c mt thi gian p ng ngt xc nh, cc lnh cn nhiu chu k thc thi phi c ngt. Khi mt lnh c chm dt sm, vng ICI (Interrupt Continuable
Instruction) trong thanh ghi xPSR s lu li s cc thanh ghi tip theo c dng trong lnh load hoc store nhiu d liu cng lc. V vy, mt khi ngt c phc v, lnh load/store b ngt trc c th tip tc c thc hin. Trng Thumb cui cng c tha hng t phin bn CPU ARM trc . Trng ny ch ra nu tp lnh ARM hoc Thumb ang c thc hin bi CPU. Trong Cortex-M3 bit ny lun lun c thit lp mc 1 (tc l tp lnh ang c thc thi l tp lnh Thumb). Cui cng, trng trng thi ngt cha thng tin v yu cu ngt c u tin trc (pre-empted).
Trang 19
Author: ARMVN
www.arm.vn
dng h iu hnh thc hnh thi gian. B x l Cortex c hai ch hot ng: ch Thread v ch Handler. CPU s chy ch Thread trong khi n ang thc thi ch nn khng c ngt xy ra v s chuyn sang ch Handler khi n ang thc thi cc ngt c bit (exceptions). Ngoi ra, CPU Cortex c th thc thi m trong ch c quyn hoc khng c quyn (privileged or non-privileged mode). Trong ch c quyn, CPU c quyn truy cp tt c cc lnh. Trong ch khng co c quyn, mt s lnh b cm truy cp (nh lnh MRS v MSR cho php truy cp vo xPSR v cc trng ca n). Ngoi ra, vic cp cc thanh ghi iu khin h thng trong b vi x l Cortex cng b cm. Cch s dng ngn xp (stack) cng c th c cu hnh. Ngn xp chnh (main stack-R13) c th c s dng bi c hai ch Thread v Handler. Ch Handler c th c cu hnh s dng ngn xp qu trnh (process stack-R13 banked register).
Trang 20
Author: ARMVN
www.arm.vn
Sau khi reset, b x l Cortex s chy trong cu hnh phng (flat configuration). C hai ch Thread v Handler c thc thi trong ch c quyn (privileged mode), do , khng c s gii hn no v quyn truy cp vo bt k ti nguyn ca b x l. C hai ch Thread v Handler u s dng ngn xp chnh. bt u thc hin, b x l Cortex n gin ch cn vector reset v a ch bt u ca ngn xp c cu hnh trc khi bn c th bt u thc thi chng trnh ng dng C ca bn. Tuy nhin, nu bn ang s dng mt h iu hnh thi gian thc (RTOS) hoc ang pht trin mt ng dng i hi khc khe v an ton, chip c th c s dng trong ch cu hnh nng cao, ni ch Handler (exceptions v RTOS) chy trong ch c quyn v s dng ngn xp chnh (main stack), trong khi m ng dng chy trong ch Thread v khng c c quyn truy cp v s dng ngn xp qu trnh (process stack). Bng cch ny m h thng v m ng dng c phn vng v cc li trong m ng dng s khng lm cho RTOS sp . 2.3.4 Tp lnh Thumb-2 Cc CPU ARM7 v ARM9 c th thc thi hai tp lnh: ARM 32-bit v Thumb 16-bit. iu ny cho php ngi pht trin ti u ho chng trnh ca mnh bng cch la chn tp lnh no c s dng cho th tc khc nhau: lnh 32-bit tng tc x l v lnh 16-bit nn m chng trnh. CPU Cortex c thit k thc thi tp lnh Thumb-2, l mt s pha trn ca lnh 16-bit v 32-bit. Tp lnh thumb-2 ci tin 26% mt m so vi tp lnh ARM 32-bit v 25% hiu sut so vi tp lnh Thumb 16-bit. Tp lnh Thumb2 c mt s lnh nhn c ci tin, c th thc hin trong mt chu k n v kh nng thc hin php chia bng phn cng v ch mt t 2-7 chu k.
Trang 21
Author: ARMVN
www.arm.vn
im chun b x l Cortex (Cortex processor benchmark) cho mt mc thc hin l 1,25 DMIPS/MHz, cao hn so vi ARM7 (0.95 DMIPS/MHz vi
tp lnh ARM v 0.74 DMIPS/MHz vi tp lnh Thumb) v ARM9 ().
Tp lnh Thumb-2 c: cc lnh r nhnh c ci tin bao gm vic kim tra v so snh, cc khi thc thi c iu kin if/then, th t byte thao tc d liu, cc lnh trch byte v half word. CPU Cortex c mt tp lnh phong ph c thit k c bit cho trnh bin dch C. Mt chng trnh Cortex-M3 in hnh s c vit hon ton bng ANSI C, vi ti thiu cc t kho non-ANSI v ch c bng vc t ngt c vit bng Assembler. 2.3.5 Bn b nh (Memory Map) B x l Cortex-M3 l mt li vi iu khin c tiu chun ha, nh vy n c mt bn b nh cng c xc nh. Mc d c nhiu bus ni, bn b nh ny l mt khng gian a ch 4 Gbyte tuyn tnh. Bn b nh ny l chung cho tt c cc thit b da trn li Cortex.
Trang 22
Author: ARMVN
www.arm.vn
Mt Gbyte b nh u tin c chia u cho mt vng m (code region) v mt vng SRAM (SRAM region). Khng gian m c ti u ha thc thi t bus I-Code. Tng t, SRAM c ni n bus D-Code. Mc d m c th c np v thc thi t SRAM, cc lnh s c ly bng cch s dng bus h thng, v vy phi chu thm mt trng thi ch (an extra wait state). Tc l m chy trn SRAM s chm hn so vi t b nh Flash trn chip (on-chip) nm trong vng m. Vng 0,5 Gbyte tip theo ca b nh l vng ngoi vi trn chip, tt c thit b ngoi vi c cung cp bi nh sn xut vi iu khin s c t ti vng ny. Vng 1 Mbyte u tin gm c SRAM (mu vng nht) v vng ngoi vi (mu hng nht) c nh a ch theo bit, s dng mt k thut c gi l di bit (bit banding). T tt c SRAM v cc thit b ngoi vi ngi dng (user peripherals) trn STM32 c t ti vng ny, v tt c cc v tr b nh ca nhng vng ny trn STM32 u c th c thao tc theo word-wide hoc bitwise. Khng gian a ch 2 Gbyte tip theo c phn
Trang 23
Author: ARMVN
www.arm.vn
cho b nh ngoi - nh x SRAM v thit b ngoi vi (external RAM v external Device). Vng 0,5 Gbyte cui cng c phn cho cc thit b ngoi vi bn trong ca b x l Cortex v mt khu vc dnh cho cc ci tin trong tng lai ca nh sn xut chip cho b x l Cortex. Tt c cc thanh ghi ca b x l Cortex c t v tr c nh cho tt c vi iu khin da trn li Cortex. iu ny cho php m chng trnh d dng c chuyn gia cc bin th STM32 khc nhau v cc vi iu khin da trn li Cortex ca cc nh sn xut chip khc. 2.3.6 Truy cp b nh khng xp hng (Unaligned Memory Accesses) Tp lnh ARM7 v ARM9 c kh nng truy cp cc bin c du v khng du c kch thc byte, half word (thng l 2byte) v word (thng l 4byte). iu ny cho php CPU h tr cc bin s nguyn m khng cn n th vin phn mm h tr, thng c yu cu i vi vi iu khin 8 v 16-bit. Tuy nhin, cc phin bn CPU ARM trc gp bt li ch, n ch c th truy cp d liu kch thc l word hoc half word. iu ny hn ch kh nng ca trnh lin kt ca trnh bin dch (compiler linker) trong vic ng gi d liu vo SRAM v nh vy mt s SRAM s b lng ph (Vic lng ph ny c th ln n 25% ty thuc vo s kt hp ca cc bin c s dng).
Hnh 2.7. Kh nng truy cp b nh khng xp hng ca b x l Cortex-M3 so vi cc phin bn CPU ARM trc
B x l Cortex-M3 c th truy cp b nh khng xp hng, vic m bo rng SRAM c s dng mt cch hiu qu.
Trang 24
Author: ARMVN
www.arm.vn
CPU Cortex c cc ch nh a ch cho word, half word v byte, nhng c th truy cp b nh khng xp hng (unaligned memory). iu ny cho php trnh lin kt ca trnh bin dch t do sp xp d liu chng trnh trong b nh. Vic b sung h tr tnh nng di bit (bit banding) vo CPU Cortex cho php cc c chng trnh c ng gi vo mt bin word hoc half-word hn l s dng mt byte cho mi c. 2.3.7 Di Bit (Bit Banding) Cc phin bn CPU ARM7 v ARM9 trc ch c th thc hin thao tc bit trn b nh SRAM v vng nh thit b ngoi vi bng cch dng cc php ton AND v OR. iu ny i hi thao tc c sa i ghi (READ MODIFY WRITE operation), thao tc ny s tn nhiu chu k thc hin thit lp v xo cc bit ring bit v cn nhiu khng gian m cho mi bit.
Hnh 2.8. Thao tc c sa i ghi ca CPU ARM7 v ARM9 v k thut di Bit ca b x l Cortex-M3
K thut di Bit cho php b x l Cortex-M3 thao tc cc bit trong khi vn gi c s lng bng bn dn mc ti thiu. khc phc nhng hn ch trong cc thao tc bit CPU ARM7 v ARM9, c th a ra cc lnh chuyn dng thit lp hoc xo bit, hoc mt b x l Boolean y , nhng iu ny s lm tng kch thc v s phc tp ca CPU Cortex. Thay vo , mt k thut gi l di bit cho php thao tc bit trc tip trn cc phn khng gian b nh ca cc thit b ngoi vi v SRAM, m
Trang 25
Author: ARMVN
www.arm.vn
khng s cn bt k lnh c bit no. Cc khu vc nh a ch bit ca bn b nh Cortex bao gm vng bit band (ln n 1Mbyte b nh thc hoc cc thanh ghi ngoi vi) v vng bit hiu bit band (bit band Alias region) chim n 32Mbyte ca bn b nh. Di Bit hot ng bng cch nh x mi bit trong vng bit band ti mt a ch word trong vng Alias. V vy, bng cch thit lp v xo a ch word c t bit hiu (aliased word address) chng ta c th thit lp v xo cc bit trong b nh thc.
Di Bit c h tr trn 1Mb u tin ca khu vc SRAM v ngoi vi . N bao gm tt c cc ti nguyn ca STM32. K thut Bit Banding cho php thc hin thao tc bit ring l m khng cn bt k lnh c bit no, iu ny gi cho kch thc tng th ca li Cortex nh nht c th. Trong thc t, chng ta cn phi tnh ton a ch ca cc word nm trong vng Bit Band Alias cho mt v tr b nh nht nh trong khng gian b nh ca thit b ngoi vi hoc SRAM. Cng thc tnh ton alias address nh sau: a ch trong khu vc Bit Band Alias = Bit band alias base address + bit word offset bit word offset = Byte offset from bit band base x 0x20 + bit number x 4
Trang 26
Author: ARMVN
www.arm.vn
Cho mt v d thc t, thanh ghi d liu u ra GPIO (General Purpose I/O) c ghi vo thit lp v xo cc ng I/O ring bit. a ch vt l ca thanh ghi u ra ca port B l 0x40010C0C. Trong v d ny, chng ta mun c th thit lp v xo 8 bit ca word ny bng cch s dng cng thc trn. Word address Peripheral bit band base Peripheral bit band Alias base Byte offset from bit band base Bit word offset Bit Alias address cc dng lnh C nh sau : #define PB8 (*((volatile unsigned long*)0x422181A0)) // Port B bit 8 = 0x40010C0C = 0x40000000 = 0x42000000 = 0x40010c0c 0x40000000 = 10c0c = (0x10c0c x 0x20) +(8x4) = 0x2181A0 = 0x42000000 + 0x2181A0 = 0x422181A0
M trn c bin dch ra ngn ng assembly nh sau: MOVS LDR STR Tt LED: PB8 = 0; // led off r0,#0x01 r1,[pc,#104] r0,[r1,#0x00]
C hai thao tc thit lp v xo mt ba lnh 16-bit v vi STM32 chy tn s 72 MHz cc lnh ny c thc hin trong 80nsec. Bt k mt word trong khu vc bit band ca thit b ngoi vi v SRAM c th c nh a ch trc tip ton word (word-wide), v vy c th thc hin vic thit lp v xo bng cch s dng phng php truyn thng vi cc lnh AND v OR:
Trang 27
Author: ARMVN
www.arm.vn
GPIOBODR |= 0x00000100; //LED on LDR r0,[pc,#68] ADDS r0,r0,#0x08 LDR r0,[r0,#0x00] ORR r0,r0,#0x100 LDR r1,[pc,#64] STR r0,[r1,#0xC0C] GPIOBODR &= !0x00000100; LDR r0,[pc,#40] ADDS r0,r0,#0x08 LDR r0,[r0,#0x00] MOVS r0,#0x00 LDR r1,[pc,#40] STR r0,[r1,#0xC0C] //LED off
Trng hp ny mi thao tc thit lp v xo s ly cc php ton hn hp gia 16 v 32-bit, iu ny phi mt ti thiu 14 byte cho tng php ton v cng mt tn s 72MHz s mt ti thiu l 180 nSec. Nu xem xt tc ng ca di bit trn mt ng dng nhng in hnh th vic thit lp v xa nhiu bit trong cc thanh ghi ngoi vi v s dng semaphores (mt dng nh c dng lp trnh trong mi trng h iu hnh) v c trong SRAM, r rng k thut bit band s tit kim ng k kch thc m v thi gian thc hin.
2.4 B x l Cortex
B x l Cortex c to thnh t CPU Cortex kt hp vi nhiu thit b ngoi vi nh Bus, system timer 2.4.1 Bus B vi x l Cortex-M3 c thit k da trn kin trc Harvard vi bus m v bus d liu ring bit . Chng c gi l cc bus Icode v Dcode. C hai bus u c th truy cp m v d liu trong phm vi b nh t 0x00000000 0x1FFFFFFF. Mt bus h thng b sung c s dng truy cp vo khng gian iu khin h thng Cortex trong phm vi 0x20000000 0xDFFFFFFF v 0xE0100000 0xFFFFFFFF. H thng g li trn chip ca Cortex c thm mt cu trc bus c gi l bus ngoi vi ring.
Trang 28
Author: ARMVN
www.arm.vn
2.4.2 Ma trn Bus Bus h thng v bus d liu c kt ni vi vi iu khin bn ngoi thng qua mt tp cc bus tc cao c sp xp nh mt ma trn bus. N cho php mt s ng dn song song gia bus Cortex v cc bus ch (bus master) khc bn ngoi nh DMA n cc ngun ti nguyn trn chip nh SRAM v cc thit b ngoi vi. Nu hai bus ch (v d CPU Cortex v mt knh DMA) c gng truy cp vo cng mt thit b ngoi vi, mt b phn x ni s gii quyt xung t v cho truy cp bus vo ngoi vi c mc u tin cao nht. Tuy nhin, trong STM32 khi DMA c thit k lm vic ha hp vi CPU Cortex. 2.4.3 Timer h thng (System timer) Li Cortex c mt b m xung 24-bit, vi tnh nng t ng np li (auto reload) gi tr b m v to s kin ngt khi m xung zero. N c to ra vi dng cung cp mt b m thi gian chun cho tt c vi iu khin da trn Cortex. ng h SysTick c s dng cung cp mt nhp p h thng cho mt RTOS, hoc to ra mt ngt c tnh chu k phc v cho cc tc v c lp lch. Thanh ghi trng thi v iu khin ca SysTick trong n v khng gian iu khin h thng Cortex-M3 cho php chn cc ngun xung clock cho SysTick. Bng cch thit lp bit CLKSOURCE, ng h SysTick s chy tn s ng bng tn s hot ng ca CPU. Khi bit ny c xa, SysTick s chy tn s bng 1/8 CPU.
Trang 29
Author: ARMVN
www.arm.vn
ng h SysTick c ba thanh ghi. Gi tr hin ti v gi tr ti (current value v reload value) nn c khi to vi chu k m. Thanh ghi trng thi v iu khin c mt bit cho php (ENABLE bit) bt u chy b m thi gian v mt bit TICKINT cho php tn hiu ngt. Trong phn tip theo chng ta s xem xt c cu ngt ca Cortex v s dng SysTick to ra mt ngt ngoi l (exception) u tin trn STM32. 2.4.4 X l ngt (Interrupt Handling) Mt trong nhng ci tin quan trng ca li Cortex so vi cc CPU ARM trc l cu trc ngt ca n v x l cc ngt ngoi l (exception handling). CPU ARM7 v ARM9 c hai ng ngt: ngt nhanh (fast interrupt-FIQ) v ngt a dng (general purpose interrupt hay cn gi l interrupt request-RIQ). Hai ng tn hiu ngt ny phc v tt c cc ngun ngt bn trong mt vi iu khin, trong khi k thut c s dng l nh nhau, nhng vic thc hin li khc bit gia cc nh sn xut chip. C cu ngt ca ARM7 v ARM9 gp phi hai vn . Trc ht n khng phi l xc nh; thi gian thc hin vic chm dt hay hy b mt lnh ang thc thi khi xy ra ngt l khng xc nh. iu ny c th khng l vn tr ngi cho nhiu ng dng, nhng n l mt vn ln trong iu khin thi gian thc. Th hai, c cu ngt ca ARM7 v ARM9 khng h tr ngt lng nhau (nested interrupts); cn c s h tr ca phn mm: s dng macro Assembler hoc mt RTOS. Mt trong nhng tiu ch quan trng ca li Cortex l khc phc nhng hn ch ny v cung cp mt cu trc ngt chun cc k nhanh chng v xc nh (extremely fast and deterministic). 2.4.5 B iu khin vector ngt lng nhau (Nested Vector Interrupt Controller) NVIC (Nested Vector Interrupt Controller) l mt n v tiu chun bn trong li Cortex. iu ny c ngha l tt c cc vi iu khin da trn li Cortex s c cng mt cu trc ngt, bt k nh sn xut chip l ST, Atmel, Luminary
Trang 30
Author: ARMVN
www.arm.vn
hoc NXP... V vy, m ng dng v h iu hnh c th d dng c chuyn t vi iu khin ny sang vi iu khin khc v lp trnh vin khc khng cn phi tm hiu mt tp cc thanh ghi hon ton mi. NVIC cng c thit k c mt tr khi p ng ngt rt thp. y l mt c im ca chnh bn thn b NVIC v ca tp lnh Thumb-2, n cho php thc thi cc lnh nhiu chu k (multi-cycle instructions) nh lnh ti v lu tr nhiu d liu ( load and store multiple instruction) c th c ngt khi ang thc thi. Do tr khi p ng ngt l xc nh, vi nhiu c im x l ngt tin tin, n h tr rt tt cho cc ng dng thi gian thc. Nh tn gi ca n, NVIC c thit k h tr cc ngt lng nhau (nested interrupts) v trn STM32 c 16 cp u tin ngt. Cu trc ngt NVIC c thit k hon ton lp trnh bng ANSI C v khng cn bt k macro Assembler hoc cc ch dn (directives) nonANSI.
Mc d NVIC l mt n v t chun bn trong li Cortex, gi cho s bng bn dn mc ti thiu, s ng tn hiu ngt i vo NVIC c th cu hnh khi vi iu khin c thit k. NVIC c mt ngt khng che mt n (nonmaskable interrupt) v hn 240 ng tn hiu ngt bn ngoi v c th c kt ni vi ngoi vi ngi dng. Ngoi ra cn c thm 15 ngun ngt bn trong li Cortex, c s dng x l cc ngt ni ngoi l trong li Cortex. B
Trang 31
Author: ARMVN
www.arm.vn
NVIC ca STM32 c tng hp vi ti a l 43 ng ngt che mt n (maskable interrupt lines). 2.4.5.1 Phng php nhp v thot khi mt ngoi l ca NVIC (NVIC Operation Exception Entry And Exit) Khi mt ngt c sinh ra bi mt thit b ngoi vi, NVIC s kch khi CPU Cortex phc v ngt. Khi CPU Cortex i vo ch ngt ca n, n s y mt tp cc thanh ghi vo vng ngn xp (stack). Thao tc ny c thc hin trong vi chng trnh (microcode), v vy khng cn vit thm bt k lnh no trong m ng dng. Trong khi khung ngn xp (stack frame) ang c lu tr, a ch bt u ca trnh dch v ngt c ly v trn bus Icode (instruction bus). V vy, thi gian t lc ngt c sinh ra cho ti khi lnh u tin ca trnh dch v ngt c thc thi ch c 12 chu k.
Stack frame bao gm thanh ghi trng thi chng trnh (Program Status Register), thanh ghi b m chng trnh (program counter) v thanh ghi lin kt (link register). Stack frame dng lu ng cnh m CPU Cortex ang chy. Cc thanh ghi t R0 - R3 cng c lu. Trong chun giao din nh phn ARM (ARM binary interface standard) cc thanh ghi ny c s dng truyn tham s, do thao tc lu tr cc thanh ghi ny s cung cp cho chng ta mt b thanh ghi sn sng c s dng bi trnh phc v ngt (Interrupt
Trang 32
Author: ARMVN
www.arm.vn
Service Routine-ISR). Thanh ghi cui cng cng c lu l R12; thanh ghi ny c s dng bi bt k m chng trnh no ang chy khi mt cuc gi hm c thc hin. V d, nu bn cho php tnh nng kim tra ngn xp (stack) trong trnh bin dch, m chng trnh c thm vo khi bin dch ra s s dng R12 nu n cn mt thanh ghi CPU. Khi kt thc qu trnh phc v ngt, khung ngn xp c khi phc t ng bi vi chng trnh (microcode), song song vi thao tc th a ch tr v c ly v, chng trnh nn c th tip tc thc hin ch sau 12 chu k.
2.4.5.2 Cc ch x l ngt cao cp (Advanced Interrupt Handling Modes) Vi kh nng x l mt ngt n rt nhanh, NVIC c thit k x l hiu qu nhiu ngt trong mt ng dng i hi khc khe tnh thi gian thc. NVIC c mt s phng php x l thng minh nhiu ngun ngt, sao cho tr gia cc ngt l ti thiu v m bo rng cc ngt c mc u tin cao nht s c phc v u tin. 2.4.5.2.1 Quyn u tin ngt (Interrupt Pre-emption) NVIC c thit k cho php cc ngt c mc u tin cao s dnh quyn u (pre-empt) so vi mt ngt c mc u tin thp hn ang chy. Trong trng hp ny ngt ang chy s b dng v mt khung ngn xp mi (new stack frame) c lu li, thao tc ny ch mt 12 chu k sau ngt c mc u tin cao hn s chy. Khi ngt c mc u tin cao thc hin xong, d liu lu trn
Trang 33
Author: ARMVN
www.arm.vn
ngn xp trc s c t ng ly ra (automatically POPed) v ngt u tin thp hn c th tip tc thc hin. 2.4.5.2.2 K thut Tail Chaining trong NVIC Nu mt ngt c mc u tin cao ang chy v ng thi mt ngt c mc u tin thp hn cgn c kch hot, NVIC s dng mt phng php gi l Tail Chaining m bo thi gian tr l ti thiu gia cc ln phc v ngt. Nu hai ngt c nng ln, ngt c mc u tin cao nht s c phc trc v s bt u thc hin ch sau 12 chu k xung nhp k t lc xut hin ngt. Tuy nhin, khi n cui trnh phc v ngt CPU Cortex khng tr v chng trnh ng dng nn, v vy m stack frame ca ngt ny khng c khi phc, thay vo ch c a ch ca hm phc v ngt c mc u tin cao nht k tip c ly v.
iu ny ch mt 6 chu k xung nhp v sau trnh phc v ngt k tip c th bt u c thc thi. Vo cui cc ngt ang ch, ngn xp c khi phc v a ch tr v c ly, tip chng trnh ng dng nn c th bt u thc thi ch trong 12 chu k xung nhp. Nu mt ngt c mc u tin thp xut hin trong khi mt ngt khc ang thc thi chun b thot khi trnh phc v ngt, thao tc POP (ly d liu t ngn xp) s b b qua v con tr stack s c cun v gi tr ban u c th tip tc lu tr stack frame ca ngt mi xut hin, s c mt tr 6 chu k xung nhp cho ti khi a ch ca ISR mi c ly v. iu ny to ra mt tr t 7-18 chu k xung nhp trc khi trnh phc v ngt mi c th bt u c thc hin.
Trang 34
Author: ARMVN
www.arm.vn
Trong mt h thng thi gian thc thng xut hin tnh hung, trong khi mt ngt c mc u tin thp ang c phc v, th ch c mt ngt c mc u tin cao hn xut hin. Nu tnh hung ny xy ra trong qu trnh PUSH d liu ln ngn xp, NVIC s chuyn sang phc v ngt u tin cao hn. Vic PUSH d liu ln ngn xp c tip tc v s c ti thiu 6 chu k xung nhp ti thi im ngt u tin cao hn xut hin, cho ti khi a ch ca ISR mi c ly v.
Hnh 2.16. p ng thi gian khi ngt u tin cao n sau ca Cortex-M3
Sau khi ngt u tin cao hn thc hin xong, ngt u tin thp ban u s c ni ui (tail chain) v bt u thc hin sau 6 chu k xung nhp. 2.4.5.3 Cu hnh v s dng NVIC s dng NVIC cn phi qua ba bc cu hnh. u tin cu hnh bng vector cho cc ngun ngt m bn mun s dng. Tip theo cu hnh cc thanh ghi NVIC cho php v thit lp cc mc u tin ca cc ngt trong NVIC v cui cng cn phi cu hnh cc thit b ngoi vi v cho php ngt tng ng. 2.4.5.3.1 Bng vector ngt (Exception Vector Table) Bng vector ngt ca Cortex bt u di cng ca bng a ch. Tuy nhin bng vector bt u ti a ch 0x00000004 thay v l 0x00000000 nh ARM7
Trang 35
Author: ARMVN
www.arm.vn
Mi vector ngt c rng l bn byte v gi a ch bt u ca trnh phc v ngt tng ng, 15 vector ngt u tin l cc ngt c bit ch xy ra trong li Cortex, bao gm reset vector, non-maskable interrupt, qun l fault v error, debug exceptions v ngt timer ca SysTick. Tp lnh Thumb-2 cng bao gm lnh gi dch v h thng (system service call), khi c gi, n s to ra mt ngt c bit. Cc ngt ngoi vi ngi dng bt u t vector 16, c nh ngha bi nh sn xut v c lin kt n thit b ngoi vi. Trong phn mm, bng vector thng c gi trong chng trnh khi ng bng cch nh v cc a ch trnh phc v ngt ti a ch nn ca b nh.
AREA EXPORT __Vectors DCD DCD DCD DCD DCD DCD DCD DCD DCD DCD DCD RESET, DATA, READONLY __Vectors
__initial_sp ; Top of Stack Reset_Handler ; Reset Handler NMI_Handler ; NMI Handler HardFault_Handler ; Hard Fault Handler MemManage_Handler ; MPU Fault Handler BusFault_Handler ; Bus Fault Handler UsageFault_Handler ; Usage Fault Handler 0 ; Reserved 0 ; Reserved 0 ; Reserved 0 ; Reserved
Trang 36
Author: ARMVN
www.arm.vn
; SVCall Handler ;Debug Monitor Handler ; Reserved ; PendSV Handler ; SysTick Handler
Trong trng hp ca b m thi gian SysTick, chng ta c th to ra mt trnh phc v ngt bng cch khai bo mt hm C vi tn ph hp:
void SysTick_Handler (void) { . }
Sau khi cu hnh xong bng vector ngt v nh ngha cc ISR (Interrupt Service Routine), chng ta c th cu hnh NVIC x l ngt ca timer SysTick qua hai bc: thit lp mc u tin ngt v sau cho php ngt ngun. Cc thanh ghi NVIC nm trong vng iu khin h thng ca CortexM3 v ch c th truy cp khi CPU ang chy ch c quyn (privileged mode).
Cc ngt c bit bn trong Cortex c cu hnh thng qua cc thanh ghi iu khin v thanh ghi cu hnh mc u tin ca h thng, trong khi cc thit b ngoi vi ngi dng c cu hnh bng cch s dng cc thanh ghi IRQ (Interrupt Request). Ngt ca SysTick l mt ngt c bit bn trong Cortex v c x l thng qua cc thanh ghi h thng. Mt s ngt c bit khc bn trong li Cortex lun trng thi cho php, bao gm cc ngt reset v NMI (Non-Maskable Interrupt), tuy nhin ngt ca timer h thng-SysTick li
Trang 37
Author: ARMVN
www.arm.vn
khng c kch hot bn trong NVIC. cu hnh ngt cho SysTick, chng ta cn phi cu hnh cho SysTick chy v cho php ngt bn trong SysTick:
SysTickCurrent = 0x9000; SysTickReload = 0x9000; SysTickControl = 0x07; //Start value for the sys Tick counter //Reload value //Start and enable interrupt
Mc u tin ca mi exception (ngt c bit) bn trong Cortex c th c ci t thng qua cc thanh ghi cu hnh mc u tin trong h thng. Mc u tin ca cc exception nh Reset, NMI v hard fault c c nh m bo rng li Cortex s lun lun sn sng cho mt exception c bit trc. Mi exception c mt trng 8-bit nm trong ba thanh ghi v mc u tin ca h thng. Tuy nhin STM32 ch thc hin 16 mc u tin, nh vy ch c bn bit ca trng ny c dng. Mt iu quan trng cn lu l mc u tin c thit lp bi bn bit c trng s cao nht. Mi thit b ngoi vi c iu khin bi cc khi thanh ghi IRQ. Mi ngoi vi c mt bit cho php ngt. Nhng bit nm trn hai thanh ghi cho php ngt c chiu di l 32-bit. Bn cnh cng c cc thanh ghi tng ng cm bt k mt ngun ngt. Ngoi ra NVIC cng bao gm cc thanh ghi bo ch (pending) v kch hot (active) cho php xc nh tnh trng hin ti ca mt ngun ngt.
Trang 38
Author: ARMVN
www.arm.vn
Ch : Mi ngun ngt c mt bit cho php bn trong NVIC v khi ngoi vi tng ng. C 16 thanh ghi ci t mc u tin ngt. Mi thanh ghi c chia thnh bn trng c rng l 8-bit cu hnh mc u tin, mi trng c ch nh cho mt vector ngt nht nh. STM32 ch s dng mt na ca trng ny (4-bit c trng s cao nht) thc hin 16 mc u tin ngt. Mc nh cc trng ny xc nh 16 mc u tin vi mc 0 l cao nht v 15 l thp nht. Ngoi ra c th sp sp cc trng u tin thnh cc nhm (group) v nhm con (subgroup). iu ny khng to thm bt k mc u tin no, nhng gip chng ta d qun l cc mc u tin khi chng trnh ng dng c mt s lng ln cc ngt bng cch lp trnh trng PRIGROUP trong thanh ghi iu khin reset v ngt mc ng dng.
Trng PRIGROUP gm 3-bit cho php chia trng 4-bit trong cc thanh ghi ci t mc u tin thnh cc nhm v nhm con. V d, tr gi ca PRIGROUP l 5 s to ra hai nhm, mi nhm vi 4 mc u tin. Trong chng trnh ng dng , chng ta c th xc nh mt nhm cc ngt c mc u tin cao v mt nhm c mc u tin thp. Bn trong mi nhm chng ta
Trang 39
Author: ARMVN
www.arm.vn
c th xc nh cc mc cho nhm con nh mc thp, trung bnh, cao v rt cao. Nh cp trn vic phn nhm s khng to ra thm mc u tin no nhng cung cp mt ci nhn tru tng v cu trc ngt, iu ny hu ch cho ngi lp trnh khi qun l mt s lng ln cc ngt. Vic cu hnh ngt cho mt thit b ngoi vi cng ging vi cu hnh mt exception bn trong Cortex. Trong trng hp ngt ca ADC, trc tin chng ta phi thit lp vector ngt v cung cp hm phc v ngt-ISR:
DCD ADC_IRQHandler ; void ADC_Handler(void) { }
Sau , ADC phi c khi to v cc ngt phi c cho php trong cc thit b ngoi vi v cc NVIC:
ADC1CR2 = ADC_CR2; //Switch on the ADC and continuous conversion ADC1SQR1 = sequence1; //Select number of channels in sequence conversion ADC1SQR2 = sequence2; //and select channels to convert ADC1SQR3 = sequence3; ADC1CR2 |= ADC_CR2; //Rewrite on bit ADC1CR1 = ADC_CR1; //Start regular channel group, enable ADC interrupt GPIOBCRH = 0x33333333; //Set LED pins to output NVICEnable[0] = 0x00040000; //Enable ADC interrupt NVICEnable[1] = 0x00000000;
Trang 40
Author: ARMVN
www.arm.vn
thc thi lnh WFI, li Cortex s tip tc thc hin v phc v ngt ang ch x l. Khi trnh phc v ngt-ISR kt thc, s c hai kh nng xy ra. Trc tin, CPU Cortex c th tr v t ISR ny v tip tc thc hin chng trnh ng dng nn nh bnh thng. Bng cch t bit SLEEPON EXIT trong thanh ghi iu khin h thng, li Cortex s t ng i vo ch ng mt khi ISR ny kt thc. iu ny cho php mt ng dng nng lng thp (trng thi h thng lun ch sleep khi khng c s kin no xy ra) s hon ton c iu khin bng ngt, li Cortex s c nh thc bi mt s kin (t ngt bn trong hoc bn ngoi CPU Cortex), ch cn thc thi mt on m thch hp v sau li i vo ch sleep, nh vy vi mt m chng trnh ti thiu chng ta c th qun l hiu qu nng lng ca h thng. Ngt WFE cho php li Cortex tip tc thc hin chng trnh t im m n c t vo ch sleep. N s khng nhy n v thc thi mt trnh phc v no. Mt s kin nh thc (wake-up) ch n gin n t mt thit b ngoi vi d cho n khng c kch hot nh l mt ngt bn trong NVIC. iu ny cho php mt thit b ngoi vi c th bo ng thc li Cortex v tip tc thc thi chng trnh ng dng m khng cn mt trnh phc v ngt no. Cc lnh WFI v WFE khng th gi trc tip t ngn ng C, tuy nhin thun li l trnh bin dch cho tp lnh Thumb-2 cung cp sn cc macro c th c s dng nh mt lnh C chun (inline C command): __WFI __WFE Ngoi cc ch nng lng thp SLEEPNOW v SLEEPONEXIT, li Cortex c th pht ra mt tn hiu SLEEPDEEP cho phn cn li ca h thng vi iu khin.
Trang 41
Author: ARMVN
www.arm.vn
iu ny cho php cc khi chc nng nh PLL (Phase Loop Lock) v thit b ngoi vi c th ngng hot ng, STM32 c th i vo ch nng lng thp nht ca n. 2.5.2 Khi h tr g li CoreSight Tt c cc CPU ARM u trang b h thng g li ring ca n ngay trn chip. CPU ARM7 v ARM9 CPU c ti thiu mt cng JTAG cho php mt cng c g li chun kt ni vi CPU v ti chng trnh vo b nh RAM ni hoc b nh Flash. Cng JTAG cng h tr iu khin ng c bn (thit lp chy tng bc v cc breakpoint v.v) cng nh c th xem ni dung ca cc v tr trong b nh. Ngoi ra CPU ARM7 v ARM9 cn c th cung cp mt b theo di thi gian thc (real-time trace) thng qua mt thit b ngoi vi g li c gi l ETM (embedded trace macro cell). Trong khi h thng g li ny hot ng tt, th n bc l mt s hn ch. JTAG ch c th cung cp thng tin g li cho cng c pht trin (nh Keil, IAR) khi CPU ARM dng li, do khng c kh nng cp nht thi gian thc. Ngoi ra, s lng ca breakpoints phn cng c gii hn ti hai im, mc d tp lnh ARM7 v ARM9 h tr mt lnh breakpoint, c th c chn vo m chng trnh bng cng c pht trin (gi l soft breakpoints). Tng t vi JTAG, b theo di thi gian thcETM phi c trang b bi cc nh sn xut vi chi ph b sung. Do vy ETM khng phi lc no cng c h tr. Vi li Cortex mi, ton b h thng g li gi l CoreSight c gii thiu.
Trang 42
Author: ARMVN
www.arm.vn
H thng g li Cortex CoreSight s dng giao din JTAG hoc SWD (Serial Wire Debug). CoreSight cung cp chc nng chy kim sot v theo di. N c th chy khi STM32 ang mt ch nng lng thp. y l mt bc ci tin ln v chun g li JTAG. H thng g li CoreSight c mt cng truy cp g li cho php kt ni vi vi iu khin bng cng c JTAG. Cng c g li c th kt ni bng cch s dng chun giao din JTAG 5 chn hoc giao din 2 dy ni tip. Ngoi cc tnh nng g li ca JTAG, CoreSight c cha mt theo di d liu v mt ETM. Trong thc t, c cu g li CoreSight trn STM32 cung cp mt phin bn thi gian thc c ci tin ca chun g li JTAG. H thng g li STM32 CoreSight cung cp 8 breakpoints phn cng c th c t v xa trong khi CPU Cortex ang chy. Ngoi ra b theo di Data Watch cho php bn xem cc ni dung ca cc v tr nh trong khi CPU Cortex ang chy. H thng CoreSight c th duy tr trng thi hot ng khi li Cortex i vo ch ng. Ngoi ra cc timer ca STM32 c th c tm dng khi h thng CoreSight tm dng CPU. iu ny cho php chng ta thc thi tng bc m chng trnh v gi cho timer ng b vi h thng. Vi cc lnh thc thi trn
Trang 43
Author: ARMVN
www.arm.vn
CPU Cortex, CoreSight ci thin ng k kh nng g li thi gian thc ca STM32 so vi CPU ARM7 v ARM9 trc kia, trong khi vn s dng cng mt phn cng chi ph thp.
Trang 44
Author: ARMVN
www.arm.vn
3.2 Ngun cp in
STM32 i hi mt ngun cung cp trong khong 2.0V n 3.6V. Mt b n p ni c s dng to ra ngun cung cp 1.8V cho li Cortex. STM32 c hai ngun cung cp nng lng ty chn khc. B RTC (Real Time Clock) v mt vi thanh ghi c t trong mt min nng lng ring bit, n c th c nui bi pin duy tr d liu trong khi phn cn li ca STM32 ang trong trng thi ng su (deep sleep mode). Nu thit k khng c s dng pin sao lu, th chn VBAT phi c kt ni vi VDD.
Trang 45
Author: ARMVN
www.arm.vn
Ty chn cung cp nng lng th hai c s dng cung cp cho ADC. Nu ADC c s dng, ngun in chnh VDD c gii hn trong phm vi 2.4V n 3.6V. i vi chip ng gi 100 chn, khi ADC c thm chn in p tham kho VREF+ v VREF-. Chn VREF- phi c kt ni vi VDDA v VREF+ c th thay i t 2,4V n VDDA. Tt c cc kiu ng gi chp cn li th in p tham kho c kt ni bn trong vi cc chn cung cp in p ADC . Mi ngun cung cp nng lng cn mt t chng nhiu i km.
Trang 46
Author: ARMVN
www.arm.vn
B POR (Power On Reset) v PDR (Power Down Reset) m bo x l ch chy vi mt ngun cp in n nh, v khng cn bt k mt mch reset bn ngoi.
Hnh 3.4. Phn cng ti thiu cho mt thit k thc t da trn STM32
Trang 47
Author: ARMVN
www.arm.vn
Trang 48
Author: ARMVN
www.arm.vn
Cu trc bus ni cung cp ng truyn chuyn bit dnh cho tp lnh thc thi v ma trn bus ng d liu cho nhn Cortex and b iu khin DMA truy cp ti nguyn trn vi x l.
4.1 Cu trc b nh
Bn cnh h thng bus ni a dng STM32 cn cung cp 4Gbytes khng gian b nh lin tc dnh cho lp trnh.V STM32 l l nhn vi iu khin da trn nn tng Cortex nn phi tun theo chun phn vng b nh ca Cortex.B nh c bt u t a ch 0x00000000 .On-chip SRAM bt u t a ch 0x20000000 v tt c SRAM ni u c b tr im bt u vng bit band. Vng nh thit b ngoi vi c nh x t a ch 0x40000000 v vng bit band. Cc thanh ghi iu khin ca nhn Cortex c nh x t a ch 0xE0000000.
Vng nh dnh cho flash c chia nh thnh 3 vng. Vng th nht gi l User Flash bt u t a ch 0x00000000. K tip l System Memory hay cn gi l vng nh ln. Vng ny c ln 4Kbytes thng thng s c nh sn xut ci t bootloader. Cui cng l vng nh nh bt u t a ch 0x1FFFFF80 cha thng tin cu hnh dnh cho STM32. Bootloader thng c dng ti chng trnh thng qua USART1 v cha vng User Flash.
Trang 49
Author: ARMVN
www.arm.vn
kch hot bootloader ca STM32 ngi dng phi thit lp cc chn BOOT0 v BOOT1 mc in p thp v cao tng ng. Khi sau khi STM32 c khi ng, chng trnh s t bootloader vo a ch 0x00000000 v thc thi n thay thi thc thi chng trnh ca ngi dng User Flash. giao tip vi bootloader, ST cung cp mt chng trnh chy PC, chng trnh ny c kh nng ghi, xa vng nh User Flash. Ngoi ra chng ta c th cu hnh cc chn bootpins nh x SRAM ni vo a ch 0x00000000, cho php ti xung v thc thi chng trnh ngay ti SRAM. iu ny lm tng tc ti chng trnh v hn ch s ln ghi vo Flash.
Hnh 4.1 STM32 bao gm 2 b to xung nhp ni v 2 b to xung nhp ngoi thm vo l b vng kha pha( Phase Lock Loop-PLL).
Nhn Cortex c th c cp xung nhp t b to dao ng ni v ngoi, ng thi t PLL ni. Nh trn hnh 4.1, PLL c th ly dao ng t b to dao ng tc cao ni v ngoi. C mt vn l i vi b to dao ng ni tc
Trang 50
Author: ARMVN
www.arm.vn
cao xung nhp khng hot ng chnh xc 8MHz do khi s dng cc thit b ngoi vi nh: giao tip serial hay s dng nh thi thi gian thc th nn dng b to dao ng ngoi tc cao. Tuy vy, cho d s dng b dao ng no i na th nhn Cortex lun phi s dng xung nhp to ra t b PLL. Tt c thanh ghi iu khin PLL v cu hnh bus u c b tr nhm RCC ( Reset and Clock Control).
Trang 51
Author: ARMVN
www.arm.vn
on m sau m t cch cu hnh CPU ca STM32 hot ng mc xung nhp cao nht
RCC->CR |= 0x10000; //HSE on //wait until HSE stable While(!(RCC->CR & 0x0020000)) {};
B to dao ng ngoi c th c kch hot thng qua cc thanh ghi iu khin RCC_Control. S c 1 bit trng thi c bt khi chng i vo hot ng n nh. Mt khi b to dao ng ngoi hot ng n inh, n c th c chn l u vo cho b PLL. Xung nhp ra c to bi PLL c xc nh bng cch thit lp cc bi s nguyn trong thanh ghi cu hnh RCC_PLL. Trong trng hp xung nhp u vo ca PLL l 8MHz khi cn cu hnh bi s nhn cho PLL l 9 to xung nhp 72MHz u ra. Khi b to dao ng ngoi v PLL hot ng n nh, bit iu khin trng thi s bt ln, khi dao ng c to bi PLL s c cp cho nhn CPU Cortex ca STM32.
Trang 52
Author: ARMVN
www.arm.vn
Trang 53
Author: ARMVN
www.arm.vn
//Enable clocks to the AHB,APB1 and APB2 busses AHBENR = 0x00000014; RCC->APB2ENR = 0x00005E7D; RCC->APB1ENR = 0x1AE64807; //Release peripheral reset line on APB1 and APB2 buses RCC->APB2RSTR = 0x00000000; RCC->APB1RSTR = 0x00000000;
Trang 54
Author: ARMVN
www.arm.vn
Thi gian trng thi ch ny gia b m tin x l vi b nh Flash khng tc ng n nhn Cortex CPU. Khi CPU ang thc thi cc lnh na u ca b m th cc lnh na sau ca b m s c tin x l v ti ln nhn s l ngay tip theo, iu ny lm ti u ha hiu nng x l ca Cortex CPU.
Qu trnh truyn d liu gm 4 giai on: ly mu v phn x, tnh ton a ch, truy cp ng truyn, v cui cng l hon tt. Mi giai on thc hin trong 1 chu k lnh, ring truy cp ng truyn mt 5 chu k lnh. giai
Trang 55
Author: ARMVN
www.arm.vn
on truy cp ng truyn thc cht l giai oan d liu c truyn, mi t(word) s mt 3 chu k lnh. B DMA v CPU c thit k cng lc c th hot ng m khng tranh chp ti nguyn ln nhau. Gia 2 knh DMA khc nhau, s c s u tin mc hot ng, da trn b phn x s quyt nh knh DMA c mc u tin cao hn s c ly ti nguyn trc. Nu 2 knh DMA c cng mc u tin, li ang trng thi ch truy cp ti nguyn, th knh DMA c s th t nh hn s c s dng ti nguyn trc.
B DMA c thit k cho truyn d liu tc v kch thc nh. B DMA ch s dng bus d liu khi giai on truy cp ng truyn.
B DMA c th thc hin vic phn x ti nguyn v tnh ton a ch trong khi b DMA khc ang giai on truy cp ng trun nh m t hnh trn. Ngay khi b DMA th nht kt thc vic truy cp ng truyn, b DMA 2 c th ngay lp tc s dng ng trun d liu. iu ny va lm tng tc truyn d liu, ti a ha vic s dng ti nguyn.
Trang 56
Author: ARMVN
www.arm.vn
giai on Bus Access CPU s c 3 chu k rnh. Khi chuyn d liu t vng nh sang vng nh iu ny s m bo nhn Cortex-M3 s dng 60% dung lng ca ng truyn d liu cho d b DMA vn hot ng lin tc.
Trong trng hp trao i d liu t vng nh sang vng nh mi knh DMA ch s dng ng truyn d liu giai on Bus Access v 5 chu k CPU chuyn 2 bytes d liu. Trong 1 chu k c v 1 chu k ghi, 3 chu k cn li c b tr xen k nhm gii phng ng d liu cho nhn Cortex. iu c ngha l b DMA ch s dng ti a 40% bng thng ca ng d liu. Tuy nhin giai on Bus Access hi phc tp trng hp d liu truyn gia thit b ngoi vi hoc gia ngoi vi v b nh do lin quan n AHB v APB. Trao i trn bus AHB s dng 2 chu k xung nhp ca AHB, trn bus APB s s dng 2 chu k xung nhp ca APB cng thm 2 chu k xung nhp ca AHB. Mi ln trao i d liu, b DMA s s dng bus AHB, bus APB v 1 chu k xung nhp AHB. V d chuyn d liu t bus SPI ti SRAM chng ta s s dng:
SPI n SRAM s dung DMA = SPI transfer(APB) + SRAM transfer(AHB) + free cycle(AHB) = (2 APB cycles + 2 AHB cycles) + (2 AHB cycles) + (1 AHB cycle) = (2 APB cycles) + (5 AHB cycles)
Trang 57
Author: ARMVN
www.arm.vn
* Lu : Qu trnh trn ch p dng cho cc nhn Cortex s dng ng I-bus np lnh cho nhn x l.
DMA Interrupt Control DMA Channel 1 7
Mt khi c cp ngun khi DMA s c iu khin bi 4 thanh ghi in khin. 2 thanh ghi iu khin a ch ch v ngun ca ngoi vi v vng nh. Kch thc d liu truyn v cu hnh tng quan DMA c lu trong 2 thanh ghi cn li.
DMA Channel Configuration Number of Data Peripheral Address Memory Address
Mi b DMA c 4 thanh ghi iu khin, 3 ngun tn hiu interrupt: hon tt, hon tt mt na, li.
Mi knh DMA c th c gn vi mt mc u tin: rt cao, cao, trung bnh v thp. Kch c ca d liu c truyn c th iu chnh ph hp cho ngoi vi v vng nh. V d vi b nh kch c n v d liu l 32-bit(mt 3 chu k truyn), chuyn n ngoi vi UART l 4 n v d liu 8-bit mt 35 chu k thay v 64 chu k nu chuyn tng n v d liu 8-bit ring r. Chng ta c th tng a ch ch hoc ngun trong qu trnh chuyn d liu. V d khi
Trang 58
Author: ARMVN
www.arm.vn
ly d liu t b ADC, chng ta c th tng a ch vng nh ln lu cc gi tr t ADC vo mng d liu. Trn thanh ghi iu khin c Transfer Direction Bit cho php ta cu hnh hng d liu t ngoi vi vo vng nh hay ngc li. cu hnh chuyn d liu t vng nh sang vng nh trn SRAM, ta kch hot bit 14 trn thanh ghi iu khin. Ngoi vic s dng DMA vi ch vng lp ch, chng ta c th dng ngt theo di qu trnh chuyn d liu. C ba loi ngt h tr cho DMA: hon thnh chuyn d liu, hon thnh mt na, v li. Sau khi cu hnh hon tt, chng ta kch hot Channel Enable Bit thc hin qu trnh chuyn d liu. V d sau m t qu trnh chuyn d liu gia 2 vng nh trn SRAM:
SRAM DMA SRAM
DMA_Channel1->CCR = 0x00007AC0; //cu hnh mem to mem DMA_Channel1->CPAR = (unsigned int)src_array;//a ch ngun DMA_Channel1->CMAR=(unsigned int)dst_array;//a ch ch DMA_Channel1->CNDTR=0x000A;//s lng d liu TIM2->CR1 = 1; //khi to thi gian DMA_Channel1->CCR |= 0x00000001;//kch hot qu trnh chuyn d liu While( !(DMA->ISR & 0x00000001); //ch cho n khi hon thnh TIM2->CR1 = 0; //ngng m TIM2->CNT = 0; // thit lp gi tr m bng 0 TIM2->CR1 = 1; //bt u m li for(index = 0;index < 0x000A;index++) dst_array[index]=src_array[index]; TIM2-CR1 = 0;
on m trn, ta s dng TIM2 o thi gian(tnh theo chu k) chuyn d liu t 2 vng nh kch thc 10 word. Vi DMA qu trnh chuyn tiu tn 220 chu k, vi cch s dng CPU tiu tn 536 chu k.
Trang 59
Author: ARMVN
www.arm.vn
Mi knh DMA c gn vi ngoi vi nht nh. Khi c kch hot, cc thit b ngoi vi s iu khin b DMA tng ng.
Kiu truyn d liu t b nh sang b nh thng hay c dng khi to vng nh, hay chp cc vng d liu ln. Phn ln tc v DMA hay c s dng chuyn d liu gia ngoi vi v vng nh. s dng DMA, u tin ta khi to thit b ngoi vi v kch hot ch DMA trn thit b ngoi vi , sau khi to knh DMA tng ng.
Trang 60
Author: ARMVN
www.arm.vn
Chng 5 NGOI VI
Chng ny s gii thiu cc thit b ngoi vi trn cc phin bn STM32. tin theo di, chng ti chia ra thnh 2 loi: ngoi vi a dng v ngoi vi giao tip. Tt c ngoi vi trn STM32 c thit k v da trn b DMA. Mi ngoi vi u c phn iu khin m rng nhm tit kim thi gian x l ca CPU.
Mi chn iu khin c th cu hnh nh l GPIO hoc c chc nng thay th khc. Hoc mi chn c th cng lc l ngun ngt ngoi.
Cc cng I/O c nh s t A->E v mc p tiu th 5V. Nhiu chn ngoi c th c cu hnh nh l Input/Output tng tc vi cc thit b ngoi vi ring ca ngi dng nh USART hay I2C. Thm na c th cu hnh cc chn ny nh l ngun ngt ngoi kt hp vi cng GPIO khc.
Trang 61
Author: ARMVN
www.arm.vn
GPIO Configuration Low Configuration High Input Data Output Data Bit Set/Reset Reset Configuration Lock
Mi cng GPIO u c 2 thanh ghi 32-bit iu khin. Nh vy ta c 64-bit cu hnh 16 chn ca mt cng GPIO. Nh vy mi chn ca cng GPIO s c 4 bit iu khin: 2 bit s quy nh hng ra vo d liu: input hay output, 2 bit cn li s quy nh c tnh d liu.
Configuration Mode Analog Input Input Floating(Reset State) Input Pull-up Input Pull-down Output Push-Pull Output Open-drain AF Push-pull AF Open-Drain 1 1 0 0 1 1 0 0 0 1 0 10:2MHz 1 11:50MHz 00:Reserved 01:10MHz CNF1 0 0 CNF0 0 1 00 MOD1 MOD0
Trang 62
Author: ARMVN
www.arm.vn
Sau khi cng c cu hnh, ta c th bo v cc thng s cu hnh bng cch kch hot thanh ghi bo v. Trong thanh ghi ny, mi chn trong cng u c mt bit bo v tng ng trnh cc thay i v cc 4 bit cu hnh. kch hot ch bo v, ta ghi ln lt gi tr 1,0,1 vo bit 16:
uint32_t tmp = 0x00010000; //bit 16 tmp |= GPIO_Pin; //chn cn c bo v /* Set LCKK bit */ GPIOx->LCKR = tmp; //ghi gi tr 1 vo bit 16 v chn cn bo v /* Reset LCKK bit */ GPIOx->LCKR = GPIO_Pin; //ghi gi tr 0 vo bit 16 /* Set LCKK bit */ GPIOx->LCKR = tmp; //ghi gi tr 1 vo bit 16
d dng c v ghi d liu trn cng GPIO, STM32 cung cp 2 thanh ghi Input v Output data. K thut bit banding c h tr nhm thc hin cc thao tc bit trn thanh ghi d liu. Thanh ghi 32-bit Set/Reset, vi 16 bit cao nh x ti mi chn ca cng iu khin reset khi c thit lp gi tr 1. Tng t vy 16 bit thp iu khin Set khi c gn gi tr 1. 5.1.1.1 Chc nng thay th(Alternate Function)
Trang 63
Author: ARMVN
www.arm.vn
Chc nng thay th cho php ngi dng s dng cc cng GPIO vi cc ngoi vi khc. thun tin cho thit k phn cng, mt thit b ngoi vi c th c nh x ti mt hay nhiu chn ca vi x l STM32.
EVENT CONTROL Remap&Debug I/O Config
S dng cc tnh nng thay th ca STM32 c iu khin bi cc thanh ghi Remap & Debug I/O. Mi thit b ngoi vi( USART, CAN, Timers, I2C v SPI) c 1 hoc 2 trng bit iu khin nh x ti cc chn ca vi iu khin. Mt khi cc chn c cu hnh s dng chc nng thay th, cc thanh ghi iu khin GPIO s c s dng iu khin cc chc nng thay th thay v tc v I/O. Cc thanh ghi Remap cn iu khin b JTAG. Khi h thng khi ng, cng JTAG c kch hot tuy nhin chc nng theo di d liu(data trace) vn cha khi ng. JTAG khi c th chuyn sang ch debug, xut d liu theo di ra ngoi, hoc n gin ch s dng nh cng GPIO. 5.1.1.2 Event Out Nhn Cortex c kh nng to xung nhp nh thc cc khi vi iu khin bn ngoi thot khi trng thi tit kim nng lng. Thng thng, xung nhp ny s c ni vi chn Wake up ca vi x l STM32 khc. Lnh SEV Thumb-2 khi c thc thi s to ra xung nhp Wake up ny. Thanh ghi iu khin s kin ca STM32 cu hnh chn GPI no s xut xung nhp Wake up. 5.1.2. Ngt ngoi(EXTI) B iu khin ngt ngoi c 19 ngt v kt ni vo bng vector ngt thng qua b NVIC. 16 ngt c kt ni thng qua cc chn ca cng GPIO v to ngt khi pht khi c xung ln(rasing) hoc xung (falling) hoc c hai. 3 ngt cn li c ni vi RTC alarm, USB wake up v Power voltage detect.
Trang 64
Author: ARMVN
www.arm.vn
NVIC cung cp bng vector ngt ring bit dnh cho cc ngt t 0-4, ngt RTC, ngt Power detect v ngt USB wake up. Cc ngt ngoi cn li chia lm 2 nhm 5-10, v 11-15 c cung cp thm 2 bng ngt b sung. Cc ngt ngoi rt quan trng trong qun l tiu th nng lng ca STM32. Chng c th c s dng nh thc nhn vi x l t ch STOP khi c 2 ngun to xung nhp chnh ngng hot ng. EXTI c th to ra cc ngt thot ra khi s kin Wait ca ch Interrupt v thot khi s kin Wait ca ch Event.
External Interrupt Configuration 1 Configuration 4
16 ngt ngoi c th c nh x ti bt k chn no ca vi x l thng qua 4 thanh ghi cu hnh iu khin. Mi ngt c iu khin bi trng 4 bit, on m sau m t cch cu hnh ngt cho chn GPIO
//Map the external interrupts to port pins AFIO->EXTICR[0] = 0x0000000; //Enable external interrupt sources EXTI->IMR = 0x00000001; //Enable wake up event EXTI->EMR = 0x00000000;
Trang 65
Author: ARMVN
www.arm.vn
//Select falling edge trigger souces EXTI->FTSR = 0x00000001; //Select resing edge trigger sources EXTI->RTSR = 000000000; //Enable interrupt souces in NVIC NVIC->Enable[0] = 0x00000040; NVIC->Enable[1] = 0x00000000;
5.1.3 ADC STM32 c th c 2 b chuyn i tn hiu tng t sang tn hiu s ty vo cc phin bn. B ADC c th c cung cp ngun ring t 2.4V n 3.6V. Ngun cung cp cho b ADC c th c kt ni trc tip hoc thng qua cc chn chuyn bit. B ADC c phn gii 12-bit v tn sut ly mu l 12Mhz. Vi 18 b ghp knh, trong 16 knh dnh cho cc tn hiu ngoi, 2 knh cn li dnh cho cm bin nhit v vn k ni.
5.1.3.1 Thi gian chuyn i v nhm chuyn i B ADC cho php ngi dng c th cu hnh thi gian chuyn i ring bit cho tng knh. C 8 mc thi gian chuyn i ring bit t 1.5 n 239.5 chu k.
Trang 66
Author: ARMVN
www.arm.vn
Mi b ADC c 2 ch chuyn i: thng thng(regular) v injected. ch regular cho php mt hay mt nhm cc knh kt hp vi nhau thc thi tc v chuyn i. Mt nhm knh ti a c th gm 16 knh. Th t chuyn i trong nhm c th c cu hnh bi phn mm, v trong mt chu k chuyn i ca nhm, mt knh c th c s dng nhiu ln. Chuyn i regular c th c kch hot bng s kin phn cng ca Timer hay ngt ngoi EXTI 1. Mt khi c kch hot, ch Regular c thc thi chuyn i lin tc( continuos convertion) hoc khng lin tc.
Mt nhm knh hot ng ch Regular c th lin tc thc hin qu trnh chuyn i, hoc ch chuyn i khi nhn tn hiu kch hot.
Khi mt nhm cc knh hon thnh vic chuyn i, kt qu c lu vo thanh ghi kt qu v tn hiu ngt c to. V b ADC c phn gii l 12 bit v c lu trong thanh ghi 16 bit do d liu c th c canh l tri hoc phi.
Trang 67
Author: ARMVN
www.arm.vn
B ADC1 c ring knh DMA chuyn d liu t thanh ghi kt qu sang vng nh. Vi phng php ny, d liu t kt qu chuyn i ca mt nhm cc knh ADC s c chuyn ton b ln vng nh ngay trc khi ngt c pht sinh.
ADC1 s dng DMA chuyn d liu kt qu ca mt nhm cc knh vo vng nh c khi to trn SRAM
Loi ADC th 2 l Injected ADC. Injected ADC l dy cc knh ADC, ti a l 4 knh. Injected ADC c th c kch hot bng phn mm hoc tn hiu phn cng. Khi c kch hot, Injected ADC vi mc u tin cao hn s tm ngng cc knh Regular ADC ang hot ng. Cc knh Regular ADC ch tip tc hot ng sau khi Injected ADC thc thi xong. V cu hnh hot ng ca Injected tng t nh ca Regular, tuy nhin mi knh chuyn i ca Injected c thanh ghi d liu ADC_JDRx tng ng.
Trang 68
Author: ARMVN
www.arm.vn
Tng t nh Regular ADC, d liu thanh ghi ADC_JDRx c th c canh l tri hoc phi, km theo l du nu d liu m
5.1.3.2 Analogue WatchDog Ngoi 2 ch Regular v Injected, khi ADC cn c b sung thm Analogue WatchDog. Khi ny h tr pht hin d liu tng t nm ngoi vng hot ng bnh thng ca mt knh ADC cho trc. Khi c cu hnh ngng trn v ngng di, nu tn hiu tng t u vo nm ngoi vng trn, th ngt s c pht sinh. Ngoi vic gim st tn hiu in p thng thng, Analogue Watchdog c th c dng pht hin in p khc 0 V.
Analogue Watchdog c th dng gim st mt hay nhiu knh ADC vi vng ngng c cu hnh bi ngi dng
Trang 69
Author: ARMVN
www.arm.vn
Cc thanh ghi ca khi ADC c tch ra thnh 6 nhm thanh ghi, trong cc thanh ghi Status v Control xc nh ch hot ng ca ADC.
C hai thanh ghi iu khin ADC_CR1 v ADC_CR2 cu hnh hot ng ca khi ADC.
Hai thanh ghi iu khin cu hnh hot ng ca khi ADC ADC1->CR2 = 0x005E7003; //Switch on ADC1 and enable continuous conversion ADC1->SQR1 = 0x0000; //set sequence length to one ADC1->SQR2 = 0x0000; //select conversion on channel zero ADC1->SQR3 = 0x0001; ADC1->CR2 = 0x005E7003; //rewrite on bit NVIC->Enable[0] = 0x00040000; //enable ADC interrupt NVIC->Enable[1] = 0x00000000;
hm x l ngt ADC
Void ADC_IRQHandler(void) { GPIOB->ODR =ADC1->DR << 5; //Copy ADC result to port B }
Trang 70
Author: ARMVN
www.arm.vn
5.1.3.4. Dual mode mt s phin bn, ST cung cp 2 khi ADC nhm p ng cc tc v phc tp hn
Khi hot ng ch Dual, khi ADC2 ng vai tr ph i vi ADC1. Khi kt hp ADC1 v ADC2, chng ta s c 8 ch hot ng
5.3.1.4.1. C hai khi ADC cng hot ng cng ch Regular hoc Injected
Trang 71
Author: ARMVN
www.arm.vn
Khi hot ng ch ny, cng lc khi ADC1 v ADC2 s chuyn i d liu t 2 knh khc nhau. V d trong cc ng dng cn theo di cng lc in p v cng dng.
5.3.1.4.2. C hai khi cng hot ng 2 ch Regular v Injected xen k
Nh hnh trn m t, c hai khi ADC hot ng cng mt ch ti cng thi im. Khi ch Injected c kch hot, c khi ADC1 v ADC2 tm thi ri trng thi Regular thc thi chuyn i cc knh trong ch Injected.
5.3.1.4.3. Hot ng xen k nhanh v chm Regular
ch xen k nhanh, mt knh c th lin tc chuyn i bi hai khi ADC, thi gian nh nht kch hot ln chuyn i k tip l 7 chu k xung nhp ca ADC. ch xen k chm khong cch thi gian ti thiu l 14 chu k
Trang 72
Author: ARMVN
www.arm.vn
Ban u phn cng s kch hot knh u tin trong nhm chuyn i Injected ca khi ADC1, sau s kch hot tip nhm Injected ca ADC2. C nh vy lin tc v xen k.
5.3.1.4.5. Kt hp ng b ha Regular v kch hot thay th
Nh ta thy trn, vic chuyn i ch Regular c c hai khi ADC1 v ADC2 thc thi ng thi, ng b. Khi c kch hot bi hardware, nhm Injected ca khi ADC1 c thc thi, ch Regular tm thi ngng v hot ng tr li khi tc v thuc nhm Injected hon tt.
5.3.1.4.6. Kt hp ng b ha Injected v xen k Regular
Trang 73
Author: ARMVN
www.arm.vn
Hai khi ADC1 v ADC2 hot ng ch Regular xen k nhau th c kch hot chuyn sang hot ng ch ng b Injected. Lu l: khi ch xen k Regular, c hai knh ADC1 v ADC2 c th chuyn i chung trn cng mt knh, tuy nhin khi sang ch ng b Injected, th knh c s dng ca ADC1 v ADC2 phi khc nhau. 5.1.4. B nh thi a nhim v nng cao STM32 c bn khi nh thi. Timer1 l khi nng cao dnh cho iu khin ng c. 3 khi cn li m nhim chc nng a nhim. Tt c chng u c chung kin trc, khi nng cao s c thm cc c tnh phn cng ring bit. 5.1.4.1. B nh thi a nhim Tt c cc khi nh thi u gm b m 16-bit vi thanh ghi chia tn s dao ng 16-bit(prescaler) v thanh ghi t np(auto-reload). B m ca khi nh thi c th c cu hnh m ln, m xung hay trung tnh(ln xung xen k nhau). Xung nhp cho ng h c th c la chn da trn 8 ngun khc nhau: t ng h chuyn bit c ly t ng h h thng, t xung nhp chn ra ly t khi nh thi khc, hoc t ngun xung nhp ngoi. Khi nh thi s dng cng chn ly xung nhp u vo thch hp, ngi dng c th s dng chn ETR iu khin cng chn ny.
4 khi nh thi vi cc thanh ghi 16-bit Prescaler, 16-bit Counter v Auto-reload. Xung nhp hot ng c th ly t ng h h thng, tn hiu ngoi v cc khi nh thi khc
Trang 74
Author: ARMVN
www.arm.vn
Mi khi nh thi c cung cp thm 4 knh Capture/Compare. Mi khi nh thi cn c h tr ngt v DMA.
5.1.4.1.1 Khi Capture/Compare
Mi knh Capture/Compare c iu khin bi duy nht mt thanh ghi. Chc nng ca thanh ghi ny c th thay i ty thuc cu hnh. ch Capture, thanh ghi ny c nhm cc bit m nhn thit lp lc d liu u vo v ch nh gi cc ng PWM. ch Compare, STM32 cung cp hm chun so snh v b to xung PWM.
Mi mt knh Capture/Compare u c mt thanh ghi n cu hnh ch hot ng. Bit Capture Compare Selection dng chn ch .
Mt khi Capture c bn gm c bn knh vo cu hnh b pht hin xung(Edge Detector). Khi mt xung ln(rising edge) hay xung cnh xung( falling edge) c pht hin, b m hin thi ca s c cp nht vo cc thanh ghi 16-bit Capture/Compare. Khi s kin capture xy ra b m c th c khi ng li hoc tm ngng. Mt ngt DMA c th c s dng trng hp ny.
Trang 75
Author: ARMVN
www.arm.vn
4 knh vo ca khi Capture c cc b lc d liu v pht hin xung cnh ring. Khi s kin capture c n c th c dng kch hot mt s kin DMA khc.
ch o tn hiu PWM, 2 knh Capture c dng o chu k Period v Duty ca sng PWM.
M3->CR1 TIM3->PSC TIM3->ARR = = = 0x00000000;//default 0x000000FF;//set max prescale 0x00000FFF;//set max reload count
Trang 76
Author: ARMVN
www.arm.vn
= 0x00000001;//Input IC1 mapped to TI1 |= 0x00000000;//IC1 triggers on rising edge |= 0x00000200;//Input IC2 mapped to TI1 |= 0x00000020;//IC2 triggers on falling edge = 0x00000054; //Select TI1FP1 as input, rising edge trigger //reset counter = 0x00000011;//enable capture channel = 0x00000001;//enable timer
ch PWM s dng 2 knh Capture. thi im bt u chu k PWM, b m c thit lp gi tr 0 v bt u m ln khi pht hin ra cc tn hiu cnh ln(rising edge). Khi tn hiu cnh xung c pht hin(falling edge) gi tr b m gi tr ca chu k Duty c tng thm.
5.1.4.1.4 Ch PWM
Mi khi Timer u c kh nng to cc xung nhp PWM. ch to xung PWM, gi tr Period c lu trong thanh ghi Auto Reload. Trong khi gi tr Duty c lu thanh ghi Capture/Compare. C hai kiu to xung PWM, mt l canh l(edge-aligned) v canh l gia(centre-aligned). Vi edge-aligned cnh xung ca tn hiu trng vi thi im thanh ghi reload cp nht li gi tr. Vi centre-aligned thi im thanh ghi reload cp nht li l khong gia ca chu k Duty.
Mi khi Timer u c kh nng to ra cc xung PWM vi lch chu k c th c cu hnh edge-aligned hoc centre-aligned tnh theo thi im cp nht gi tr ca thanh ghi Reload. TIM2->CR1 TIM2->PSC TIM2->ARR TIM2->CCMR1 TIM2->CCR1 TIM2->CCER TIM2->DIER TIM2->EGR TIM2->CR1 = 0x00000000;//default = 0x000000FF;//set max prescaler = 0x00000FFF;//set max reload count = 0x00000068;//set PWM mode = 0x000000FF;//Set PWM start value = 0x00000101;//Enable CH1 output = 0x00000000;//enable update interrupt = 0x00000001;//enable update = 0x00000001;//enable timer
Trang 77
Author: ARMVN
www.arm.vn
cc ch trnh by trn, ta thy xung nhp PWM c to c dng dy cc tn hiu lin tip nhau. Khi Timer cn cung cp mt ch hot ng ring cho php to duy nht mt xung PWM vi tn s, b rng xung cng vi thi gian tr c kh nng c cu hnh mt cch linh ng.
5.1.4.3 ng b ho cc b nh thi Mc d cc b nh thi hot ng hon ton c lp vi nhau, tuy nhin chng c th c ng b ha tng i mt hay ton b.
Trang 78
Author: ARMVN
www.arm.vn
Mi khi Timer 3 ng vo h tr cc xung s kin t 3 khi Timers cn li. Ngoi ra chn Capture t Timer1 v Timer2(TIFP1 v TIFP2) cng c a khi iu khin s kin ca mi Timer.
m hnh to thnh mt mng Timer, mt Timer ng vai tr Master, cc Timer cn li ng vai tr l Slave.
Trang 79
Author: ARMVN
www.arm.vn
th c ly t 3 ngun: LSI, LSE, HSE vi gi tr chia l 128. B m RTC c th to c 3 s kin: tng gi tr m, b m trn v ngt bo ng. Ngt bo ng khi gi tr b m trng vi gi tr c cu hnh trong thanh ghi Alarm.
RTC c t trong khi d phng vi ngun cung Vbat v tn hiu ngt Alarm c kt ni vi chn nhn xung EXTI17. iu c ngha khi h thng vo trng thi hot ng ca mc nng lng thp, RTC vn hot ng. V thng qua s kin Alarm, ton b h thng c th c kch hot hot ng tr li ch bnh thng.
5.2.1 SPI
H tr giao tip tc cao vi cc mch tch hp khc, STM cung cp 2 khi iu khin SPI c kh nng chy ch song cng(Full duplex) vi tc truyn d liu ln ti 18MHz. Khi SPI tc cao nm trn APB2, khi SPI
Trang 80
Author: ARMVN
www.arm.vn
tc thp nm trn APB1. Mi khi SPI c h thng thanh ghi cu hnh c lp, d liu truyn c th di dng 8-bit hoc 16-bit, th t h tr MSB hay LSB. Chng ta c th cu hnh mi khi SPI ng vai tr master hay slave.
h tr truyn d liu tc cao, mi khi SPI c 2 knh DMA dnh cho gi v nhn d liu. Thm vo l khi CRC dnh cho c truyn v nhn d liu. Khi CRC u c th h tr kim tra CRC8 v CRC16. Cc c tnh ny rt cn thit khi s dng SPI giao tip vi MMC/SD card.
Trang 81
Author: ARMVN
www.arm.vn
5.2.2 I2C
Tng t nh SPI, chun I2C cng c STM32 h tr nhm giao tip vi cc mch tch hp ngoi. Giao din I2C c th c cu hnh hot ng ch slave, master hay ng vai tr b phn x ng trong h thng multi-master. Giao din I2C h tr tc truyn chun 100kHz hay tc cao 400kHz. Ngoi ra cn h tr 7 hoc 10 bit a ch. c thit k nhm n gin ha qu trnh trao i vi 2 knh DMA cho truyn v nhn d liu. Hai ngt mt cho nhn Cortex, mt cho nh a ch v truyn nhn
Trang 82
Author: ARMVN
www.arm.vn
Thm na m bo tnh chnh xc d liu truyn, khi kim tra li d liu( PAC packet error checking) c tch hp thm vo giao din I2C cho php kim tra m CRC-8 bit. Thao tc ny c thc hin hon ton t ng bi phn cng.
5.2.3 USART
Mc d cc giao din trao i d liu dng ni tip dn dn khng cn c h tr trn my tnh, chng vn cn c s dng rt nhiu trong lnh vc nhng bi s tin ch v tnh n gin. STM32 c n 3 khi USART, mi khi c kh nng hot ng n tc 4.5Mbps. Mt khi USART nm trn APB1 vi xung nhp hot ng 72MHz, cc khi cn li nm trn APB2 hot ng xung nhp 36MHz.
Giao din USART c kh nng h tr giao tip khng ng b UARTS, modem cng nh giao tip hng ngoi v Smartcard.
Vi mch tch hp cho php chia nh tc BAUD chun thnh nhiu tc khc nhau thch hp vi nhiu kiu trao i d liu khc nhau. Mi khi USART c hai knh DMA dnh cho truyn v nhn d liu. Khi h tr giao
Trang 83
Author: ARMVN
www.arm.vn
tip dng UART, USART cung cp nhiu ch giao tip. C th trao i d liu theo kiu ch hafl-duplex trn ng truyn Tx. Khi h tr giao tip modem v giao tip c s dng iu khin lung (hardware flow control) USART cung cp thm cc tn hiu iu khin CTS v RTS.
Ngoi ra USART cn c th dng to cc giao tip ni (local interconnect bus). y l m hnh cho php nhiu vi x l trao i d liu ln nhau. USART cn c khi encoder/decoder dng cho giao tip hng ngoi vi tc h tr c th t n 1115200bps, hot ng ch hafl-duplex NRZ khi xung nhp hot ng khong t 1.4MHz cho n 2.12Mhz. thc hin giao tip vi smartcard, USART cn h tr chun ISO 7618-3.
Trang 84
Author: ARMVN
www.arm.vn
Ngi dng c th cu hnh khi USART cho cc giao tip ng b tc cao da trn 3 ng tn hiu ring bit nh SPI. Khi hot ng ch ny, khi USART s ng vai tr l SPI master v c kh nng cu hnh Clock Polarity/Phase nn hon ton c th giao tip vi cc SPI slave khc.
5.2.4 CAN
Khi iu khin CAN cung cp mt im giao tip CAN y h tr chun CAB 2.0A v 2.0B Active v Passive vi tc truyn d liu 1 Mbit/s. Ngoi ra khi CAN cn c khi m rng h tr giao tip truyn d liu dng deterministic da trn th thi gian Time-trigger CAN(TTCAN).
Trang 85
Author: ARMVN
www.arm.vn
Tn y ca CAN l bxCAN, trong bx l vit tt ca Base eXtended. Mt giao din c bn CAN ti thiu phi h tr b m n truyn v nhn d liu, trong khi cc giao din m rng cung cp nhiu b m. bxCan l s kt hp gia hai kin trc trn. bxCan c 3 b m d liu cho truyn v 2 b m nhn, cc b m ny thng c gi l mailbox(hp th). Mi mailbox c t chc nh mt FIFO hng i
Khi CAN c 3 mailbox cho truyn d liu vi nh nhn thi gian t ng cho chun TTCAN
Mt im quan trng na ca CAN l lc gi tin nhn(receive message filter). V giao thc CAN truyn d liu da trn a ch ch nhn, do gi tin s c pht trn ton b mng, ch c im no c a ch ging nh a ch nhn trn gi tin s dng gi tin . Lc gi tin gip cc im trn mng CAN trnh x l cc gi tin khng phi ca mnh. STM32 cung cp 14 b lc(14
Trang 86
Author: ARMVN
www.arm.vn
filters bank) c nh s t 0-13 cho php lc ton b cc gi tin khng cn thit. Mi b lc gm 2 thanh ghi 32-bit CAN_FxR0 v CAN_FxR1.
Mi b lc c th c cu hnh hot ng 4 ch lc c a vo 2 nhm chnh l lc theo ID hoc theo nhm ID. Ch th nht l lc da trn ID ca gi tin, nu cc gi tin no khng c ID ging hoc khng ging nh ID c cu hnh trong b lc, n s b b qua. Ch th hai cho php nhn gi tin trong cng mt nhm. Thanh ghi th nht cha ID ca gi tin, thanh ghi th hai cha mt n,quy nh cc thnh phn trn vng ID ca thanh ghi th nht m b lc da trn so snh lc hay khng lc gi tin. CAN hot ng hai ch : bnh thng truyn nhn d liu v ch khi to cu hnh thng s mng. Thm vo khi CAN c th s dng ch tit kim nng lng Sleep Mode. Khi ch Sleep Mode, ng h xung nhp cp cho CAN ngng hot ng, tuy nhin thanh ghi mailbox vn hot ng. iu ny cho php CAN c kch hot da trn cc hot ng mng. C hai ch ph khi CAN hot ng ch truyn nhn d liu thng thng. Ch Silent, khi CAN ch nhn d liu khng th truyn d liu, ngi ta hay s dng ch ny theo di mng v cc gi tin truyn trong mng. Ch Loopback cho php ton b cc gi tin chuyn c a vo ngay chnh b m nhn ca khi CAN . Ch ny dng t kim tra hot ng ca phn cng CAN v phn mm iu khin.
Trang 87
Author: ARMVN
www.arm.vn
5.2.5 USB
H tr giao tip Device USB vi tc Full Speed (12Mbps) c kh nng kt ni vi mt giao din host usb. Khi giao din ny bao gm Layer1 v Layer2 m nhn chc nng truyn vt l(phisical layer) v truyn d liu logic (data layer). Ngoi ra cn h tr y ch Suspend v Resume nhm tit kim nng lng.
Vi 8 endpoint, c th hot ng di cc ch : Control, Interrupt, Bulk hoc Isochronous. Vng m d liu 512 byte SRAM ca cc endpoint c chia s vi giao din CAN. Khi c cu hnh, ng dng s chia vng m ny thnh cc phn tng ng vi cc endpoint. Cc vng m ny m bo d liu c truyn nhn lin tc trn mi endpoint.
Trang 88
Author: ARMVN
www.arm.vn
Trang 89
Author: ARMVN
www.arm.vn
khin Clock Reset (Reset clock control module). Bn cnh , c th gim cng sut tiu th bng cch gim xung nhp hot ng ca h thng. Nu h thng khng cn hot ng tc cao, c th tt b nhn tn s PLL v STM32 c th dng xung nhp trc tip t b dao ng ngoi HSE. Hn na, c th tt lun HSE v dng xung nhp t b dao ng ni HSI. iu ny c mt bt li l ngun xung clock t HSI khng chnh xc bng HSE. Tng t, nu khng s dng khi Windowed Watchdog v ng h thi gian thc(realtime clock) khng dng ti, th tt b dao ng LSI nhm tit kim hn na cng sut tiu th.
Cng sut tiu th tc ti a khong 34mA, nhng 8MHz (9.6 DMIPS) cng sut tiu th di 1mA.
Trang 90
Author: ARMVN
www.arm.vn
6.2.1. SLEEP
Mc u tin ca hot ng cng sut thp l ch SLEEP mode. Mc nh, khi mt lnh WFE hoc WFI c thc hin b x l Cortex s tm dng cc ng h xung nhp ni v dng thc thi m ng dng. Trong ch SLEEP cc phn cn li ca STM32 vn tip tc hot ng. STM32 s thot khi SLEEP mode khi mt ngoi vi no pht sinh ngt. Khi STM32 vo SLEEP mode cng tt c ngoi vi ang hot ng v n chy 72MHz t HSE thng qua b nhn PLL, cng sut tiu th ca n vo khong 14.4mA. Tuy nhin, c th c iu chnh li STM32 cho cc ng dng cng sut thp thng qua 2 bc: th nht tt tt c ng h to xung nhp cho cc ngoi vi (tr ngoi vi nh thc b x l Cortex); th hai chuyn qua dng b dao ng ni HSI (c th chia tn s hot ng n mc di 1MHz). Khi cng sut tiu th vo khong 0.5mA.
Trang 91
Author: ARMVN
www.arm.vn
Trong ng dng cng sut thp bn nn s dng ch SLEEP mode mi khi c th, nhm tiu th ti thiu cng sut. Vn tip theo l STM32 mt bao lu thot khi ch cng sut thp v tip tc x l. Cc hnh di y cho thy thi gian nh thc Cortex CPU khi phc x l ang chy bng b dao ng RC ni HSI.
Trang 92
Author: ARMVN
www.arm.vn
STM32 c th c cu hnh vo ch cng sut thp STOP Mode bng cch thit lp bit SLEEPDEEP trong thanh ghi iu khin cng sut Cortex (the Cortex power control register) v xa bit Power Down Deep Sleep (PDDS) trong thanh ghi iu khin cng sut STM32.
Khi cu hnh cho ch STOP mode, vic thc hin lnh WFI hoc WFE s tm dng b vi x l Cortex v tt c b to dao ng ni HIS, ln ngoi HSE. Cc Flash, SRAM v thit b ngoi vi vn cn c cung cp ngun, do , trng thi ca STM32 vn c bo ton. Cng ging nh ch SLEEP, c th thot khi ch STOP bng ngt c pht ra t mt ngoi vi STM32. Tuy nhin, trong ch STOP tt c cc xung clock ngoi vi c tm dng, ngoi tr ngoi vi ngt ngoi(External Interrupt). Vic s dng cc thit b ngoi vi EXTI cho php STM32 thot khi ch STOP mode khi c s thay i trng thi trn bt k pin GPIO. Ngoi ra, EXTI c mt ng tn hiu iu khin m c th yu cu ngt v to ra ngt t s kin bo thc (Alarm) ca ng h thi gian thc. V ng h thi gian thc c b dao ng chuyn dng ca ring n (hoc l LSI hoc LSE) n c th cung cp ngt nh k nh thc STM32 t ch STOP. Mt khi STM32 vo ch STOP, tiu th in nng ca n gim mnh xung khong 24 uA thay v hng mA ch RUN. C th tit kim thm in nng bng cch t cc b iu p ni trong mt ch nng lng thp c bit, khi n vo ch STOP. Cc ch nng lng thp cho cc b iu p c chn bng cch thit lp bit LPDS (Low Power Sleep Deep) trong
Trang 93
Author: ARMVN
www.arm.vn
thanh ghi iu khin cng sut STM32. Vi thit lp ny khi STM32 vo ch STOP, tiu th in nng ca n s gim xung 14uA. Nu RTC ang c s dng, s tiu th thm 1,4 uA.
Thi gian nh thc trong ch Stop di nht l 5,5 us vi b iu p chy bnh thng v 7,3 us vi b iu p trong ch cng sut thp.
6.3 Standby
STM32 c th c cu hnh vo ch Standby bng cch thit lp bit SLEEPDEEP trong thanh ghi iu khin cng sut Cortex v thit lp bit
Trang 94
Author: ARMVN
www.arm.vn
Power Down Deep Sleep (PDDS) trong thanh ghi iu khin cng sut ca STM32. By gi, khi lnh WFI hoc WFE c thc hin, STM32 s vo ch nng lng thp nht ca n. Trong ch Standby, STM32 thc s tt. Cc iu in p ni b c tt cc b to dao ng HSE v HIS cng tt. Trong ch ny STM32 ch chim 2uA.
Chng ta c th thot khi ch Standby bng cch s dng tn hiu ngt ca khi RTC tng t nh trong ch STOP. Ngoi ra ta c th s dng chn Reset ngoi hay chn Reset t Watchdog c lp. Ch Standby c th kt thc khi c xung nhp cnh ln(rising edge) chn 0 ca Port A nu chn ny c cu hnh nh l chn c tnh nng WKUP bng cch thit lp bi EWUP thanh ghi Power v Status. Standby l ch tiu th t nng lng nht cho nn s mt nhiu thi gian h thng phc hi tr li trng thi hot ng bnh thng. Mt khong 50usec
Trang 95
Author: ARMVN
www.arm.vn
trc khi nhn Cortex khi ng li tin trnh x l lnh. Mt khi vo ch Standby, ton b d liu trn SRAM, nhn Cortex v cc thanh ghi u b mt. Khi phc hi trng thi hot ng t ch Stanby tng t nh ta khi ng li h thng.
6.4. S tiu th cng sut ca ngun d phng (Backup Region Power Consumption)
Vng nng lng d phng (Backup Region) cha pin d phng duy tr RAM v RTC trong sut thi gian cc ch cng sut thp. Vng ny tiu th khong 1,4 uA in p 3,3V.
Trang 96
Author: ARMVN
www.arm.vn
Trang 97
Author: ARMVN
www.arm.vn
STM32 c th c nhiu tn hiu iu khin a h thng v trng thi Reset. Trng thi h thng s c lu li trong thanh ghi RCC
Trang 98
Author: ARMVN
www.arm.vn
u ra ca PVD c kt ni vi 16 ng ca b ngt ngoi. Do cc ng ngt ngoi EXTI c th c cu hnh to ra ngt t tn hiu cnh ln hoc cnh xung, hoc c hai, n v PVD c th c s dng to ra mt ngt cho c thp p v qu p.
Trang 99
Author: ARMVN
www.arm.vn
Khi CSS c kch hot bng cch thit lp bit Clock Security Enable trong thanh ghi iu khin RCC.
H thng CSS c mt ng ngt c kt ni vi ngt gy (break interrupt) ca khi nh thi nng cao Timer1, m ngt c nh x vo bng vector iu khin ngt Cortex NVIC non-maskable. iu ny m bo nu dao ng chnh khng hot ng na, cc ng ra PWM ca khi nh thi nng cao s ngay lp tc c t trong trng thi an ton tin lp trnh(pre-programmed safe state) bi phn cng. iu ny m bo rng bt k phn cng no c iu khin bi cc u ra PWM ca khi nh thi tin tin s khng c php hot ng khi khng c s kim sot ca b vi x l Cortex. N c bit quan trng cho cc ng dng iu khin ng c.
7.4 Watchdogs
STM32 cha hai Watchdogs ring bit. Watchdog c lp(independent watchdog) l hon ton tch bit vi h thng STM32 chnh. N c t trong min ngun in d phng v xung nhp ca n bt ngun t dao ng ni tc thp (LSI- Low Speed Oscillator). Windowed Watchdog l mt phn ca h thng STM32 chnh v c cp xung clock thng qua ng
Trang 100
Author: ARMVN
www.arm.vn
truyn xung nhp ngoi vi s 1(PCLK1). C hai Watchdogs phi c kch hot ring bit v c th c s dng ng thi. 7.4.1 Windowed Watchdog Windowed Watchdog l mt phin bn nng cao hn ca Watchdog truyn thng trn chip. Sau khi kch hot, Watchdog s m ngc v s to ra tn hiu Reset khi gi tr ca thanh ghi thay i t 0x40 sang 0x3F tc l khi bit T6 b xa. Gi tr m ngng trn c lu trong thanh ghi cu hnh
Windowed Watchdog. Nu phn mm ng dng lm ti b m Watchdog trong khi gi tr thc ca b m Watchdog ln hn gi tr ngng m trn mt tn hiu Reset cng s c pht ra. Windowed Watchdog cung cp mt khung lm ti kh trnh m khi Watchdog mi c th c ghi vo theo lch trnh thi gian nh. iu ny cho php ngi dng m bo ng dng vn ang trong ch hot ng bnh thng xc nh.
Trang 101
Author: ARMVN
www.arm.vn
Windowed Watchdog l b m xung 6 bit, c cung cp xung clock t PCLK1 thng qua b tin chia 12 bit chia PCKL1 xung bi 4096. B tin chia c thm 4 bit kh lp trnh cho php ngi dng chia thm 1,2,4 hoc 8. Cc bt ca b tin chia c cha trong bt 6,7 ca thanh ghi iu khin. Do thi gian lp ca windowed watchdog c cho bi: Twwdg = Tpclk1x4096x2POW (WDGTB) x (reload value+1) Vi Pclk1 chy tc ti a 36MHz, thi gian timeout nh nht ca windowed watchdog l 910uSec v ln nht l 58,25mSec. Sau khi windowed watchdog c cu hnh, n c th c kch hot bng cch thit lp bit Watchdog Activation trong trong thanh ghi iu khin. Sau khi Windowed Watchdog c kch hot bng phn mm n khng th b v hiu, ngoi tr h thng ti khi ng. 7.4.2 Independent Watchdog Mc d Independent Watchdog c thit k nm trn h thng chnh, nhng n c b dao ng ring tch bit vi ngun dao ng ca h thng chnh. Independent Watchdog cng c t trong min in ap VDD , l min m vn c duy tr khi h thng trong ch STOP v STANDBY.
Trang 102
Author: ARMVN
www.arm.vn
Independent Watchdog l mt nh thi m xung 12 bit, v s pht sinh hiu lnh Reset cho h thng khi gi tr t di ngng. N c cp xung nhp t dao ng ni tc thp thng qua mt b chia 8 bit. B to dao ng LSI c mt tn s danh ngha l 32kHz, nhng trong thc t n c th thay i gia 30 KHz n 60 KHz. Independent Watchdog c khi ng bng cch, u tin thit lp thanh ghi Prescaler, khi qua b chia Prescaler dao ng s c gi tr trong khong t 4 n 256. Khong thi gian ch ti thiu cho Independent Watchdog l 0mSec v ti a ch trn 26 giy. Thi gian ch c lp trnh trc tip vo thanh ghi np li (reload register).
Cc byte ty chn trong b nh Flash khi thng tin nh c th c dng cu hnh Independent Watchdog bt u sau khi reset, hoc bng lnh phn mm. Nu theo phn mm kim sot, Independent Watchdog c th c bt u bng cch ghi 0xCCCC vo thanh ghi kha. Independent Watchdog s m xung t mt gi tr ban u 0xFFF. Gi tri 0xAAAA phi c ghi vo thanh ghi kha lm ti watchdog. iu ny lm cho gi tr np li c np vo thanh ghi m xung, lm mi gi tr m.
Trang 103
Author: ARMVN
www.arm.vn
Rt kh g li chng trnh cc dng vi iu khin nh nu Watchdog c kch hot. Ngay sau khi CPU ngng hot ng, watchdog khng th c cp nht. N s ch thi gian ti hn(timeout) v sau s pht sinh ra ngt, khi ton b h thng khi ng li xa i trng thi li cn m ngi dng cn g. Bnh thng, mt Watchdog phi c v hiu ho n khng gy ri lon cc trnh g li. Nu vy th li kh khn trong vic nh gi cu hnh thi gian kim tra ca Watchdog l ti u hay cha. Trong thanh ghi MCUDBG STM32 c th cu hnh c hai Independent Watchdog v Window Watchdog dng hot ng khi Cortex-M3 CPU nm di s kim sot ca h thng g li CoreSight. iu ny cho php ngi dng g li ngay c khi hai khi Watchdogs c kch hot.
Trang 104
Author: ARMVN
www.arm.vn
Chng 8: FLASH
B nh FLASH on-chip ca STM32 c b tr trong 3 vng chnh. u tin, vng nh FLASH chnh c thit k cha cc lnh chng trnh. y l vng nh 64 bit, cung cp s truy cp b nh hiu qu vi b m ly lnh. Vng nh ny c chia thnh tng trang 4K i vi hot ng xa v ghi chng trnh flash. B nh c bn 10.000 chu k, duy tr d liu 30 nm 85oC. Hu ht cc b nh FLASH vi iu khin ch duy tr d liu tt 25 0C, b nh FLASH ca STM32 l mt ngoi l. Bn canh vng nh chng trnh chnh, l 2 vng nh nh hn: khi thng tin ln v khi thng tin nh. Khi thng tin ln l 2k b nh FLASH cha chng trnh bootloader c cung cp bi nh sn xut, l chng trnh c thit k sn ti code v qua cng USART1. Khi thng tin nh cha 6 byte cu hnh, l cc byte c dng nh ngha cc thuc tnh Reset ca STM32 v bo v b nh.
Trang 105
Author: ARMVN
www.arm.vn
Khi FPEC c dng cho php trong ng dng lp trnh ca b nh FLASH. B nh FLASH cng c th c bo v c khi cc cng c debug v c bo v ghi.
Trang 106
Author: ARMVN
www.arm.vn
byte) vo v tr mong mun. Nu v tr FLASH c xa v khng c bo v ghi, FPEC s lp trnh gi tr mi vo trong nh FLASH.
Trang 107
Author: ARMVN
www.arm.vn
c v code c th c download v thc thi trong vng ny. Nn c th khng cho php vic bo v c khi chy mt chng trnh ngoi vng SRAM. Tuy nhin, khi bo v c b tt lc vic xa khi ca FLASH ni s c thc hin nhm trnh cc chng trnh n cp phn mm. Khi ch bo v c c cho php, b nh FLASH cng c bo v ghi trnh mt chng trnh him c (malicious) khi b chn vo vng nh cha bng vector. B nh STM FLASH c bo v nu byte bo v c v phn b ca n c set ln 0xFF. B nh c th c v hiu bo v bng cch ghi 0xFA v phn b ca n nh mt half-word vo byte Option bo v c. 8.3.3 Byte Cu hnh Byte Option cu hnh cha 3 bit active. Trong 2 bit qun l STM32 vo ch Standby v Stop nh th no. Mt trong hai ch c th c cu hnh pht mt tn hiu reset khi vo. iu ny s cu hnh cc chn IO s nh ng vo, gim cng sut tiu th ton b ca STM32. PLL v b dao ng ngoi cng s b v hiu ha v chip s chuyn qua dng b dao ng tc cao RC ni nh l ngun xung chnh. Bit cui cng trong byte Option cu hnh hot ng ca Independent Watchdog. Watchdog ny c mt ch watchdog cng n s bt u ngay lp tc sau khi b x l reset, hoc ch watchdog mm n phi c bt u di s iu khin ca phn mm.
Trang 108
Author: ARMVN
www.arm.vn
Trang 109
Author: ARMVN
www.arm.vn
ARM). Nh tn gi ca n ng , MDK-ARM l mt chui cng c hon chnh thit k ring cho vi iu khin da trn ARM-based. nc ta, hu ht cc k s u quen thuc vi Keil khi lp trnh vi 8051, do s dng Keil lp trnh cho ARM cng l iu thun li. Nu bn ang lm cho mt quyt nh gia vic s dng cc trnh bin dch GCC v mt trnh bin dch thng mi, bn s b chi phi mt phn bi ngn sch d n. Mt d n 'n gin' dng nh khng c ngn sch chi cho mt toolset thng mi. Tuy nhin, nu bn c k hoch chun ha vi iu khin ARM- based, sau l mt toolset xn s sm chi cho bn thn d n c v rt ngn thi gian pht trin v mt m chng trnh nh gn v ti u hn.
Trang 110
Author: ARMVN
www.arm.vn
th c ti v t trang web ca ST. Kit pht trin USB cung cp mt th vin USB v cc ng dng trnh din cho HID, Mass Storage, m thanh v thit Device Field Upgrade.
Vi s gia tng phc tp ca cc ngoi vi Vi iu khin, th iu quan trng l chn chui cng c ci m c h tr tt vi giao thc v cc phn mm ng dng ngn xp.
Nh cc bin th mi ca cc STM32 c pht hnh, chng s c nhiu thit b ngoi vi cng phc tp hn (Ethernet MAC, giao din mn hnh TFT, vv). Nh vy lm tng phc tp, n s tr thnh l ch khng th pht trin tt c cc m ng dng ca chnh bn. V vy, khi la chn cng c pht trin n cng rt quan trng xem xt tnh sn c ca giao thc ngn xp, chng hn nh ngn xp TCP / IP v phn mm ng dng khc, chng hn nh GUI, c th c yu cu trong cc d n tng lai. L tng nhng th ny nn t cng nh cung cp v tch hp tt vo toolset bn chn.
Trang 111
Author: ARMVN
www.arm.vn
cho m ca bn, iu m buc bn phi ln k hoch cho ng dng trc khi bn nhy vo v bt u vit. C nhiu RTOS c sn hn cho ARM v Cortex hn cho hu ht cc CPU nhng. Nhiu nh cung cp trnh bin dch s cung cp h iu hnh ca chnh h v hoc mt RTOS ngoi, mt trong nhng h iu hnh m ngun m ph bin nht l "FreeRTOS", c sn t www.freertos.org. Mt phin bn thng mi ca FreeRTOS c gi l "SafeRTOS", m c th nghim p ng cc tiu chun an ton IEC 61508 v cng c sn t cng mt trang.
Trang 112
Author: ARMVN