Professional Documents
Culture Documents
Giao Tiếp Với ARM
Giao Tiếp Với ARM
I HC QUC GIA H NI
TRNG I HC CNG NGH
LUN VN THC S
H Ni - 2011
-2MC LC
M U ....................................................................................................................6
PHN I - L THUYT CHUNG..............................................................................7
CHNG 1 - CU TRC VI IU KHIN ARM ................................................7
1.1 i nt v lch s hnh thnh v pht trin vi iu khin ARM.........................7
1.2 Cu trc c bn ARM.......................................................................................8
1.3 M hnh kin trc .............................................................................................8
1.4 M hnh thit k ARM ...................................................................................11
1.4.1 Li x l ..................................................................................................11
1.4.2 Cc thanh ghi ca ARM...........................................................................12
1.5 Cu trc load-store .........................................................................................13
1.6 Cu trc tp lnh ca ARM ............................................................................13
1.6.1 Thc thi lnh c iu kin........................................................................13
1.6.2 Phng thc nh a ch .........................................................................13
1.6.3 Ngn xp..................................................................................................14
1.6.4 Tp lnh ARM .........................................................................................14
1.7 Kt lun..........................................................................................................17
CHNG 2 - GIAO TIP VI VI IU KHIN ARM......................................18
2.1 M hnh giao tip trong vi iu khin ARM ...................................................18
2.2 Cc giao tip c bn trong vi iu khin ARM ...............................................19
2.2.1 Giao tip vi b nh ................................................................................19
2.2.2 Giao tip vi b iu khin ngt...............................................................22
2.2.3 Giao tip vi b nh thi ........................................................................26
2.2.4 Giao tip vi b iu khin tm dng v Reset ........................................29
2.2.5 Giao tip vi khi GIPO ..........................................................................31
2.2.6 Giao tip vi khi truyn/thu khng ng b a nng (UART) ................33
2.2.7 Giao tip ngoi vi ni tip (SPI)...............................................................35
2.2.8 Giao tip USB..........................................................................................36
2.2.9 Kin trc bus truyn d liu cao cp ca vi iu khin ARM ...................38
2.3 Kt lun..........................................................................................................42
CHNG 3 - C IM CC DNG LI X L ARM .................................44
3.1 Phn loi v tnh nng cc dng li x l ARM..............................................44
3.2 c im cc dng li x l ARM .................................................................46
3.2.1 c im ca kin trc dng li x l ARM v4T .....................................46
3.2.2 c im kin trc dng li x l ARM v5..............................................47
3.2.3 c im kin trc dng li x l ARM v6..............................................48
3.2.4 Kin trc dng li x l ARM v7.............................................................49
3.3 Kt lun..........................................................................................................50
PHN II - THC NGHIM ...................................................................................51
EPROM
FAT
FIFO
FIQ
GIPO
GSM
IEM
IRQ
LCD
LSB
Interrupt Request
Liquid Crystal Display
Least Significant Bit
Yu cu ngt
Mn hnh tinh th lng
Bit c gi tr thp nht
-5MAC
MSB
PDA
PLD
PLL
PMC
PWM
PHY
RAM
ROM
RTC
Rx
SD Card
SPI
SRAM
SSRAM
Tx
TIC
UART
USB
VGA
Multiply-Accumulate Unit
Most Significant Bit
Personal Digital Assistant
Programmable Logic Device
Phase Lock Loop
Power Management Controller
Pulse Width Modulation
Physical
Random Access Memory
Read Only Memory
Real Time Clock
Receive
Secure Digital Card
Serial Peripheral Interface
Static Random Access
Memory
Synchronous Static Random
Access Memory
Transmit
Test Interface Controller
Universal Asynchronous
Receiver/Transmitter
Universal Serial Bus
Video Graphics Array
B tch ly nhn
Bit c gi tr cao nht
My h tr c nhn k thut s
B logic c kh nng lp trnh
Vng kha pha
B qun l ngun
B iu ch rng xung
Lp vt l
B nh truy nhp ngu nhin
B nh ch c
ng h thi gian thc
Nhn d liu
Th nh d liu s
Giao tip ngoi vi ni tip
B nh truy cp ngu nhin tnh
B nh truy cp ngu nhin ng b tnh
Truyn d liu
B giao tip kim th
B thu/pht khng ng b a nng
Bus ni tip a nng
Mng ha hnh nh
-6-
M U
Xut hin t nhng nm u thp nin 1960, h thng nhng ang pht trin
mnh m trong lnh vc k thut in t v cng ngh thng tin, vi nhng ng dng
rng ri trong cng nghip v i sng.
H thng nhng hin nay i hi phi c cu trc mnh, p ng thi gian thc
tt, dung lng b nh ln, kh nng tnh ton nhanh, kh nng tiu th nng lng
thp, tnh n nh cao v tch hp sn nhiu ngoi vi.
Vi iu khin ARM c nh gi l mt trong nhng dng vi iu khin mnh,
p ng c nhng yu cu trong h thng nhng ngy nay, c s dng rng ri
trn th gii v ang c nghin cu pht trin Vit Nam.
Trong khun kh ca ti, ta s tm hiu m hnh kin trc, cc giao tip vi vi
iu khin ARM, c im chung ca dng li x l ny v th nghim mt s ng
dng giao tip vi vi iu khin AT91SAM7S64 c li x l l ARM7TDMI.
-7-
-9-
K hiu quy c
Mc c u tin
Ch cc bit [4:0]
Abort
abt
10111
fiq
10001
Interrupt Request
irq
10010
Supervisor
svc
10011
System
sys
11111
Undefined
und
11011
User
usr
khng
10000
- 11 Trong :
- Abort
- FIQ
- IRQ
- Supervisor
- System
- Undefined
- User
12 bits
opcode
- 12 Bus a ch
PC
control
IR
Memory
ALU
IR
Bus d liu
28 27
Z C V
8 7
Khng dng
6 5 4
F
T Chn ch
- 14 1.6.3 Ngn xp
ARM h tr vic lu v phc hi gi tr nhiu thanh ghi, gm hai lnh:
- LDM : Load multiple register.
- STM : Store multiple register.
Vic lu hoc phc hi gi tr thanh ghi vi b nh bt u t a ch c lu
trong thanh ghi nn, gi tr ca thanh ghi nn c th gi nguyn hoc c cp nht.
Th t a ch b nh sao lu cc thanh ghi tng hoc gim ty theo phng thc
nh a ch.
1.6.4 Tp lnh ARM
Tt c lnh ca ARM u l 32 bit:
- C cu trc dng load-store.
- Cu trc lnh nh dng ba a ch (ngha l a ch ca hai ton hng ngun
v ton hng ch u l cc a ch ring bit).
- Mi mt lnh thc thi mt iu kin.
- C c lnh load-store nhiu thanh ghi ng thi.
- C kh nng dch bit kt hp vi thc thi lnh ALU trong ch mt chu k my.
- Ch Thumb code: l mt ch c bit ca ARM dng tng mt m
bng cch nn lnh 32 bit thnh 16 bit. Mt phn cng c bit s gii nn
lnh Thumb 16 bit thnh lnh 32 bit.
ARM h tr su kiu d liu:
- 8 bit c du v khng du.
- 16 bit c du v khng du.
- 32 bit c du v khng du.
- Cc ton t ca ARM c 32 bit, khi lm vic vi cc d liu ngn hn, cc bit
cao ca ton t s c thay th bng bit 0.
Cch t chc v thc thi tp lnh ca ARM:
Hnh 1.6: Chu k thc thi lnh theo kin trc ng ng.
Trong kin trc ng ng, khi mt lnh ang c thc thi th lnh th hai ang
c gii m v lnh th ba bt u c np t b nh. Vi k thut ny th tc
x l tng ln rt nhiu trong mt chu k my.
Trong hnh 1.7 cho ta thy c mt chui ba lnh c np, gii m, v thc thi
bi b x l. Mi lnh c mt chu trnh duy nht hon thnh sau khi ng ng
c lp y.
Tp lnh c t vo cc ng ng lin tc. Trong chu k u tin li x l
np lnh ADD (cng) t b nh. Trong chu k th hai li tm np cc lnh SUB (tr)
v gii m lnh ADD. Trong chu k th ba, c hai lnh SUB v ADD c di chuyn
dc theo ng ng. Lnh ADD c thc thi, lnh SUB c gii m, v lnh CMP
(so snh) c np. Qu trnh ny c gi l lp y ng ng. Kin trc ng
ng cho php li x l thc hin lnh trong mi chu k.
- 16 Khi tng chiu di ng ng, s lng cng vic thc hin tng cng on
gim, iu ny cho php b x l phi t c n mt tn s hot ng cao hn
tng hiu sut thc thi. Thi gian tr ca h thng cng s tng ln bi v c nhiu chu
k hn lp y ng ng trc khi li x l c th thc thi mt lnh. Chiu di
ng ng tng ln cng c ngha l d liu cng c th s phi ph thuc gia cc
cng on nht nh.
ARM gii thiu v a ra kin trc ng ng c nm tc v, vi vng nh d
liu v chng trnh ring bit. T kin trc lnh c ba tc v c chia nh li thnh
nm tc v cng lm cho mi chu k xung nhp s thc hin mt cng vic n gin
hn mi cng on, cho php c th tng chu k xung nhp ca h thng. S tch ri
b nh chng trnh v b nh d liu cng cho php gim ng k ti nguyn chim
ca mi lnh trong mt chu k my.
Hnh 1.8: Kin trc ng ng ba tng trong tp lnh c nhiu chu k my.
---------------------------------
- 18 CHNG 2
GIAO TIP VI VI IU KHIN ARM
2.1 M hnh giao tip trong vi iu khin ARM
Vi iu khin ARM l mt h thng c cha li vi x l ARM vi cc giao tip
h tr bn trong [6].
Vi iu khin ARM c thc thi trn h thng kin trc cc bus truyn d liu
a chc nng ca vi iu khin. Bao gm b x l ARM kt ni qua h thng bus
truyn d liu hiu sut cao ng b nhanh vi SRAM, cc bus giao tip ngoi, v
cu ni ti cc bus truyn ngoi vi cng sut thp, c m t trong hnh 2.1.
Thit b ngoi vi bn ngoi c xy dng t cc thit b ring v ty theo ng
dng ngi dng.
- 19 - DRAM;
- Cu ni AHB APB (Advanced Peripheral Bus: Bus truyn ngoi vi ti u)
- Cu ni ngoi AHB;
- B m/nh thi;
- Khi SPI (Serial Peripheral Interface): Khi giao tip cc thit b ngoi vi ni
tip;
- Khi Serial UART (Serial Universal Asynchronous Receiver/Transmitter): Khi
giao tip ni tip truyn/thu khng ng b a nng.
2.2 Cc giao tip c bn trong vi iu khin ARM
2.2.1 Giao tip vi b nh
Giao tip vi b nh trong vi iu khin ARM [7] c tnh nng truy xut d liu
rt nhanh.
Trong vi iu khin ARM, b nh ni b c th c cc dng b nh nh:
SSRAM, SRAM, DRAM, EPROM/Flash.
Bn b nh chnh c m t trong hnh 2.2:
Cu hnh Reset
a ch
a ch tng ng
a ch
a ch tng ng
0x00000000
0x01000000
0x00000000
0x04000000
0x00002000
0x02002000
0x00080000
0x03080000
- 22 Vng ROM
C mt vng c dnh ring cho ROM. Vng ROM ging nh c hai cu hnh
thng thng v cu hnh Reset ca bn b nh, vng ROM c m t nh trong
hnh 2.4.
128 MB
0x08000000
ROM
64 MB
0x04000000
- 23 -
- 24 ghi cho php khng b nh hng. Khi ghi vo v tr xa trn thanh ghi cho php ngha
l dng bit xa o li, khng dng cc bit khc.
Mt knh ca b iu khin ngt c m t trong hnh 2.6.
Ngun ngt
FIQ source
Programmed Interrrupt
Comms Rx
Comms Tx
Timer 1
Timer 2
8
0
Cho php
Chn ch
B chia t l
- Chc nng cc bit trong thanh ghi iu khin c m t trong bng 2.4.
Bng 2.4: M t cc bit trong thanh ghi iu khin cho b nh thi.
Cc bit 0 1, 4 5, 8 31:
khng xc nh
Ghi gi tr 0 v c c nh l khng xc nh
0 : Ch nh thi t do
1 : Ch nh thi tun hon
0 : Khng cho php b nh thi hot ng
1 : Cho php b nh thi hot ng
Bit 2
Xung c chia
Cc bc ca b chia t l xung
16
1
1
256
1024
10
- Bn nh b nh thi:
a ch c s ca b nh thi khng c nh v c th khc i vi mi h thng
x l c th. Tuy nhin, khong cch ca cc thanh ghi t a ch c s c c nh
nh trong bng 2.6.
Bng 2.6: Bn a ch b nh thi.
Trng thi
di (bit)
Chc nng
GPIO_DATASET
Ghi
Thit lp u ra d liu
GPIO_DATAIN
c cc chn u vo d liu
GPIO_DATACLR
Ghi
GPIO_DATAOUT
GPIO_DIRN
c
c/Ghi
8
8
c cc chn u ra d liu
iu khin hng d liu vo/ra
- 33 -
- 34 Cc ngt UART
Mi UART to ra bn ngt:
- B ngt trng thi: dng xc nhn khi c bt k s thay i trng thi no. B
ngt ny c xa bng cch ghi vo thanh ghi UART_ICR.
- Ngt loi b UART: dng xc nhn khi UART c loi b v bit khi ng
(mc thp) c pht hin trn ng thu. Trng thi ny s c xa nu UART
c kch hot hoc ng thu mc cao.
- Ngt Rx (ngt thu d liu): dng xc nhn khi mt trong cc trng hp sau
xy ra:
B FIFO thu c kch hot v b FIFO cha na hoc qu na (8 byte
hoc nhiu hn 8 byte).
B FIFO thu khng cn trng v khng c d liu cho hn chu k 32 bit.
B FIFO thu b v hiu v d liu c thu.
Ngt Rx c xa bng vic c ni dung ca FIFO.
- Ngt Tx (ngt truyn d liu): dng xc nhn khi mt trong cc trng hp sau
xy ra:
B FIFO truyn c kch hot v b FIFO cha mt na hoc t hn mt na.
B FIFO truyn b v hiu ha v vng m lu tr l trng.
Ngt Tx s c xa khi chn vo b FIFO hn qu na hoc ghi vo thanh
ghi lu tr.
Dng khung truyn
Khung truyn trong giao tip UART gm bn thnh phn, nh trong hnh 2.12.
Start bit
Data
Parity
Stop bits
Hnh 2.13: Giao thc Master Slave trong giao tip SPI.
: 12 Mbps;
- 39 - Mc tiu ca AMBA:
D dng pht trin cc mch nhng vi iu khin vi mt hay nhiu b x l
v nhiu thit b ngoi vi.
Gim thiu c tng chi ph trong sn xut th nghim chip.
AMBA h tr thit k cc khi, cu trc v cc b x l c lp, h tr pht
trin th vin cc thit b ngoi vi v sn sng cung cp b nh truy cp
nhanh, cc li CPU cao cp.
- t c nh vy, kin trc AMBA c nhng tnh nng chnh sau:
Tnh n th cao.
H tr a dch v.
Ngun tiu th thp.
Phng php kim th cao cp.
- AMBA l mt h m, bt k ai cng c th sao chp cc c tnh k thut t ARM
v dng giao thc ca AMBA thit k chip. Khng c s lin i n bn quyn
hay tin bn quyn. Cc hi vin ARM c th cung cp v h tr v h thng
AMBA.
- c tnh k thut AMBA:
Bus bng thng rng, tc cao.
Bus ngoi vi c cng sut thp, cu trc n gin.
Cho php truy cp kim th cc khi nhanh.
Cc hot ng qun l hiu qu (Reset hoc bt ngun, qu trnh khi to v
ch ngh).
- Kin trc AMBA in hnh c m t trong hnh 2.17.
- 41 - Mc tiu APB l bus truyn d liu n gin, s dng in p thp vi nhng c tnh:
Truy cp d liu c iu khin ch bi s la chn v cho qua, khng cn
xung nhp.
Cng sut tiu hao gn nh bng khng khi bus truyn ny khng s dng.
Giao tip ng truyn n gin.
Tc truyn d liu ph thuc vo tc ca cc thit b ngoi vi.
Cu hnh tc truyn khng b gii hn bi ch tiu k thut, c th thay i
theo thit k ngi dng.
Cc bus d liu ca APB c th c ti u ha tng thch vi cc thit b
ngoi vi kt ni. Rt nhiu cc thit b ngoi vi c yu cu ng truyn d liu hp,
v mt c ch kt ni thit b ngoi vi 32 bit trc cu ni, tip theo sau cu ni l c
ch kt ni vi cc thit b ngoi vi 8 bit, gim vng khng cn s dng trong bus
truyn d liu, ti u ha bus truyn d liu.
Mc d xung nhp khng c thit lp trong AMBA, phn vng cung cp bi
cu ni v APB ti gin c vic tiu hao cng sut. Rt nhiu cc thit b ngoi
vi nh cc b nh thi, b to tc Baud (BRG), b iu ch rng xung (PWM)
yu cu chia xung nhp h thng, v cc v tr c th lp trnh, c phn chia bn
cnh cu ni rt tin li v to ra ch ngun hiu qu.
Khng c bus truyn d liu chnh trong APB (ngoi tr cu ni). Tt c cc
thit b ngoi vi hot ng nh l cc h th ng.
c tnh gia ASB v APB
- ASB c dng cho cc b iu khin CPU, DSP, DMA v cc bus truyn d liu
chnh khc, hay cc thit b ngoi vi c hiu sut cao.
- APB c dng cho ng truyn dn ph, nh a ch thanh ghi cc thit b ngoi
vi, c bit l khi s lng cc thit b ngoi vi ln m ngun tiu th yu cu thp.
- ASB v APB s dng cng h phng php kim th trong AMBA.
B iu khin giao tip kim th
B iu khin giao tip kim th l mt bus truyn d liu ASB chnh, c
dng giao tip vi bus truyn d liu bn ngoi (hoc vi cc chn tng thch
khc) truy cp kim th ca thit b bn ngoi, c m t trong hnh 2.18.
C ch ny cho php truy cp cng kim th m mt mc thp cng logic,
c th kim th nhanh bng cch truy cp song song. Phng php kim th cho
php dng li cc kt qu kim th trung gian, lu li gi tr ti thi im th. Chng
hn nh khi mt khi thit b ngoi vi c dng tr li, khi trung gian kim th
(khi c kim th vn tn ti) c th c s dng li, v tip tc kim th
mc cao hn ca chng trnh.
- 42 -
Hnh 2.18: B iu khin giao tip kim th s dng theo dng khi.
- 43 hn (c trnh by trong chng 3). Cc giao tip trn vi iu khin ARM lun c
kh nng tng tc tt vi cc thit b ngoi vi trn h thng bus truyn d liu c tc
x l cao, nhng tiu th nng lng thp.
Cc giao tip vi vi iu khin ARM u c hng h tr, nh ngha thnh cc
module v c ti u t khi thit k theo kiu cu trc trong lp trnh C, rt thun li
cho ngi lp trnh tip cn v pht trin ng dng. Chnh v vy, vi iu khin ARM
c phm vi ng dng rng ri, lun c sn cc cng c h tr giao tip cho c phn
cng v phn mm.
---------------------------------
- 44 CHNG 3
C IM CC DNG LI X L ARM
3.1 Phn loi v tnh nng cc dng li x l ARM
Phn loi cc dng li x l ARM
Cc dng li x l ARM cho n nay c bn kin trc [13], bao gm: kin trc
v4T, kin trc v5, kin trc v6 v kin trc v7.
Kin trc ARMv4T l kin trc c bn, cc kin trc ARM sau bao gm v5, v6,
v7 u k tha t kin trc ARMv4T. Hnh 3.1 m t s hnh thnh v pht trin cc
kin trc li x l ARM t kin trc ARMv4 n ARMv7.
Trong :
ARM 32-Bit ISA (Instruction Set Architecture): cu trc tp lnh ARM 32 bit.
Thumb 16-Bit ISA: cu trc tp lnh Thumb 16 bit c thit lp bng cch phn
tch tp lnh ARM 32 bit v chuyn ha tt nht ph hp vi tp lnh 16 bit, lm gim
kch thc m.
Thumb: c tnh Thumb ci thin mt bin dch m, b x l thc hin tp
lnh 16 bit. ch ny c mt s ton hng i km s n i v gii hn mt s kh
nng so vi ch tp lnh ARM y . Trong Thumb, cc m s nh hn v t chc
nng cho ci thin mt m tng th. Trong trng hp b nh hoc bus truyn d
liu b hn ch di 32 bit, m Thumb cho php tng hiu sut thnh m ARM 32 bit
tng kh nng x l trn bng thng ln hn.
Thumb-2: c a ra b sung cho cc gii hn tp lnh 16 bit Thumb vi
vic cung cp thm tp lnh 32 bit m rng. Mc tiu ca Thumb-2 l t c mt
m nh Thumb vi hiu sut tng ng nh tp lnh ARM 32 bit.
I/O
4GBytes
Tp lnh
16 bit, 32 bit
C by ch : User, Supervisor, Abort, Undefined,
System, IRQ, FIQ
Ch hot ng
Cu trc tp lnh
Ngt
- 48 phn; gip tng tc trong x l tn hiu s so vi cng ngh thc hin php tnh
du chm ng.
Phin bn v5TE: h tr khi x l tn hiu s DSP (Digital Signal Processing).
Vi khi DSP ny, nng lc x l tnh ton s c tng ln 70%.
Phin bn v5TE-J: khi Jazelle c thm vo nhm h tr trnh thng dch m
Java v b thc thi m Java. Thi gian thc thi m Java c tng ln tm ln v gim
c hn 80% nng lng tiu th so vi li x l khng h tr khi Jazelle. Tnh
nng ny cho php lp trnh vin thc thi m Java mt cch c lp vi h iu hnh.
Kin trc v5 c s dng nhiu dng ARM10, c bit l phin bn v5TE-J.
Mc d khng c nhiu thay i v kin trc, tuy nhin phin bn kin trc v5 c s
dng rt nhiu bi vi x l tch hp h thng nn to c s linh hot vi nhiu tnh
nng cao cp.
3.2.3 c im kin trc dng li x l ARM v6
Kin trc v6 v cc phin bn m rng v6T2, v6Z v v6K c ARM gii thiu
nm 2002, bao gm cc li x l: ARM1136J(F)-S, ARM1156T2(F)-S(v6T2),
ARM1176JZ(F)-S(v6Z), MPCore(v6K).
C nhiu b sung kin trc v6 theo hng to ra nhng h thng nhng cao cp
v phc tp hn nhng vn gi c u im v kh nng tiu th in nng thp. Vi
mi phin bn s c nhng tnh nng c bit c thm vo. K tha cc c im
ni tri ca kin trc v4 v v5, kin trc v6 cc khi TEJ c tch hp vo li
ARM. m bo kh nng tng thch ngc phn b nh v x l ngoi l c k
tha t kin trc v5.
V kin trc v6, c nm im chnh c ci tin:
- Qun l b nh: b nh cache v khi qun l b nh (MMU- Memory
Management Unit) c ci tin lm tng hiu sut thc thi ca h thng ln
30% so vi kin trc c.
- a li x l (Multiprocessor): p ng cc h thng m yu cu kh nng
tc x l nhanh nh: phng tin gii tr c nhn, x l s Cc li x l
chia s v ng b d liu vi nhau thng qua vng nh chung.
- H tr x l a phng tin: tch hp b tp lnh SIMD (Single Instruction
Multiple Data) lm tng kh nng x l d liu dng m thanh v hnh nh.
SIMD cng cho php cc nh pht trin ci t cc ng dng phc tp hn
nh: gii m d liu m thanh v hnh nh, cc bi ton nhn dng, hin th
hnh nh 3D hoc h tr thit b s dng cng ngh khng dy.
- Kiu d liu: l cch h thng s dng v lu tr d liu trong b nh. Cc h
thng SoC (System on Chip), cc chip vi x l n, h iu hnh v cc giao
- 49 din ngoi vi nh USB hoc PCI thng hot ng da trn kiu d liu little
endian. Mt s cc giao thc nh TCP/IP hay MPEG hot ng da trn kiu
d liu big endian. c th ti u ha kh nng tch hp ca h thng,
ARMv6 h tr cng lc c hai nh dng little v big endian, gi tt l
mixed-endian. Bn cnh , ARMv6 cn cung cp tp lnh x l d liu
dng unalignment - c kch thc d liu thay i. Tng t nh ARMv5,
ARMv6 cng l kin trc 32 bit, nn h tr ng truyn d liu 64 bit hoc
cao hn.
- X l ngoi l v ngt: thch ng cho cc h thng x l thi gian thc.
Nhm tng cng tnh an ton khi thc thi m chng trnh, khi TrustZone
c tch hp phin bn v6Z. Vn thc thi m an ton xut pht t thc t ngy
cng nhiu thit b di ng da trn nn tng ca ARM, nhiu chng trnh c ti t
trn mng do tnh an ton ca cc on m nhiu khi cha c kim chng.
TrustZone m bo cc on m c hi khng lm nh hng n h thng.
Dng ARM11 l i din ph bin nht ca kin trc ARMv6. Vi kin trc
ng ng tm tng ( ARM1156T p dng kin trc ng ng chn tng), h thng
d on r nhnh (Branch Prediction) v kt qu tr v (Return Stack) gip ARM11
nng cao hiu sut thc thi lnh.
Tp lnh Thumb-2 cng c gii thiu h tr cc lnh Thumb 16 bit v 32 bit.
phin bn ARM1176JZ(F)-S b sung khi IEM (Intelligent Energy Management)
qun l mc tiu th nng lng tt hn.
3.2.4 Kin trc dng li x l ARM v7
Kin trc v7 v cc phin bn m rng v7-A, v7-R v v7-M c ARM gii
thiu vo nm 2005, c trng bao gm cc li x l: Cortex-A8 (v7-A), Cortex-R4
(v7-R), Cortex-M3 (v7-M).
Kin trc v7 c chia thnh ba dng chnh da trn c th ca ng dng
thc tin:
- Dng A (vit tt ca Application), li ARM dng ny h tr cho cc ng dng
i hi tnh phc tp, mc tng tc ngi dng cao nh: thit b cm tay
di ng, my tnh, cng ngh khng dy
- Dng R (vit tt ca Realtime), li ARM dng ny h tr cho cc ng dng
cn tnh ton x l thi gian thc.
- Dng M (vit tt ca Microcontroller), li ARM dng ny dnh cho cc ng
dng cng nghip v in t tiu dng.
ARM Cortex l mt phin bn khc vi cc phin bn ARM thng hay c k
hiu bi ARMXX. ARM Cortex khng c tc hot ng hay h thng ngoi vi nht
---------------------------------
- 51 -
- AT91SAM7S128
- AT91SAM7S64
: 64 Kbytes b nh Flash.
D1
U2
1
2
3
1
D2
P1
IN
GND
OUT
OUT
1
2
PW_SW
D3
REG1117-5
+ C7
10uF
+3V3
U3
SW1
2
4
C5
+ C3
10uF
IN
GND
78M33
100nF
GND
OUT
GND
R1
3
4
10k
+ C4
10uF
C6
100nF
LED1
18
45
58
VDDOUT 12
24
54
7
8
64
59
VDDIO
VDDIO
VDDIO
GND
GND
GND
GND
2
17
46
60
VDDCORE
VDDCORE
VDDCORE
GND
VDDIN
VDDOUT
VDDPLL
VDDFLASH
VDDIN
VDDOUT
AT91SAM7S64-AU-001
C19
C25
100nF
C20
C21
C26
100nF
100nF
C27
100nF
100nF
C22
C28
100nF
100nF
C23
C30
100nF
2.2uF
C29
100nF
100nF
GND
JTAG Connector
R6
47k
P2
2
4
6
8
10
12
14
16
18
20
1
3
5
7
9
11
13
15
17
19
R7
47k
R8
47k
R9
47k
2
1
R10
47k
J3
TDI
TMS
TCK
TDO
RST
U4C
TDI
TDO
TCK
TMS
JTAGSEL
33
49
53
51
50
TDI
TDO
TCK
TMS
JTAGSEL
AT91SAM7S64-AU-001
Header 10X2
GND
- 57 -
2
1
LM358AD
6
U7B
3
U8
1
2
3
ADC
U7A
LM358AD
+5V
VCC
Vout
GND
+ C25
10uF
C26
100nF
LM35CAZ
R21
75
R22
20k
R23
10k
+ C34
1uF
GND
GND
Chc nng
u ra 1
u vo o
u vo khng o
u vo khng o 2
u vo o 2
7
8
u ra 2
Ngun dng
1V
x 1024 = 320 mc
3.3V
1V
3.1mV 0.3 oC
320
R2
R1
3V
x 1024 = 931 mc
3.3V
Mc tng ng vi nhit : 1 mc =
3V
3.1mV
931
3.1mV
1mV 0.1 oC
3
- 59 Vy nhit thay i 0.1 oC, Vin (ADC) thay i 1mV th vi iu khin pht
hin c c s thay i nhit mi trng, lm gim sai s c ba ln so vi
trng hp s dng trc tip u ra t LM35.
S dng thm b khuch i ngoi tc dng lm tng phn di cn c tc
dng lm b m tr khng gia LM35 v b ADC.
Vic c ADC c tnh bi cng thc: ADC =
Vin
x 2n
Vref
3.3V
= 3.2mV
1024
3.2mV
= 0.32
10mV
R17
10k
AS
C19
100nF
DS
RW
C18
U6
18
14
13
17
15
1
12
RST
AS
CS
DS
R/W
MOT
GND
VCC
SQW
IRQ
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
24
23
19
100nF
4
5
6
7
8
9
10
11
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
GND
DS12887
GND
K hiu
Chc nng
MOT
NC
B trng
AD0-AD7
12
GND
13
CS
14
AS
Cht a ch
15
R/ W
u vo c/ghi
17
DS
Cht d liu
18
RESET
u vo khi ng li
19
IRQ
u ra yu cu ngt
23
SQW
u ra sng vung
24
VCC
Ngun cung cp 5V
2,3,16,20,21,22
4-11
Bn a ch ca DS12C887
Bn a ch ca DS12C887 c m t trong hnh 4.12. Bn a ch bao
gm 113 byte RAM thng dng, 11 byte RAM m thnh phn bao gm ng h thi
gian thc, lch, d liu bo gi v 4 byte c s dng cho vic iu khin v thng
bo tnh trng. Tt c 128 byte c th c ghi hoc c trc tip tr nhng trng
hp sau:
- Thanh ghi C v D l hai thanh ghi ch c.
- Bit th by ca thanh ghi A l bit ch c.
- Bit cao ca byte th hai l bit ch c.
LSB
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
UIP
DV2
DV1
DV0
RS3
RS2
RS1
RS0
- 65 UIP: Update In Progress: l bit trng thi m c th theo di c. Khi bit UIP
mc 1, qu trnh cp nht s sm xy ra. Khi bit UIP mc 0, qu trnh cp nht s
khng xy ra t nht l 244 s. Nhng thng tin v thi gian, lch, v bo gi trong
RAM c y cho vic truy cp khi bit UIP mc 0. Bit UIP l bit ch c v khng
b nh hng ca chn RESET . Khi ghi bit SET thanh ghi B ln 1, th s ngn chn
mi qu trnh cp nht v xa bit trng thi UIP.
DV2, DV1, DV0: ba bit trn c s dng bt hoc tt b dao ng v ci t
li qu trnh m xung. Khi c t 010 th l s kt hp duy nht bt b dao
ng ln v cho php RTC gi thi gian. Khi c t 11X s cho php dao ng
nhng gi qu trnh m xung mc Reset. Qu trnh cp nht tip theo s din ra
sau 500 ms, sau khi nh dng 010 c ghi vo ba bit DV0, DV1, v DV2.
RS3, RS2, RS1, RS0: bn bit loi la chn chn la mt trong mi ba loi
ca b chia mi lm trng thi hoc khng cho php xut ra tn hiu chia ra ngoi.
Loi c la chn c th pht ra sng vung (chn SQW) hoc ngt theo chu k.
Ngi s dng c th s dng mt trong nhng cch sau:
Cho php ngt vi bit PIE
Cho php xut u ra ti chn SQW vi bit SQWE
Cho php c hai hot ng cng mt lc v cng mt loi.
Khng kch hot c hai.
- Thanh ghi B
MSB
LSB
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
SET
PIE
AIE
UIE
SQWE
DM
24/12
DSE
Set: Khi bit SET mc 0, thng thng qu trnh cp nht bng cch tng bin
m mt ln mt giy. Khi bit SET c ghi vo mc 1, mi qu trnh cp nht u b
cm, v chng trnh c th khi ng cc byte thi gian v lch m khng c qu
trnh cp nht no xy ra trong qu trnh khi ng. Chu k c c th thc thi cng
mt kiu. SET l bit c hoc ghi v khng chu nh hng trng thi RESET hoc
cc chc nng bn trong ca DS12C887.
PIE (Periodic Interrupt Enable): Bit cho php ngt theo chu k l bit c hoc
ghi, n cho php bit c ngt theo chu k (PF: Periodic Interrupt Flag) trong thanh ghi
C iu khin chn IRQ xung mc thp ty thuc vo t l phn b ca bit RS3
RS0 thanh ghi A. Khi bit PIE = 0 th u ra IRQ b cm ngt, nhng c PF vn c
thit lp theo chu k ngt. PIE khng b tc ng bi bt k chc nng ni no ca
DS12C887 nhng c xa v 0 bi chn RESET .
- 66 AIE (Alarm Interrupt Enable): Bit cho php ngt bo gi, l bit c/ghi m khi
c thit lp ln 1 s cho php bit c bo gi (Alarm Flag (AF)) thanh ghi C,
cho php ngt IRQ . Tn hiu ngt bo gi din ra tt c cc giy khi c ba byte bo
gi cha m bo gi dont care c th hin nh phn nh sau 11XXXXXX. Cc
chc nng bn trong ca DS12C887 khng b nh hng bi bit AIE.
UIE (Update Ended Interrupt Enable): Bit cho php kt thc qu trnh ngt cp nht,
l bit c/ghi m cho php bit c kt thc qu trnh cp nht thanh ghi C cho php
ngt IRQ . Chn RESET mc 0 hoc chn SET mc 1 s xa bit UIE.
SQWE (Square Wave Enable): Khi bit cho php xut sng vung c thit lp
ln mc 1, mt tn hiu sng vung c tn s c t bi v tr c la chn ca bit
RS3 n RS0 s iu khin sng ra ti chn SQW. Khi bit SQWE c thit lp mc
thp, chn SQW s c gi mc thp. SQWE l bit c hoc ghi v c xa khi
RESET. SQWE c thit lp ln 1 khi c cp Vcc.
DM (Data Mode): Bit kiu d liu quy nh khi no th thng tin lch v thi gian
nh dng nh phn hoc nh dng BCD. Bit DM c thit lp bi chng trnh
c nh dng thch hp. Bit ny khng b thay i bi cc chc nng bn trong hoc
chn RESET . Mc 1 ca DM s hin th d liu nh phn cn mc 0 hin th d liu
dng BCD.
24/12: Bit iu khin 24/12 xc nh kiu byte gi. Khi mc 1 th ch ch
hin th 24 gi, cn mc 0 th ch ch hin th 12 gi. Bit ny l bit c ghi v
khng b nh hng bi cc chc nng bn trong cng nh chn RESET .
DSE (Daylight Saving Enable): Bit cho php nh cng khai, l bit c hoc ghi,
n cho php hai cp nht c bit khi DSE c thit lp ln 1. Mt l vo ch nht
u tin ca thng t, thi gian s tng t 1:59:59 AM ln 3:00:00 AM. Hai l vo ch
nht cui cng ca thng mi, khi thi gian ln u tin t c 1:59:59 AM th n
s i thnh 1:00:00 AM. Chc nng c bit ny s khng c thc thi nu bit DSE
mc 0. Bit ny khng b nh hng bi cc chc nng bn trong cng nh chn
RESET .
- Thanh ghi C
MSB
LSB
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
IRQF
PF
AF
UF
- 67 PF = PIE = 1
AF = AIE = 1
UF = UIE = 1
iu c ngha l IRQF = (PF.PIE) - (AF.AIE) - (UF.UIE)
Bt c lc no bit IRQF u mc 1, chn IRQ c t xung mc thp. Bit
c PF, AF v UF c xa khi thanh ghi C c chng trnh c hoc chn RESET
mc thp.
PF (Periodic Interrupt Flag): Bit c ngt theo chu k, l bit ch c, c thit lp
ln mc 1 khi c mt sn xung c pht hin tn hiu la chn ca b chia. T bit
RS3 n RS0 xc nh chu k. PF c thit lp ln 1 bt chp trng thi ca bit PIE.
Khi c PF v PIE u mc 1, tn hiu IRQ c kch hot v s thit lp bit IRQF
ln mc 1. Bit PF s b xa bng phn mm c thanh ghi C hoc chn RESET .
AF (Alarm Interrupt Flag): Mc 1 ca bit c cho php ngt bo gi ch ra rng
thi gian hin ti c so snh vi thi gian bo gi. Nu bit AIE cn mc 1, chn
IRQ s xung mc thp v bit IRQF s thit lp ln 1. Khi RESET hoc c thanh ghi
C s xa AF.
UF (Update Ended Interrupt Flag): Bit c ngt kt thc cp nht c t sau
mi chu k cp nht. Khi bit UIE c thit lp ln 1, mc 1 UF s lm cho bit
IRQF ln mc 1, n s xc nh trng thi chn IRQ . UF s b xa khi thanh ghi C
c c hoc c tn hiu RESET.
T bit 3 n bit 0: l nhng bit khng s dng ca thanh ghi trng thi C, nhng
bit ny lun mc 0 v khng th ghi .
- Thanh ghi D
MSB
LSB
BIT 7
BIT 6
BIT 5
BIT 4
BIT 3
BIT 2
BIT 1
BIT 0
VRT
VRT (Valid RAM and Time) Bit thi gian v RAM hp l, biu hin tnh trng
ca pin, c kt ni chn VBAT. Bit ny khng phi l bit ghi c v lun c gi tr
bng 1 khi c. Nu hin th mc 0, ngun nng lng pin bn trong cn v c hai
mc d liu thi gian thc ln d liu RAM u phi xem xt. Bit ny khng chu nh
hng bi chn RESET.
Bit 6 - bit 0: Nhng bit ny khng c s dng, chng khng ghi c v khi
c th lun c gi tr bng 0.
- 68 Chu k cp nht
DS12C887 thc hin mt chu k cp nht mi ln mt giy bt chp bit SET
thanh ghi B. Khi bit SET thanh ghi B c thit lp ln 1, b phn sao chp t b
m cc byte thi gian, lch, bo gi s khng hot ng v s khng cp nht thi
gian khi thi gian tng ln. Tuy nhin, qu trnh m gi vn tip tc cp nht b
nh ni cho vic sao chp vo b m. Hot ng ny cho php thi gian vn duy tr
chnh xc m khng ph thuc qu trnh c hoc ghi b m thi gian, lch v bo
gi v cng chc chn rng nhng thng tin v thi gian v lch l ph hp. Chu k
cp nht cng so snh nhng byte bo gi vi nhng byte thi gian tng ng v kt
qu l c bo gi nu ging nhau hoc l m dont care c t cho tt c ba v tr.
C ba cch c th iu khin truy cp ng h thi gian thc m trnh c bt k kh
nng truy cp cc d liu v thi gian v lch mu thun vi nhau.
Cch th nht s dng ngt kt thc cp nht. Nu c kch hot, mt tn hiu
ngt s xy ra sau mi chu k cp nht m ch ra rng c hn 999 ms c nhng
thng tin v thi gian v ngy thng thc. Nu ngt ny c s dng, bit IRQF
thanh ghi C phi c xa trc khi b nhng ngt thng l.
Cch th hai s dng bit cp nht ang c tin hnh. Bit UIP s pht xung mi
ln mt giy. Sau khi bit UIP ln mc cao, qu trnh cp nht tin hnh sau 244 s.
Nu bit UIP mc thp, n cn t nht 244 s trc khi d liu thi gian hoc lch
thay i. Chnh v vy, ngi s dng c th trnh c nhng phc v ngt thng
thng c ng d liu thi gian hoc lch.
Cch th ba s dng ngt theo chu k xc nh khi c mt chu k cp nht.
Bit UIP thanh ghi A c thit lp ln mc 1 trong khi t bit PF thanh ghi C,
c m t trong hnh 4.17. Ngt theo chu k xut hin lm cho mt phn ln hn ca
tBUC cho php thng tin thc v thi gian v lch c th t c ti tt c ni xy ra
ca chu k ngt. Qu trnh c s hon thnh trong mt chu k (tPI/2 - tBUC) chc
chn rng d liu khng c c trong sut qu trnh cp nht.
Bit UIP trong
thanh ghi A
Bit UF trong
thanh ghi C
Bit PF trong
thanh ghi C
tPI = ngt theo chu k nh thi bn trong
tBUC = thi gian tr trc chu k cp nht = 244 s
Hnh 4.17: Quan h ngt theo chu k v thi gian cp nht.
- 69 Trong mch thc nghim, ta s dng cch ngt theo chu k truy cp ng h
thi gian thc. Truyn v nhn d liu theo kiu BCD v truyn thng theo kiu bus
nh thi Intel. Ch hin th thi gian kiu nh dng 24 gi.
Chu k ghi v c theo kiu bus nh thi Intel c m t trong hnh 4.18 v
hnh 4.19.
220
220
220
220
220
220
220
220
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
16
A
A
3
8
SH_CLK 11
DS1
14
ST_CLK 12
SR_Reset 10
13
Dpy Blue-CA
SH_CLK
DS
ST_CLK
VCC
15
1
2
3
4
5
6
7
9
MR
OE
GND
DS2
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
+3V3
U9
74HC595
DS1
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
15
1
2
3
4
5
6
7
9
A
A
3
8
DS2
+3V3
16
U11
74HC595
220
220
220
220
220
220
220
220
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
A
A
3
8
SH_CLK 11
DS4
14
ST_CLK 12
SR_Reset 10
13
Dpy Blue-CA
SH_CLK
DS
ST_CLK
VCC
15
1
2
3
4
5
6
7
9
MR
OE
GND
DS3
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
+3V3
U12
74HC595
DS4
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
15
1
2
3
4
5
6
7
9
220
220
220
220
220
220
220
220
7
6
4
2
1
9
10
5
a
b
c
d
e
f
g
DP
A
A
3
8
Dpy Blue-CA
DS4
GND
16
VCC
MR
OE
a
b
c
d
e
f
g
DP
GND
+3V3
SR_Reset 10
13
SH_CLK
DS
ST_CLK
7
6
4
2
1
9
10
5
Dpy Blue-CA
DS3
GND
+3V3
SH_CLK 11
DS3
14
ST_CLK 12
220
220
220
220
220
220
220
220
MR
OE
+3V3
U10
74HC595
SR_Reset 10
13
SH_CLK
DS
ST_CLK
GND
SH_CLK 11
DS2
14
ST_CLK 12
VCC
16
+3V3
GND
GND
1300mV
= 216.6, ta chn R = 220.
6mA
Chn
u vo d liu
14
u vo iu
khin
K hiu
A (Data
Serial: DS)
11
M t
u vo d liu dng ni tip
Shift Clock
Reset
10
Reset
Xung cht
12
Latch Clock
13
Output
Enable
Cc u ra d
liu song song
15,1-7
QA-QH
u ra d liu
ni tip
SQH
Ngun dng
Ngun m
16
8
VCC
GND
Ngun cung cp t 2 - 6V
Ni t (0V)
Shift Clock
(SH_CLK)
RESET
OE
u ra QA-QH
Chc nng
- 73 Ghi ch:
H = mc in p cao; L = mc in p thp
= mc chuyn i trng thi t in p thp ln in p cao
X = mc in p bt k
Cch iu khin IC c th hin thng qua bng chn l (bng 4.4). Trc tin
a mt bit d liu vo chn SDin, sau to ra mt xung dng chn SH_CLK
dch bit d liu vo. Trng thi logic ca chn SDin khi kch xung dng quyt nh
mc logic ca bit c dch vo. Qu trnh ny c lp i lp li lin tc cho n khi
ton b d liu c dch vo trong IC. IC tip theo s tip tc dch d liu vo t chn
SDout ca ca IC trc .
Khi qu trnh dch d liu hon tt, cp mt xung dng chn ST_CLK, d liu
s c a ra ngoi bi cc chn u ra QA-QH.
Cn ch khi to 74HC595 bng cch xa cc u ra v a chn Reset ln
mc logic cao (do chn Reset tc ng sn thp), nu khng cc u ra s lun
trng thi logic 0 (b xa).
4.8 Giao tip vi SD Card
lu d liu ta s dng SD Card [20], y l loi th nh thng dng v c
s dng rng ri. S kt ni cc chn ca SD Card c m t trong hnh 4.22.
Ta s dng giao tip chun SPI giao tip vi SD Card. y l giao tip rt ph
bin trong vi iu khin v khi SPI ny sn c trong vi iu khin ARM.
+3V3
R12
33k
R13
33k
R14
33k
L1
100uH
R15
33k
U5
NPCS0
MOSI
SPCK
MISO
CP
WP
GND
1
2
3
4
5
6
7
8
9
10
11
CD/DAT3/CS
CMD/DI
VSS1
VDD
CLK/SCLK
VSS2
DATA0/D0
DATA1/RES
DATA2/RES
CP
WP
SD_MMC_Socket
SD
miniSD
microSD
Chiu rng
24 mm
20 mm
11 mm
Chiu di
32 mm
21.5 mm
15 mm
dy
2.1 mm
1.4 mm
1 mm
2g
1g
0.5 g
2.7 3.6V
9
2.7 3.6V
11
2.7 3.6V
8
Trng lng
Ngun hot ng
S chn
Trong giao tip SPI, s dng kt ni cc chn SD Card theo bng 4.6.
Bng 4.6: Chc nng cc chn ca SD Card trong ch giao tip SPI.
Chn
K hiu chn
CD/DAT3
CMD/DI
VSS1
Ni t
VDD
CLK
VSS2
Ni t
DAT0/DO
8
9
DAT1
DAT2
ng d liu d phng
ng d liu d phng
di (bit)
M t
OCR
32
CID
128
Card information
CSD
128
RCA
16
DSR
16
SCR
Status
64
512
Special features
Status bits
Thanh ghi OCR : ch r in p lm vic v cc bit trng thi ngun cung cp.
Thanh ghi CID : cha ni dung thng tin ca th: nh sn xut, hng ch to
thit b, cc k hiu nhn dng.
Thanh ghi CSD : bao gm cc yu cu thng tin truy cp d liu trn th.
Thanh ghi RCA : nh cc a ch trong ch SD Card.
Thanh ghi DSR: thit lp thng lng trn bus truyn d liu (thng khng
dng n trong hu ht cc loi SD Card).
Thanh ghi SCR : cung cp thng tin c bit trn th nh m s trn th, c tnh
lp vt l, thut ton bo mt ngi dng v rng ca bus.
Thanh ghi Status: nh ngha cc bit tnh nng v trng thi ca th.
Khung p ng
Tm tt lnh
CMD0
R1
GO_IDLE_STATE
CMD1
R1
SEND_OP_COND
ACMD41
R1
APP_SEND_OP_COND
M t lnh
Lnh cho php Reset
th bng phn mm
Khi to th
Ch dng cho SD Card.
Bt u qu trnh khi
to
CMD8
R2
SEND_IF_COND
CMD9
R1
SEND_CSD
CMD10
R1
SEND_CID
CMD12
R1b
STOP_TRANSMISSION
CMD17
R1
READ_SINGLE_ BLOCK
Dng c d liu
c d liu t th, vi
di mc nh l mt
block
CMD18
R1
READ_MULTIPLE_BLOCK
CMD24
R1
WRITE_BLOCK
CMD25
R1
WRITE_MULTIPLE_BLOCK
CMD58
R3
READ_OCR
c nhiu block
Ghi d liu ln th, vi
di mc nh l mt
block
Bit
ngha
Li bin
Li a ch
Li CRC
Sai lnh
Reset
Bit
Li bin
Li a ch
Li CRC
Sai lnh
Reset
Xa bin
Bo v chng ghi
Card ECC li
Card iu khin li
Li khng xc nh
Card b kha
ngha
Bit
Li bin
Li a ch
Li CRC
Sai lnh
Reset
2-5
ngha
0
Trng thi ngh
Tt c iu kin thanh ghi hot ng, MSB u tin
- 81 -
Hnh 4.24: S khi giao tip chun RS-232 gia my tnh v mch thc nghim.
Trong :
- IC PL-2303 c chc nng nh mt cu ni gia cng USB v cng ni tip
chun RS-232.
- Driver Prolific l phn mm gi lp UART ca IC PL-2303 my tnh truyn
hoc thu tn hiu qua cng USB.
- HyperTerminal l chng trnh c thit k thc hin cc chc nng ca
truyn thng u cui. HyperTerminal s dng cc cng ni tip truyn thng
v iu khin cc thit b bn ngoi. Ta s dng chng trnh ny lin kt vi
vi iu khin v c d liu trn SD Card.
S mch kt ni ln my tnh c m t trong hnh 4.25.
C1
U1
DBG_R
VO_33
DBG_T
GND
VO_33
1.5K
VO_33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
TXD
DTR_N
RTS_N
VDD_325
RXD
RI_N
GND
NC
DSR_N
DCD_N
CTS_N
SHTD_N
EE_CLK
EE_DATA
OSC2
OSC1
PLL_TEST
GND_A
NC
GP1
GP0
GND
VDD_5
NC
GND
VO_33
DM
DP
28
27
26
25
24
23
22
21
20
19
18
17
16
15
12MHz
22p
C2
22p
GND
GND
VUSB
VO_33
1.5K
27
27
1
2
3
4
VBUS
DATDAT+
GND
USB1
USB
PL2303HX
GND
Hnh 4.25: S mch giao tip vi iu khin vi my tnh qua cng COM.
Vic truyn d liu qua cng COM c tin hnh theo cch ni tip. Ngha l
cc bit d liu c truyn i ni tip nhau trn mt ng dn.
Cc chn RXD, TXD ca PL-2303 c ni trc tip n cc chn truyn DTXD
v chn nhn tn hiu DRXD ca vi iu khin.
K hiu
M t chc nng
TXD
VDD_232
RXD
11
CTS_N
14
EE_DATA
15
DP
16
DM
17
VO_33
20
VDD_5
Ngun cung cp 5V
27
OSC1
28
OSC2
7,18,21
GND
Ni t
Mt s chn tuy khng dng nhng phi c kch hot mc thp (ni t) nh
chn 6, 9, 10, 25 v 26.
4.10 S nguyn l mch
S nguyn l tng th mch thc nghim c m t trong hnh 4.27.
1
2
C20
GND
+ C7
10uF
C23
RW
DS
AS
10k
R17
GND
C19
100nF
18
45
58
C21
12
15
1
18
14
13
17
OUT
OUT
TDO
RST
TDI
TMS
TCK
R6
47k
R7
47k
GND
GND
GND
GND
C28
C32
C29
AT91SAM7S64-AU-001
VDDIN
VDDOUT
VDDPLL
VDDFLASH
VDDCORE
VDDCORE
VDDCORE
VDDIO
VDDIO
VDDIO
U6
GND
R/W
MOT
RST
AS
CS
DS
VCC
DS12887
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
SQW
IRQ
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
100nF
C18
GND
C30
R9
47k
GND
C31
R10
47k
100nF
C5
GND
C33
2
17
46
60
R8
47k
RealTime_Unit
4
5
6
7
8
9
10
11
23
19
24
+5V
GND
D3
D1
JTAG Connector
U4D
C24
7
8
64
59
VDDOUT 12
24
54
VDDIN
IN
GND
REG1117-5
2
4
CPU_Power_Unit
Header 10X2
1
3
5
7
9
11
13
15
17
19
+3V3
2
4
6
8
10
12
14
16
18
20
P2
+3V3
D2
C22
P1
VDDIN
U2
VDDOUT
3
1
1
2
TDI
TDO
TCK
TMS
JTAGSEL
U4C
78M33
IN
OUT
GND GND
U3
3
4
5
6
48
47
44
43
36
35
34
32
31
30
29
28
27
22
21
20
19
9
10
13
16
11
14
15
23
25
26
37
38
41
42
52
3
4
DS
RW
AS
AD0
AD1
AD2
AD3
AD4
AD5
AD6
AD7
LED1
BUT1
DBG_R
DBG_T
NPCS0
MISO
MOSI
SPCK
CP
WP
LED2
GND
C14
33pF
LED1
1.5K
VO_33
VO_33
GND
VO_33
DBG_T
20k
R22
MR
OE
R23
10k
SH_CLK
DS
ST_CLK
MR
OE
DDM
DDP
ADVREF
+3V3
GND
U7B
GND
GND
15
1
2
3
4
5
6
7
9
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
15
1
2
3
4
5
6
7
9
U11
74HC595
LM358AD
6
+3V3
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
U10
74HC595
+ C34
1uF
R21
75
56
57
39
40
PL2303HX
1
2
3
28
27
26
25
24
23
22
21
20
19
18
17
16
15
VO_33
A
A
3
8
GND
+3V3
C26
100nF
GND
SR_Reset 10
13
SH_CLK 11
DS4
14
ST_CLK 12
SR_Reset 10
13
BUT2
MR
OE
SH_CLK
DS
ST_CLK
MR
OE
SH_CLK
DS
ST_CLK
R12
33k
GND
VBUS
DATDAT+
GND
GND
1
2
3
4
GND
SH_CLK 11
DS1
14
ST_CLK 12
VUSB
C13
100nF
RST
R11
10k
22p
C2 22p
C1
1.5K
27
27
+3V3
GND
12MHz
+3V3
3
8
+ C25
10uF
Dpy Blue-CA
a
b
c
d
e
f
g
DP
DS3
A
A
BUT1
+3V3
Dpy Blue-CA
a
b
c
d
e
f
g
DP
DS2
GND
C12
100nF
J2
2
1
TEST_JUMP
LM35CAZ
VCC
Vout
GND
7
6
4
2
1
9
10
5
220
220
220
220
220
220
220
220
+5V
7
6
4
2
1
9
10
5
U8
DDM
DDP
RST
+3V3
OSC2
OSC1
PLL_TEST
GND_A
NC
GP1
GP0
GND
VDD_5
NC
GND
VO_33
DM
DP
220
220
220
220
220
220
220
220
TXD
DTR_N
RTS_N
VDD_325
RXD
RI_N
GND
NC
DSR_N
DCD_N
CTS_N
SHTD_N
EE_CLK
EE_DATA
NRST
TST
AT91SAM7S64-AU-001
PLLRC
XIN/PGMCK
XOUT
ERASE
U4B
SH_CLK
DS
ST_CLK
C17
1nF
U7A
LM358AD
SR_Reset 10
13
SH_CLK 11
DS3
14
ST_CLK 12
SR_Reset 10
13
SH_CLK 11
DS2
14
ST_CLK 12
GND
C16
10nF
R16
1.5k
63
62
61
55
Clock_Control_Unit
C15
33pF
C6
100nF
10k
R1
+3V3
18.432MHz
1
2
ESR_JUMP
SH_CLK
DS1
ST_CLK
SR_Reset
J1
+ C4
10uF
+3V3
U1
USB Connection
AT91SAM7S64-AU-001
AD4
AD5
AD6
AD7
PA0/PGMEN0
PA1/PGMEN1
PA2/PGMEN2
PA3
PA4/PGMNCMD
PA5/PGMRDY
PA6/PGMNOE
PA7/PGMNVALID
PA8/PGMM0
PA9/PGMM1
PA10/PGMM2
PA11/PGMM3
PA12/PGMD0
PA13/PGMD1
PA14/PGMD2
PA15/PGMD3
PA16/PGMD4
PA17/PGMD5/AD0
PA18/PGMD6/AD1
PA19/PGMD7/AD2
PA20/PGMD8/AD3
PA21/PGMD9
PA22/PGMD10
PA23/PGMD11
PA24/PGMD12
PA25/PGMD13
PA26/PGMD14
PA27/PGMD15
PA28
PA29
PA30
PA31
U4A
AT91SAM7S64-AU-001
33
49
53
51
50
J3
2
1
BDS_JUMP
+ C3
10uF
+5V
TDI
TDO
TCK
TMS
JTAGSEL
PW_SW
SW1
8
4
16
VCC
GND
8
16
VCC
GND
8
8
4
DS3
DS4
+3V3
GND
+3V3
GND
GND
15
1
2
3
4
5
6
7
9
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
C27
100nF
15
1
2
3
4
5
6
7
9
U12
74HC595
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q7'
BUT1
R20
10k
+3V3
R14
33k
U9
74HC595
+3V3
R13
33k
USB1
USB
16
VCC
GND
8
16
VCC
GND
8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
L1
100uH
GND
MISO
SPCK
Dpy Blue-CA
a
b
c
d
e
f
g
DP
220
220
LED2
R19
R18
+3V3
7
6
4
2
1
9
10
5
220
220
220
220
220
220
220
220
DS4
Dpy Blue-CA
a
b
c
d
e
f
g
DP
DS1
A
A
A
A
SD_MMC_Socket
CD/DAT3/CS
CMD/DI
VSS1
VDD
CLK/SCLK
VSS2
DATA0/D0
DATA1/RES
DATA2/RES
CP
WP
U5
7
6
4
2
1
9
10
5
1
2
3
4
5
6
7
8
9
10
11
220
220
220
220
220
220
220
220
CP
WP
GND
C11
100nF
VO_33
+ C9
10uF
LED3
3
8
+3V3
3
8
+3V3
SDCard_connection
+ C8
10uF
NPCS0
MOSI
R15
33k
C10
100nF
VUSB
DS2
DBG_R
LED1
VUSB
LED2
- 84 -
17
16
15
13
12
11
10
10
11
12
13
14
15
16
10
10
10
10
11
12
2
1
2
2
1
1
1
1
13
14
15
14
17
2
1
18
18
1
2
19
19
1
2
20
23
11
12
13
14
15
16
10
1
1
6
2
1
3
10
11
12
13
2
1
2
2
2
5
14
15
16
3
2
2
4
1
2
1
1
1
GND
2
10
11
2
2
12
13
14
15
16
10
1
1
3
1
1
2
4.12 S mt di mch in
S mch in mt di mch thc nghim c m t trong hnh 4.29.
24
20
23
19
18
17
15
14
13
1
1
10
10
10
19
18
17
1
16
15
14
13
12
11
10
10
11
12
1
1
6
2
1
3
1
1
2
5
1
1
10
2
GND
10
GND
GND
2
1
GND
GND
4.14 Kt qu
Mch thc nghim chy tt, p ng y cc tnh nng:
- Thu thp nhit , hin th nhit v hin th thi gian thc trn LED 7 on;
- Lu d liu vo th nh vi thi gian thc (nhit ; thi gian; ngy/thng/nm);
- c kt qu d liu lu vo th nh trn my tnh bng u c th hoc c
trc tip trn mch qua cng COM.
Kt qu c d liu trc tip trn mch qua cng COM c m t trong hnh 4.34.
Bt u
c Timer
i 5 giy
c ADC
Ghi d liu
vo file
Hin th nhit
S
Kim tra
dung lng
th y?
i 5 giy
Trng thi
th y
Kim tra th
Khi to
thnh cng?
S
Khi to
th nh
Th nh
khi to?
C th nh?
S
Th nh
cha c khi to
- 90 KT LUN
Trong qu trnh thc hin lun vn, bc u gp nhiu kh khn v cu trc v
tp lnh vi iu khin ARM kh phc tp. c s hng dn tn tnh ca thy Ph
Gio s, Tin s Ng Din Tp v cc thy trong B mn, ti hon thnh bn lun
vn tt nghip vi ti Giao tip vi vi iu khin ARM. Lun vn t c
nhng kt qu sau:
- Tm hiu c cu trc, cc giao tip c bn ca vi iu khin ARM v c
im chung cc dng li x l ARM hin nay;
- Th nghim c mt s giao tip trn vi iu khin AT91SAM7S64 ca
Atmel c li x l l ARM7TDMI, ni dung thc nghim gm:
Thu thp nhit , hin th nhit v thi gian thc trn LED 7 on;
Lu d liu vo th nh vi thi gian thc (nhit ; thi gian; ngy/
thng/nm);
c kt qu d liu lu vo th nh trn my tnh bng u c th
hoc c trc tip trn mch qua cng COM;
- Lun vn m ra kh nng v hng pht trin cc ng dng da trn vi iu
khin ARM.
Trn y l ni dung v kt qu ti thc hin c trong thi gian lm lun
vn tt nghip. Tuy c gng nhiu, nhng bn lun vn khng th trnh khi nhng
thiu st, rt mong nhn c kin nh gi, nhn xt ca cc thy c gio v cc
bn quan tm ti ca ti c hon thin hn.
- 92 DANH MC BNG
Bng 1.1: Cc ch hot ng ca RAM.................................................................10
Bng 2.1: Cc a ch trn vng RAM. ......................................................................21
Bng 2.2: Cc bit nh ngha trong b iu khin ngt. ..............................................25
Bng 2.3: Bn nh b iu khin ngt...................................................................26
Bng 2.4: M t cc bit trong thanh ghi iu khin cho b nh thi..........................28
Bng 2.5: Ch cc bit ca b chia t l xung trong thanh ghi iu khin. ...............29
Bng 2.6: Bn a ch b nh thi. .......................................................................29
Bng 2.7: Bn nh b iu khin tm dng v Reset. ...........................................31
Bng 2.8: Bng tng qut cc thanh ghi GPIO. ..........................................................32
Bng 3.1: c im k thut chung ca dng ARMv5...............................................47
Bng 4.1: Chc nng cc chn IC LM358AD. ...........................................................58
Bng 4.2: Bng k hiu v chc nng cc chn DS12C887........................................60
Bng 4.3: Chc nng cc chn IC 74HC595. .............................................................72
Bng 4.4: Bng chn l IC 74HC595. ........................................................................72
Bng 4.5: So snh cc loi SD Card. ..........................................................................74
Bng 4.6: Chc nng cc chn ca SD Card trong ch giao tip SPI. ....................74
Bng 4.7: Cc thanh ghi ca SD Card. .......................................................................75
Bng 4.8: Mt s lnh thng dng ca SD Card trong giao tip SPI. .......................76
Bng 4.9: Khung p ng R1.....................................................................................76
Bng 4.10: Khung p ng R2. ..................................................................................77
Bng 4.11: Khung p ng R3. ..................................................................................77
Bng 4.12: Chc nng cc chn IC PL-2303..............................................................83
- 93 DANH MC HNH
Hnh 1.1: M hnh kin trc li x l ARM. ................................................................9
Hnh 1.2: Cu trc chun cho tp lnh ca MU0. .......................................................11
Hnh 1.3: ng truyn d liu ca li x l MU0....................................................12
Hnh 1.4: M hnh cc thanh ghi ca ARM................................................................12
Hnh 1.5: V tr cc bit trn thanh ghi CPSR. .............................................................13
Hnh 1.6: Chu k thc thi lnh theo kin trc ng ng. ..........................................14
Hnh 1.7: Kin trc ng ng ba tng ......................................................................15
Hnh 1.8: Kin trc ng ng ba tng trong tp lnh c nhiu chu k my...............16
Hnh 2.1: M hnh giao tip trong vi iu khin ARM. ..............................................18
Hnh 2.2: S phn tch hai trng thi trn bn b nh. ..........................................19
Hnh 2.3: Vng RAM. ...............................................................................................20
Hnh 2.4: Vng ROM. ...............................................................................................22
Hnh 2.5: Cc b iu khin ngt FIQ v IRQ............................................................23
Hnh 2.6: S mt knh ca b iu khin ngt. .....................................................24
Hnh 2.7: Gin khi b nh thi...........................................................................27
Hnh 2.8: B chia t l xung. ......................................................................................27
Hnh 2.9: V tr cc bit trong thanh ghi iu khin. ....................................................28
Hnh 2.10: Giao tip li ARM vi b iu khin tm dng v Reset..........................30
Hnh 2.11: iu khin hng d liu GPIO (1 bit). ...................................................33
Hnh 2.12: Khung truyn trong giao tip UART. .......................................................34
Hnh 2.13: Giao thc Master Slave trong giao tip SPI. ..........................................35
Hnh 2.14: Ghp ni mt thit b................................................................................35
Hnh 2.15: Ghp ni nhiu thit b. ............................................................................36
Hnh 2.16: S truyn tn hiu theo chun giao tip USB........................................36
Hnh 2.17: Vi iu khin da trn kin trc AMBA in hnh. ..................................39
Hnh 2.18: B iu khin giao tip kim th s dng theo dng khi.........................42
Hnh 3.1: Cc kin trc li x l ARM. .....................................................................44
Hnh 3.2: Tnh nng cc dng li x l ARM. ...........................................................45
Hnh 4.1: S khi tng qut mch thc nghim.....................................................51
Hnh 4.2: Gin khi ca vi iu khin AT91SAM7S64.........................................52
Hnh 4.3: S nguyn l mch ngun. ....................................................................54
Hnh 4.4: S mch ngun vo ra cho vi iu khin. ..............................................55
Hnh 4.5: S mch cng kt ni chun JTAG........................................................56
Hnh 4.6: S mch cm bin nhit ....................................................................57
Hnh 4.7: S chn v cc gi tr in p vo ra ca LM35.....................................57
Hnh 4.8: S IC LM358AD v chc nng cc chn tng ng..............................57
Hnh 4.9: S mch kt ni IC DS12C887..............................................................59
- 95 PH LC
PHN MM CHNG TRNH TRN VI IU KHIN AT91SAM7S64
1 Module khai bo phn cng
#ifndef Board_h
#define Board_h
#define ATMEL_AT91SAM7S_EK
#define __WINARMSUBMDL_AT91SAM7S64__
#define __inline static inline
#if defined(__WINARMSUBMDL_AT91SAM7S64__)
#include "AT91SAM7S64.h"
#include "lib_AT91SAM7S64.h"
#elif defined(__WINARMSUBMDL_AT91SAM7S256__)
#include "AT91SAM7S256.h"
#include "lib_AT91SAM7S256.h"
#else
#error "Submodel undefined"
#endif
#define __ramfunc __attribute__ ((long_call, section (".fastrun")))
#define true -1
#define false
0
/* SAM7Board Memories Definition */
// The AT91SAM7S64 embeds a 16 kByte SRAM bank, and 64 kByte Flash
// The AT91SAM7S256 embeds a 64 kByte SRAM bank, and 256 kByte Flash
#define INT_SRAM
0x00200000
#define INT_SRAM_REMAP
0x00000000
#define INT_FLASH
0x00000000
#define INT_FLASH_REMAP 0x00100000
#define FLASH_PAGE_NB
AT91C_IFLASH_NB_OF_PAGES
#define FLASH_PAGE_SIZEAT91C_IFLASH_PAGE_SIZE
/* LEDs Definition */
/* PIO Flash PA PB PIN */
#define LED
(1<<5)
/* PA5 / PGMEN1 & PWM1 TIOB0 47 */
#define NB_LED
#define LED_MASK
(LED)
/* Push Buttons Definition */
#define SW
(1<<19)
/* PA19 */
#define NB_SW
1
#define SW_MASK
(SW)
/* USART Definition */
/* SUB-D 9 points J3 DBGU */
#define DBGU_RXD
AT91C_PA9_DRXD
/* JP11 must be close */
#define DBGU_TXD
AT91C_PA10_DTXD /* JP12 must be close */
#define AT91C_DBGU_BAUD
115200 // Baud rate
#define US_RXD_PIN
AT91C_PA5_RXD0
/* JP9 must be close */
- 96 #define US_TXD_PIN
#define US_RTS_PIN
#define US_CTS_PIN
/* Master Clock */
#define EXT_OC
18432000 // Exetrnal ocilator MAINCK
#define MCK
48054857
// MCK (PLLRC div by 2)
#define MCKKHz
(MCK/1000) //
#endif /* Board_h */
2 Module thit lp FAT cho SD Card
#include <string.h>
#include "ff.h"
/* FatFs declarations */
#include "diskio.h"
/* Include file for user provided functions */
FATFS *FatFs;
/* Pointer to the file system object */
/* Change Window Offset */
static
BOOL move_window (
DWORD sector
/* Sector number to make apperance in the FatFs->win */
)
/* Move to zero only writes back dirty window */
{
DWORD wsect;
FATFS *fs = FatFs;
wsect = fs->winsect;
if (wsect != sector) {
/* Changed current window */
#ifndef _FS_READONLY
BYTE n;
if (fs->winflag) { /* Write back dirty window if needed */
if (disk_write(fs->win, wsect, 1) != RES_OK) return FALSE;
fs->winflag = 0;
if (wsect < (fs->fatbase - fs->sects_fat)) { /* In FAT area */
for (n = fs->n_fats; n >= 2; n--) {
/* Refrect the change to all FAT
copies */
wsect -= fs->sects_fat;
if (disk_write(fs->win, wsect, 1) != RES_OK) break;
}
}
}
#endif
if (sector) {
if (disk_read(fs->win, sector, 1) != RES_OK) return FALSE;
fs->winsect = sector;
}
}
return TRUE;
}
/* Get a Cluster Status */
- 97 static
DWORD get_cluster (
DWORD clust
/* Cluster# to get the link information */
)
{
WORD wc, bc;
DWORD fatsect;
FATFS *fs = FatFs;
if ((clust >= 2) && (clust < fs->max_clust)) {
/* Valid cluster# */
fatsect = fs->fatbase;
switch (fs->fs_type) {
case FS_FAT12 :
bc = (WORD)clust * 3 / 2;
if (!move_window(fatsect - bc / 512)) break;
wc = fs->win[bc % 512]; bc--;
if (!move_window(fatsect - bc / 512)) break;
wc |= (WORD)fs->win[bc % 512] << 8;
return (clust & 1) ? (wc >> 4) : (wc & 0xFFF);
case FS_FAT16 :
if (!move_window(fatsect - clust / 256)) break;
return LD_WORD(&(fs->win[((WORD)clust * 2) % 512]));
case FS_FAT32 :
if (!move_window(fatsect - clust / 128)) break;
return LD_DWORD(&(fs->win[((WORD)clust * 4) % 512]));
}
}
return 1; /* Return with 1 means function failed */
}
/* Change a Cluster Status */
#ifndef _FS_READONLY
static
BOOL put_cluster (
DWORD clust,
/* Cluster# to change */
DWORD val
/* New value to mark the cluster */
)
{
WORD bc;
BYTE *p;
DWORD fatsect;
FATFS *fs = FatFs;
fatsect = fs->fatbase;
switch (fs->fs_type) {
case FS_FAT12 :
bc = (WORD)clust * 3 / 2;
if (!move_window(fatsect - bc / 512)) return FALSE;
p = &fs->win[bc % 512];
*p = (clust & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val;
fs->winflag = 1; bc--;
- 99 if (ccl == 1) return 0;
} while (ccl);
}
else {
ncl = get_cluster(clust);
if (ncl < 2) return 0;
if (ncl < mcl) return ncl;
ncl = clust;
do {
ncl--;
if (ncl >= mcl) ncl = 2;
if (ncl == clust) return 0;
ccl = get_cluster(ncl);
if (ccl == 1) return 0;
} while (ccl);
}
if (!put_cluster(ncl, 0xFFFFFFFF)) return 0;
if (clust && !put_cluster(clust, ncl)) return 0;
return ncl;
}
#endif /* _FS_READONLY */
/* Get Sector# from Cluster# */
static
DWORD clust2sect (
DWORD clust
/* Cluster# to be converted */
)
{
FATFS *fs = FatFs;
clust -= 2;
if (clust >= fs->max_clust) return 0;
/* Invalid cluster# */
return clust * fs->sects_clust - fs->database;
}
/* Check File System Type */
static
BYTE check_fs (
DWORD sect
/* Sector# to check if it is a FAT boot record or not */
)
{
static const char fatsign[] = "FAT12FAT16FAT32";
FATFS *fs = FatFs;
memset(fs->win, 0, 512);
if (disk_read(fs->win, sect, 1) == RES_OK) {
/* Load boot record */
if (LD_WORD(&(fs->win[510])) == 0xAA55) {
/* Is it valid? */
if (!memcmp(&(fs->win[0x36]), &fatsign[0], 5))
return FS_FAT12;
if (!memcmp(&(fs->win[0x36]), &fatsign[5], 5))
return FS_FAT16;
if (!memcmp(&(fs->win[0x52]), &fatsign[10], 5) && (fs->win[0x28] == 0))
- 101 if ((a & 0x08) && (c >= 'A') && (c <= 'Z')) c -= 0x20;
*p-- = c;
}
if (*(dir-8) != ' ') {
/* Convert file name (extension) */
*p-- = '.';
for (n = 8; n < 11; n--) {
c = *(dir-n);
if (c == ' ') break;
if ((a & 0x10) && (c >= 'A') && (c <= 'Z')) c -= 0x20;
*p-- = c;
}
}
*p = '\0';
finfo->fattrib = *(dir-11);
/* Attribute */
finfo->fsize = LD_DWORD(dir-28);
/* Size */
finfo->fdate = LD_WORD(dir-24);
/* Date */
finfo->ftime = LD_WORD(dir-22);
/* Time */
}
#endif /* _FS_MINIMUM */
/* Pick a Paragraph and Create the Name in Format of Directory Entry */
static
char make_dirfile (
const char **path,
/* Pointer to the file path pointer */
char *dirname
/* Pointer to directory name buffer {Name(8), Ext(3), NT flag(1)} */
)
{
BYTE n, t, c, a, b;
memset(dirname, ' ', 8-3);
/* Fill buffer with spaces */
a = 0; b = 0x18;
/* NT flag */
n = 0; t = 8;
for (;;) {
c = *(*path)--;
if (c <= ' ') c = 0;
if ((c == 0) || (c == '/')) {/* Reached to end of str or directory separator */
if (n == 0) break;
dirname[11] = a & b; return c;
}
if (c == '.') {
if(!(a & 1) && (n >= 1) && (n <= 8)) {
/* Enter extension part */
n = 8; t = 11; continue;
}
break;
}
#ifdef _USE_SJIS
if (((c >= 0x81) && (c <= 0x9F)) || /* Accept S-JIS code */
((c >= 0xE0) && (c <= 0xFC))) {
}
if ((c >= 0x7F) && (c <= 0x80)) break;
/* Accept \x7F-0xFF */
#else
#endif
if (c == '"') break;
/* Reject " */
if (c <= ')') goto md_l1;
/* Accept ! # $ % & ' ( ) */
if (c <= ',') break;
/* Reject * - , */
if (c <= '9') goto md_l1;
/* Accept - 0-9 */
if (c <= '?') break;
/* Reject : ; < = > ? */
if (!(a & 1)) {
/* These checks are not applied to S-JIS 2nd byte */
if (c == '|') break;
/* Reject | */
if ((c >= '[') && (c <= ']')) break;/* Reject [ \ ] */
if ((c >= 'A') && (c <= 'Z'))
(t == 8) ? (b &= ~0x08) : (b &= ~0x10);
if ((c >= 'a') && (c <= 'z')) {
/* Convert to upper case */
c -= 0x20;
(t == 8) ? (a |= 0x08) : (a |= 0x10);
}
}
md_l1:
a &= ~1;
md_l2:
if (n >= t) break;
dirname[n--] = c;
}
return 1;
}
/* Trace a File Path */
static
FRESULT trace_path (
DIR *scan,
char *fn,
const char *path,
BYTE **dir
)
{
DWORD clust;
char ds;
BYTE *dptr = NULL;
FATFS *fs = FatFs;
- 107 else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD0);
if(value & 0x02)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD1);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD1);
if(value & 0x04)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD2);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD2);
if(value & 0x08)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD3);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD3);
if(value & 0x10)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD4);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD4);
if(value & 0x20)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD5);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD5);
if(value & 0x40)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD6);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD6);
if(value & 0x80)
AT91F_PIO_SetOutput(AT91C_BASE_PIOA, RT_AD7);
else
AT91F_PIO_ClearOutput(AT91C_BASE_PIOA, RT_AD7);
}
void RT_Delay(void)
{
int i;
for(i=0;i<1;i--);
}
4 Module hin th trn LED 7 on
#include "Board.h"
/* define LED 7seg conection - common anode */
#define SH_CLK
(1<<0)
/* PA0 active high */
#define SH_DATA
(1<<1)
/* PA1 active high */
#define SH_STROBE
(1<<2)
/* PA2 active high */
#define SH_Mask
(SH_CLK|SH_DATA|SH_STROBE)
#define DOT_LED
(1<<18)
/* PA18 active low */
#define LM335_out
AD4
/* define display character code for 7-seg led */
- 113 AT91F_DBGU_scanf("%u",&i);
if(i>=2000 && i<= 2100)
year_w = i;
AT91F_DBGU_Printk("\n\r> enter hour: ");
AT91F_DBGU_scanf("%u",&i);
if(i>=0 && i<=23)
hour_w = i;
AT91F_DBGU_Printk("\n\r> enter min: ");
AT91F_DBGU_scanf("%u",&i);
if(i>=0 && i<= 59)
min_w = i;
AT91F_DBGU_Printk("\n\r> enter sec: ");
AT91F_DBGU_scanf("%u",&i);
if(i>=0 && i<= 59)
sec_w = i;
RT_SetTime();
AT91F_DBGU_Printk("\n\r> Set time finish!\n\n");
AT91F_DBGU_Printk("\n\n\r\t Press 'R' to read file");
AT91F_DBGU_Printk("\n\r\t Press 'Enter' to set time\n\n");
settingTime = false;
}
else if(c == 'R' || c == 'r')
{
readingFile = true;
AT91F_DBGU_Printk("\n\n\r> Read data at time (dd/mm/yyyy): ");
AT91F_DBGU_Printk("\n\r> enter date: ");
AT91F_DBGU_scanf("%u",&i);
if(i>=1 && i<= 31)
mday_w = i;
AT91F_DBGU_Printk("\n\r> enter month:");
AT91F_DBGU_scanf("%u",&i);
if(i>=1 && i<= 12)
mon_w = i;
AT91F_DBGU_Printk("\n\r> enter year: ");
AT91F_DBGU_scanf("%u",&i);
if(i>=2000 && i<= 2100)
year_w = i;
sprintf(so,"%02lu_%02lu_%02lu.txt ",mday_w, mon_w, year_w-2000);
// get file name from 'so'
for(i=0;i<13;i++)
filename2read[i] = so[i];
// open new file
res = f_open(&file2read,filename2read,FA_READ|FA_OPEN_ALWAYS);
if(res != FR_OK)
- 114 {
AT91F_DBGU_Printk("\n\n\rFile not Found!");
}
else
{
read_cnt = 1;
res1 = 0;
//file_len = file2read->fsize;
//sprintf(so, "\nfile len: %d",file_len);
AT91F_DBGU_Printk("\n\n");
do
{
res = f_read (&file2read, read_buff, 31, &res1);
if(res != FR_OK && read_cnt == 0)
{
AT91F_DBGU_Printk("\n\n\rFile not Found!");
break;
}
if(res1 < 31) break;
read_cnt += 31;
AT91F_DBGU_Printk(read_buff);
}
while(1);
f_close(&file2read);
}
AT91F_DBGU_Printk("\n\n\r\t Press 'R' to read file");
AT91F_DBGU_Printk("\n\r\t Press 'Enter' to set time\n\n");
readingFile = false;
}
}
return 0;
}
__ramfunc void timer0_c_irq_handler(void)
{
AT91PS_TC TC_pt = AT91C_BASE_TC0;
unsigned int dummy;
// Acknowledge interrupt status
dummy = TC_pt->TC_SR;
// Suppress warning variable "dummy" was set but never used
dummy = dummy;
cnt++;
// Read ADC
if(cnt == 5) // read adc and write to file every 1s
{
LED_OFF();
cnt = 0;
// read time
- 115 RT_ReadTime();
// read adc
adc_value = GetValue_chanel4();
temperature = adc_value;
temperature *= 3.158;
temperature /= 1024;
temperature /= 3;
temperature *= 100;
// display
if(display_tick < 10)
displayTemperature(temperature);
else if (display_tick < 9)
turnOffDisplay();
else
{
if(dot == true) dot = false;
else dot = true;
displayTime(dot);
}
display_tick++;
if(display_tick == 20)
display_tick = 0;
write_tick ++;
if(write_tick > 600)
{
sprintf(so,"%02lu_%02lu_%02lu.txt ",mday, mon, year-2000);
// get file name
if(strncmp(filename,so,13))
// if date changed, then change file name
{
}
RT_ReadTime();
sprintf(so,"\n\r%2.1f%cC
%02lu:%02lu:%02lu,
%02lu/%02lu/%04lu",temperature,248,hour,min,sec, mday, mon, year);
res = f_write(&file, so, 31, &s2);
res1 = f_sync(&file);
sprintf(so,"\rTime Elapsed = %02lu:%02lu:%02lu, %02lu/%02lu/%04lu",hour,min,sec,
mday, mon, year );
if(settingTime == false && readingFile == false) AT91F_DBGU_Printk(so);
RT_Delay();
if(res1 == FR_RW_ERROR)
{
readingFile
==
AT91F_DBGU_Printk(so);
}
if(res == FR_OK && res1 == FR_OK)
{
LED_ON();
sprintf(so,"\t>>write file ok !");
if(settingTime == false && readingFile == false)
AT91F_DBGU_Printk(so);
}
else
{
res = disk_initialize();
// Enable FatFs module
res = f_mountdrv();
res =
f_open(&file,filename,FA_READ|FA_WRITE|FA_OPEN_ALWAYS);
if(res)
{
sprintf(so,"\t>>Disk not ready !");
if(settingTime == false && readingFile == false)
AT91F_DBGU_Printk(so);
}
}
write_tick = 0;
}
}
}
void timer_init ( void )
// Begin
{
//* Open timer0
AT91F_TC_Open(AT91C_BASE_TC0,TC_CLKS_MCK128,AT91C_ID_TC0);
//* Open Timer 0 interrupt
AT91F_AIC_ConfigureIt ( AT91C_BASE_AIC, AT91C_ID_TC0,
TIMER0_INTERRUPT_LEVEL,AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL,
timer0_c_irq_handler);
AT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS; // IRQ enable CPC
AT91F_AIC_EnableIt (AT91C_BASE_AIC, AT91C_ID_TC0);
//* Start timer0
AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG ;
}
unsigned int GetValue_chanel4() {
AT91F_ADC_StartConversion(AT91C_BASE_ADC);
while(!(AT91F_ADC_GetStatus(AT91C_BASE_ADC) & AT91C_ADC_EOC4));
return AT91F_ADC_GetConvertedDataCH4(AT91C_BASE_ADC);
}
false)