You are on page 1of 5

Ngi bo co:

Nguyn Quang Nam

Ti liu:

TUT05.01

Ngy:

9/18/2006

Trang:

1/5

Tutorial no 05.01
Gi n:

on Hip, www.picvietnam.com

Ni dung:

S dng cc module UART v I2C ca dsPIC


MICROSOFT WORD

Tm tt:
y l tutorial 4 v lp trnh vi dsPIC. Tutorial ny hng dn cch s dng module UART
v I2C ca dsPIC, l nhng module ngoi vi c sn trong cc chip dsPIC. Cc v d c vit bng
hp ng v ngn ng C (dng trnh dch C30 Compiler ca Microchip), v trong a s trng hp
hai phin bn hp ng v C30 l hon ton tng ng.

1. Gii thiu
Tutorial ny gii thiu cc module UART v I2C ca dsPIC. Cch thit lp module
UART, cch pht v thu thng tin c cp. Mt s thng tin v ngt cho module
UART v b m FIFO 4 mc cng c nu ra. Cch dng module I2C ch
Master c gii thiu y, thng qua mt v d giao tip vi mt vi mch ng h
thi gian thc (DS1307). Cc chng trnh con ghi, c t bus I2C c th c dng
xy dng cc chng trnh khc nhau.

2. Cc quy c trong ti liu


M t
Font Palatino Linotype:

Biu th

In nghing

Ti liu tham kho

Vit hoa ch u

Mt menu, hp thoi
Tn ring (ca tp tin,
project, )

t trong du nhy kp

V d
dsPIC30F/33F
Programmers Reference
Manual
Chn Project Wizard
Vidu3

Font Courier:
Courier thng

M ngun
Tn tp tin

mov #0x8010, W0
Vidu3-1.s

Ngi bo co:

Nguyn Quang Nam

Ti liu:

TUT05.01

Ngy:

9/18/2006

Trang:

2/5

3. Cc v d v module UART v I2C


Bn hy chp cc tp tin ngun c nh km vo mt th mc no m bn s
dng to ra project Vidu4. Vi hai v d 4-1 v 4-2, chng ta ch s dng cc chn
giao tip chnh (main I/O) ca module UART1, do s nguyn l khng c th
hin y (v kh n gin). Phn cng cho hai v d ny ch dng thm mt chip RS232 transceiver (MAX232 hay tng ng) ni dsPIC vi my tnh. Nu ch ni cc
chip vi nhau th chng ta c th b qua transceiver.

3.1.

V d 4-1

Lm theo cc bc nh trong tutorial 1 to ra mt project c tn l Vidu4, sau


bn thm vo project tp tin ngun Vidu4-1.s v kch bn lin kt
p30f4012.gld cho trng hp dng hp ng. i vi trng hp dng C30, chng
ta cng to mt project theo cch tng t, ch khc l chng ta s chn Microchip C30
Toolsuite bc 2, v tp tin ngun c s dng l Vidu4-1.c.
s dng module UART1 (hay UART2), bn cn khi to t nht cc thanh ghi
sau:
U1MODE (hay U2MODE): thanh ghi t ch giao tip, vi cc tham s chn v
tr chn giao tip, s bit thng tin, s bit parity, v s stop bit
U1STA (hay U2STA): thanh ghi trng thi, nhng c cha mt s c nh UTXEN
cho php pht k t
U1BRG (hay U2BRG): thanh ghi m to tc baud, vi gi tr c tnh theo
cng thc sau:
UxBRG =

Fcy
1
Baud 16

vi: x l ch s ca module (x = 1 hay 2), Fcy l tn s thc thi lnh (= tn s xung


clock/4 vi cc dsPIC30F), v Baud l tc baud cn thit.
Nu mun s dng ngt, chng ta cn khi to thm c ngt, c cho php ngt,
u tin ngt (nu cn thit). Cn ch l dsPIC h tr ngt khi thu (receive) v ngt khi
pht (transmit) mt cch c lp cho tng module UART. Do , ly v d mt chip
dsPIC c hai module UART1 v UART2, chip s c 4 vect ngt ring bit cho trng
hp thu hay pht ca module UART1 cng nh thu hay pht ca module UART2. V
cc c ngt, c cho php ngt, cng nh cc bit thit lp u tin ngt cng tn ti
mt cch tng ng cho mi vect ngt. Bn tham kho ti liu dsPIC Family Reference
Manual (DS70046 phin bn hin ti l DS70046E) v datasheet ca chip c th c
thm thng tin v vic s dng ngt vi cc module UART.

Ngi bo co:

Nguyn Quang Nam

Ti liu:

TUT05.01

Ngy:

9/18/2006

Trang:

3/5

pht thng tin ra bng module UART, bn ch cn ghi vo thanh ghi U1TXREG
(hay U2TXREG), vi iu kin tt nhin l chng ta khi to cho ch pht. Ch
l module UART ca dsPIC c b m pht 4 mc, do bn c th ghi lin tip 5 k t
m vn khng lm trn b m pht ln pht k t u tin (v ngoi b m pht
cn c thanh ghi dch khi pht, ang cn trng). Mc d kh nng ny ca module
UART khng c dng trong cc v d, nhng bn cn hiu rng iu ny l c th
i vi dsPIC.
Ch : Khi dng ch pht, bit UTXEN (trong thanh ghi UxSTA) ch nn c bt
khi bt bit UARTEN (trong thanh ghi UxMODE).
Tng t nh vy, bn c t thanh ghi U1RXREG (hay U2RXREG) ly k t
c module UART nhn t bn ngoi, tt nhin l chng ta khi to y cho
ch thu. B m thu cng c 4 mc, v bn c th thit lp module UART ch to
ra ngt khi c 4 k t b m (iu ny gip lm gim s ln vo ngt thu).
V d 4-1 ch thc hin mt vic n gin l xut chui k t Xin chao! ra cng
RS-232 sau mi giy. Chui k t dng nh dng ASCIIZ, tc l chui cc k t ASCII
kt thc bng gi tr 0. Chng trnh kh trc quan v c ch thch y , do
khng cn gii thch thm y.

3.2.

V d 4-2

Thc hin cc thao tc tng t nh trong tutorial 2, bn hy loi b tp tin


Vidu4-1.s khi project, v thm tp tin Vidu4-2.s vo project (vi project vit
bng C30 th bn s thay Vidu4-1.c bng Vidu4-2.c).
V d ny cng thc hin mt vic kh n gin l c k t qua cng RS-232, sau
cng thm 1 vo m ca k t nhn v gi tr v ni pht qua cng RS-232.

3.3.

V d 4-3

Bn hy loi b tp tin Vidu4-2.s khi project, v thm vo project tp tin


Vidu4-3.s (hay thay Vidu4-2.c bng Vidu4-3.c i vi phin bn C30).
S nguyn l dng cho v d ny v v d 4-4 di y c th hin hnh 3.1.
Chng ta lm quen vi module I2C ca dsPIC thng qua vic thit lp cc tham s
cho mt vi mch ng h thi gian thc (RTC-Real-Time Clock), c th l DS1307. V
d 4-3 ch thc hin vic khi to cc tham s cn thit cho DS1307, tuy nhin cc
chng trnh con cn thit cho vic giao tip ch Master dng module I2C u
c thc hin y y.

Ngi bo co:

Nguyn Quang Nam

Ti liu:

TUT05.01

Ngy:

9/18/2006

Trang:

4/5

Vdd
Vdd
33k

33pF

33pF

1u

C1Chan 2
Chan 3

C5

14
13
7
8
2
6

1u
Vdd

C6
1u

U3

C1+

T 1OUT
R1IN
T 2OUT
R2IN

T 1IN
R1OUT
T 2IN
R2OUT

11
12
10
9

VS+
VS-

15
14

EMUC2/OC1/IC1/INT 1/RD0
EMUD2/OC2/IC2/INT 2/RD1

AVDD
AVSS

7
5

18
17

R3

4.7k

R4

4.7k

SQW/OUT

U2

SDA
SCL

X1
X2
VBAT

X2
32kHz

2
3

Vdd
DS1307
28
27

DSPIC30F4012DIP

C25

11
12

RB0/CN2/VREF+/AN0/EMUD3
RB1/CN3/VREF-/AN1/EMUC3
RB2/CN4/SS1/AN2
RB3/CN5/INDX/AN3
RB4/CN6/IC7/QEA/AN4
RB5/CN7/IC8/QEB/AN5
RF2/SDA/SDI1/U1RX/EMUC/PGC
RF3/SCL/SDO1/U1T X/EMUD/PGD
RC13/CN1/U1ATX/T 2CK/SOSCI/EMUD
RC14/CN0/U1ARX/T 1CK/SOSCO/EMUC

26
25
24
23
22
21
16

VCC

C2

RE0/PWM1L
RE1/PWM1H
RE2/PWM2L
RE3/PWM2H
RE4/PWM3L
RE5/PWM3H
FLT A/INT 0/RE8

GND

C3

8MHz

C1

2
3
4
5
6
7

CLKIN/OSC1
RC15/CLKO/OSC2
MCLR

4.7k

U1
9
10
1

X1

R2

R1

C2+

C4

MAX232

1u

Hnh 3.1: S nguyn l phn cng dng cho cc v d 4-3 v 4-4


s dng module I2C ca dsPIC ch Master, chng ta thit lp cc thanh ghi:
I2CCON: thanh ghi iu khin module, thng ch cn quan tm n cc bit
I2CEN (bt/tt module) v DISSLW (tt/bt b iu khin slew rate)
I2CBRG: thanh ghi m to tc baud, vi gi tr c tnh theo cng thc sau:
Fcy
Fcy
I 2CBRG =

1
Baud 1111111
vi: Fcy l tn s thc thi lnh (= tn s xung clock/4 vi cc dsPIC30F) v Baud l
tc baud cn thit.
iu cn ch l sau mi hot ng ca module, nh to iu kin START, STOP
hay xut d liu ra bus I2C, chng ta u phi ch cho phn cng hon tt hot ng,
v nu cn th kim tra trng thi ACK/NACK trc khi thc hin thao tc tip theo.
M ngun chng trnh ch thch kh chi tit, do khng cn gii thch thm
y. Khi chy th chng trnh, nu khng c li g i vi DS1307, s c xung 1 Hz
ng ra SQW/OUT. Nu c li th chn RE0 s mc 0, ngc li th RE0 s mc 1.

3.4.

V d 4-4

Bn hy loi b tp tin Vidu4-3.s khi project, v thm vo project tp tin


Vidu4-4.s (hay thay Vidu4-3.c bng Vidu4-4.c i vi phin bn C30).
Trong v d ny, cc chn ca module I2C c dng chung vi cc chn I/O chnh
ca module UART1 ca dsPIC, do chng ta s dng cc chn thay th ca module
UART1 thc hin giao tip RS-232.
dsPIC s khi to DS1307, sau c gi tr thi gian sau mi 11 giy, v gi thng
tin v thi gian dng chui k t ra cng RS-232.

Ngi bo co:

Nguyn Quang Nam

Ti liu:

TUT05.01

Ngy:

9/18/2006

Trang:

5/5

Chng ta s dng c flag1 bo li cho cc thao tc I2C, v c flag2 t


trng thi ACK/NACK khi c thng tin t bus I2C. Chng trnh con Write_I2C()
s cp nht trng thi c flag1, cn chng trnh con Read_I2C() s dng trng thi
ca c flag2.
buff l b m cho d liu xut ra bus I2C, cn str l b m cho chui k t th
hin thng tin thi gian. Khi c d liu t DS1307, do c im l a ch ca thanh
ghi tip theo c cp nht t ng, chng ta s c thng tin v giy, ri n pht, v
gi. Nhng khi xut thng tin th chng ta thng th hin gi, ri n pht, v giy.
Do , b m str c ghi d liu theo chiu xui, v thao tc xut cc k t s c
thc hin theo chiu ngc li.
Nu ch xut d liu ra bus I2C, chng ta thc hin theo trnh t: iu kin START,
xut a ch ca ngoi vi vi c thao tc ghi, xut a ch ca thanh ghi sp thao tc (nu
cn thit), cc thao tc ghi (cc chip ngoi vi thng h tr ghi lin tip v t ng cp
nht thanh ghi a ch), v iu kin STOP.
Nu chng ta c d liu t bus I2C, chng ta thc hin theo trnh t: iu kin
START, xut a ch ca ngoi vi vi c thao tc ghi, xut a ch ca thanh ghi sp thao
tc (nu cn thit), iu kin RESTART, xut a ch ca ngoi vi vi c thao tc c, cc
thao tc c (cc chip ngoi vi thng h tr c lin tip v t ng cp nht thanh
ghi a ch), sau mi thao tc c chng ta s ACK, ngoi tr thao tc c cui cng cn
NACK, v iu kin STOP.

4. Tm tt
Qua tutorial ny, cc module UART v I2C ca dsPIC c gii thiu. Cch thit
lp cc tham s cho module UART, cch c/ghi thng tin t module UART c
minh ha. Cch thit lp v s dng module I2C ch Master cng c cp.
Mt s im cn ch i vi module I2C ca dsPIC, cng nh giao tip I2C c
nu ra y. Cc v d y tuy n gin nhng cung cp cc chc nng c bn
pht trin cc ng dng da vo cc giao tip RS-232 v I2C. Hy vng bn c th xy
dng c nhng chng trnh ng dng tt da vo nhng chng trnh con c bn
ny.
Chc bn thnh cng!

You might also like