Bài giảng Vi xử lý - Chương 6 Giao tiếp ngoại vi
Lập trình chế độ nhận bất đồng bộ
Khởi động SPBRG với số đếm tra bảng tốc độ.
Cho bit SYNC=0 và bit SPEN=1.
Nếu dùng ngắt quãng, cho bit TXIE=1.
Nếu dùng 9 bit dữ liệu, cho bit RX9=1.
Cho bit CREN=1.
Đọc RCSTA để lấy bit 9 và kiểm tra lỗi.
Nhập dữ liệu từ thanh ghi RCREG.
Nếu có lỗi, tiến hành xóa lỗi.
Nếu có sử dụng ngắt quãng, chú ý cho phép ngắt (GIE và PEIE).
Bạn đang xem trước 20 trang tài liệu Bài giảng Vi xử lý - Chương 6 Giao tiếp ngoại vi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
2009
dce
BK
TP.HCM
©2009, CE Department
Chương 6 - Giao tiếp ngoại vi
1. Cổng giao tiếp song song.
2. Giao tiếp nối tiếp.
2009
dce
©2009, CE Department 2
Cổng giao tiếp song song
Có 3 cổng 8 bit, 2 chiều : PORTA, PORTB và PORTC.
Mỗi cổng có 3 thanh ghi :
TRISx : chọn chiều dữ liệu 8 bit.
0 = Output 1=Input
PORTx : dùng để đọc dữ liệu từ ngoài thiết bị vào hoặc cũng có
thể đọc lại dữ liệu đã ghi ra cổng LATx.
LATx : dùng để chốt dữ liệu xuất ra cổng (thường dùng phục vụ
cơ chế Đọc-Sửa-Ghi).
2009
dce
©2009, CE Department 3
Sơ đồ khối 1 bit của cổng
Dữ liệu đã xuất ra
Dữ liệu từ thiết bị về
hoặc dữ liệu xuất ra
1 bit của tuyến
dữ liệu
2009
dce
©2009, CE Department 4
Cổng A
Các bit của cổng A có thể sử dụng theo nhiều chức năng :
Bit xuất / nhập thông thường.
Chức năng chuyên dụng khác như :
Ngỏ nhập tương tự (RA5, RA3 - RA0 ). [Mặc định sau khi RESET]
Ngỏ nhập điện áp chuẩn (Vref) trong chế độ A-D hoặc so sánh.
Ngỏ nhập xung sự kiện cho bộ định thì 0 (RA4).
Ngỏ xuất chế độ so sánh (RA5, RA4).
Chân của bộ dao động chính (RA7, RA6).
Ngỏ nhập phát hiện điện áp thấp (RA5).
Chân RA4 có ngỏ ra dạng cực máng hở (open drain), ngỏ
nhập dạng Schmitt trigger.
Các chân RA khác có ngỏ ra dạng CMOS, ngỏ nhập dạng
TTL.
2009
dce
©2009, CE Department 5
Chức năng các bit cổng A
Chân Ngỏ nhập Chức năng
OSC1/CLKI/RA7 TTL OSC1 / Nhập xung clock
OSC2/CLKO/RA6 TTL OSC2 / Xuất xung clock
RA5/AN4/SS/LVDIN/C2OUT TTL
Nhập tương tự / Nhập chọn slave cho MSSP /
Nhập phát hiện điện áp thấp / Xuất so sánh 2
RA4/T0CKI/C1OUT ST
Nhập xung sự kiện cho Timer0 / Xuất so sánh
1 (Open drain)
RA3/AN3/VREF+ TTL Nhập tương tự / Xuất Vref+
RA2/AN2/VREF-/CVREF TTL
Nhập tương tự / Xuất Vref- / Xuất Vref so
sánh
RA1/AN1 TTL Nhập tương tự
RA0/AN0 TTL Nhập tương tự
2009
dce
©2009, CE Department 6
Lập trình cổng A
Xóa nội dung cổng A về 0 :
clrf PORTA
clrf LATA
Chọn các chân RAi dùng theo kỹ thuật số (digital IO) :
movlw 0x0F
movwf ADCON1
Chọn chiều xuất / nhập cho các chân RAi :
movlw 0xCF ; RA3-RA0 nhập, RA5-RA4 xuất.
movwf TRISA
2009
dce
©2009, CE Department 7
Sơ đồ chân RA5, RA3 - RA0
2009
dce
©2009, CE Department 8
Sơ đồ chân RA4
Dạng cực máng hở
Dạng Schmitt trigger
2009
dce
©2009, CE Department 9
Cổng B
Các bit của cổng B có thể sử dụng theo nhiều chức năng :
Bit xuất / nhập thông thường.
Chức năng chuyên dụng khác như :
Ngỏ nhập tương tự (RB4-RB0). [Mặc định sau khi RESET]
Ngỏ nhập ngắt quãng ngoài (RB2-RB0).
Ngỏ nhập ngắt quãng đổi trạng thái (RB7-RB4). Thường dùng
cho việc đánh thức CPU bằng cách nhấn phím.
Ngỏ nhập cho chế độ lấy mẫu (RB3).
Lập trình nối tiếp ICSP (RB7-RB5).
Ngỏ xuất so sánh (RB3).
Các chân RBi đều có trở kéo lên bên trong được lập trình.
Khi được dùng làm ngỏ nhập ngắt quãng hoặc lập trình nối
tiếp, các tín hiệu đều qua mạch Schmitt trigger.
2009
dce
©2009, CE Department 10
Chức năng các bit cổng B
Chân Ngỏ nhập Chức năng
RB7/KBI3/PGD TTL/ST Ngắt đổi trạng thái 3 / Dữ liệu lập trình nối tiếp
RB6/KBI2/PGC TTL/ST Ngắt đổi trạng thái 2 / Clock lập trình nối tiếp
RB5/KBI1/PGM TTL/ST
Ngắt đổi trạng thái 1 / Cho phép lập trình ICSP điện
áp thấp
RB4/AN11/KBI0 TTL Nhập tương tự / Ngắt đổi trạng thái 0
RB3/AN9/CCP2 TTL/ST
Nhập tương tự / Nhập lấy mẫu 2 / Xuất so sánh 2 /
Xuất PWM (khi CCP2MX được lập)
RB2/AN8/INT2 TTL/ST Nhập tương tự / Nhập ngắt ngoài 2
RB1/AN10/INT1 TTL/ST Nhập tương tự / Nhập ngắt ngoài 1
RB0/AN12/INT0 TTL/ST Nhập tương tự / Nhập ngắt ngoài 0
2009
dce
©2009, CE Department 11
Sơ đồ chân RB7-RB5
Trở kéo lên
Dạng Schmitt trigger
Chọn trở kéo lên
2009
dce
©2009, CE Department 12
Sơ đồ chân RB2-RB0
ngắt ngoài
2009
dce
©2009, CE Department 13
Sơ đồ chân RB3
2009
dce
©2009, CE Department 14
Cổng C
Các bit của cổng C có thể sử dụng theo nhiều chức năng :
Bit xuất / nhập thông thường.
Chức năng chuyên dụng khác như :
Chân truyền / nhận nối tiếp bất đồng bộ (RC7,RC6).
Chân dữ liệu / clock nối tiếp đồng bộ (RC7,RC6).
Chân lập trình SPI / I2C (RC5-RC2).
Chân giao tiếp của bộ CCP (RC2,RC1).
Chân dao dộng cho Timer1 (RC1,RC0).
2009
dce
©2009, CE Department 15
So đồ chân RCi
2009
dce
©2009, CE Department 16
Chức năng các bit cổng C
Chân Ngỏ nhập Chức năng
RC7/RX/DT ST
Dữ liệu nhận nối tiếp bất đồng bộ / Dữ liệu nối
tiếp đồng bộ
RC6/TX/CK ST
Dữ liệu truyền nối tiếp bất đồng bộ / Clock nối
tiếp đồng bộ
RC5/SDO ST Xuất dữ liệu MSSP
RC4/SDI/SDA ST Nhập dữ liệu SPI / xuất nhập dữ liệu I2C
RC3/SCK/SCL ST Clock cho chế độ SPI / Clock chế độ I2C™
RC2/CCP1 ST Nhập lấy mẫu 1 / Xuất so sánh 1 / Xuất PWM1
RC1/T1OSI/CCP2 ST
Nhập dao động Timer1 / Nhập lấy mẫu 2 / Xuất
so sánh 2 / xuất PWM (khi bit CCP2MX bị cấm)
RC0/T1OSO/T1CKI ST Xuất dao động Timer1 / Nhập clock Timer1
2009
dce
©2009, CE Department 17
2. Giao tiếp nối tiếp
PIC 18F2220 có các khả năng giao tiếp nối tiếp sau :
Khối MSSP (Master Synchronous Serial Port) cung cấp khả
năng giao tiếp với các vi điều khiển khác và các vi mạch ngoại
vi (EEPROM, thanh ghi dịch, vi mạch lái màn hình, vi mạch
chuyển đổi AD. . .) theo hai phương pháp :
SPI (Serial Peripheral Interface).
I2C (Inter-Integrated Circuit).
Khối USART (Universal Synchronous Asynchronous Receiver
Transmitter) cho phép hoạt động theo các chế độ :
Truyền nhận bất đồng bộ (song công).
Truyền nhận đồng bộ chủ (bán song công).
Truyền nhận đồng bộ tớ (bán song công).
2009
dce
©2009, CE Department 18
Chế độ SPI của MSSP
Chế độ SPI (Serial Peripheral Interface) cho phép truyền
nhận đồng thời dữ liệu đồng bộ 8 bit.
Các tín hiệu sử dụng trong chế độ này :
SDO - Dữ liệu truyền nối tiếp.
SDI - Dữ liệu nhận nối tiếp.
SCK - Xung clock
SS - Chọn slave (chỉ dùng khi chọn chế độ slave).
2009
dce
©2009, CE Department 19
Sơ đồ khối chế độ SPI
thanh ghi dịchDữ liệu vào
Dữ liệu ra
Xung clock
2009
dce
©2009, CE Department 20
Thanh ghi SSPSTAT
SMP : lấy mẫu bit
Trong chế độ SPI chủ :
1= lấy mẫu dữ liệu ở cuối bit
0= lấy mẫu dữ liệu ở giữa bit
Trong chế độ SPI tớ : phải được xóa về 0.
(bit 6) CKE : Chọn cạnh tác động của xung clock truyền
Khi CKP=0:
1= truyền dữ liệu theo cạnh lên
0= truyền dữ liệu theo cạnh xuống
Khi CKP=1
1= truyền dữ liệu theo cạnh xuống
0= truyền dữ liệu theo cạnh lên
SMP CKE D / A P S R / W UA PS
2009
dce
©2009, CE Department 21
(bit 5) D / A : chọn dữ liệu / địa chỉ ( chỉ trong chế độ I2C)
(bit 4) P : Stop bit (chỉ dùng với chế độ I2C)
(bit 3) S : Start bit (chỉ dùng với chế độ I2C)
(bit 2) R / W : chọn hoạt động đọc / ghi (chỉ dùng với I2C)
(bit 1) UA : update address bit (chỉ dùng với I2C)
(bit 0) BF : bit trạng thái báo đệm đầy (Buffer Full status bit)
Trong chế độ truyền :
1= dữ liệu đang truyền, SSPBUF đầy.
0= dữ liệu đã truyền xong, SSPBUF rỗng.
Trong chế độ nhận :
1= đã nhận xong, SSPBUF đầy.
0= chưa nhận xong, SSPBUF rỗng.
Thanh ghi SSPSTAT (tt.)
2009
dce
©2009, CE Department 22
Thanh ghi SSPCON1
(bit 7) WCOL : phát hiện lỗi truyền
=1 : xuất dữ liệu ra SSPBUF khi chưa truyền xong dữ liệu trước
=0 : không bị lỗi.
(bit 6) SSPOV : lỗi nhận tràn dữ liệu (nhận dữ liệu mới trong
khi SSPBUF vẫn còn giữ dữ liệu nhận trước đó.
(bit 5) SSPEN : cho phép dùng giao tiếp MSSP.
1= cho phép.
0= cấm
(bit4) CKP : chọn cực cho xung clock.
1= chọn mức cao làm trạng thái tắt của clock.
0= chọn mức thấp làm trạng thái tắt của clock.
WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0
2009
dce
©2009, CE Department 23
Thanh ghi SSPCON1 (tt.)
SSPM3 - SSPM0 : chọn chế độ hoạt động
0101 : SPI tớ, clock=SCK, không dùng SS.
0100 : SPI tớ, clock=SCK, dùng SS.
0011 : SPI chủ, clock=(đầu ra Timer2) / 2
0010 : SPI chủ, clock=FOSC/64
0001 : SPI chủ, clock=FOSC/16
0001 : SPI chủ, clock=FOSC/4
2009
dce
©2009, CE Department 24
Ví dụ truyền nhận dùng polling
Lặp vòng chờ nhận dữ liệu
LOOP BTFSS SSPSTAT,BF ;kiểm tra bit Buffer Full =1
BRA LOOP ;lặp lại chờ
MOVF SSPBUF, W ;nhận dữ liệu
MOVWF RXDATA ;cất dữ liệu vào RAM
Truyền dữ liệu
MOVF TXDATA, W ;lấy dữ liệu từ RAM
MOVWF SSPBUF ;chuyển sang đệm truyền
2009
dce
©2009, CE Department 25
Hoạt động chủ/tớ
Chế độ SPI chủ / tớ dùng đối với 2 MCU:
MCU chủ xuất xung SCK, MCU tớ nhận SCK.
Hai MCU phải chọn cực của xung clock (CKP) như nhau.
Cả hai MCU có thể truyền nhận cùng lúc.
2009
dce
©2009, CE Department 26
Lập trình - Cấu hình
Cho phép chế độ SSP (SSPEN=1).
Muốn lập trình lại chế độ SSP ta làm theo trình tự sau :
Xóa SSPEN - lập trình SSPCON - lập SSPEN
Cấu hình các bit SDI, SDO, SCK, SS như sau :
SDI : xóa bit TRISC4
SDO : xóa bit TRISC5
SCK (chủ) : xóa bit TRISC3
SCK (tớ) : lập bit TRISC3
SS : lập bit TRISA5
Trong chế độ SPI tớ, SS hổ trợ sử dụng một chủ - nhiều tớ.
Kết hợp với chế độ ngủ, dùng để đánh thức MCU bằng ngắt
quãng MSSP.
2009
dce
©2009, CE Department 27
Giản đồ xung chế độ chủ
2009
dce
©2009, CE Department 28
Chế độ I2C của MSSP
Chế độ I2C (Inter-IC) của PIC có thể chọn chủ/tớ.
Các tín hiệu sử dụng trong chế độ này :
Dữ liệu nối tiếp - RC4/SDI/SDA
Xung clock - RC3/SCK/SCL
Các thanh ghi dùng trong chế độ I2C :
SSPCON1 - điều khiển SSP.
SSPCON2
SSPSTAT - trạng thái SSP.
SSPBUF - đệm truyền nhận.
SSPADD - giữ địa chỉ nhận dạng của IC tớ.
SSPSR - thanh ghi dịch (không thể tác động trực tiếp).
2009
dce
©2009, CE Department 29
Sơ đồ khối chế độ I2C
Dữ liệu
nối tiếp
Xung clock
2009
dce
©2009, CE Department 30
Giao tiếp nối tiếp USART
Khối USART cung cấp các chế độ giao tiếp nối tiếp:
Bất đồng bộ (Asynchronous) song công. Thường dùng trao đổi
thông tin với máy tính.
Đồng bộ chủ (Synchronous) bán song công. Dùng để điều
khiển các thiết bị ngoại vi như EEPROM, mạch chuyển đổi AD,
DA
Đồng bộ tớ bán song công.
Các chân sử dụng :
RC6/TX/CK : là ngỏ truyền dữ liệu nối tiếp.
RC7/RX/DT : là ngỏ nhập dữ liệu nối tiếp.
Các thanh ghi sử dụng :
TXSTA : điều khiển và trạng thái truyền.
RCSTA : điều khiển và trạng thái nhận.
TXREG : đệm dữ liệu truyền/nhận.
2009
dce
©2009, CE Department 31
Chế độ bất đồng bộ
Khung dữ liệu : 1 start bit + 8(hoặc 9) data bits + 1 stop bit
2009
dce
©2009, CE Department 32
Sơ đồ khối truyền bất đồng bộ
2009
dce
©2009, CE Department 33
Sơ đồ khối nhận bất đồng bộ
2009
dce
©2009, CE Department 34
Thanh ghi TXSTA
CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
CSRC : chọn nguồn xung clock (chỉ dùng cho chế độ đồng bộ)
1= chế độ chủ (tạo xung clock từ bộ phát xung BRG).
0= lấy mẫu dữ liệu ở giữa bit
TX9 : Chọn khung truyền 8 bit hay 9 bit
1= khung 9 bit (1-8-1-1)
0= khung 8 bit (1-8-1)
TXEN : cho phép truyền
1= cho phép
0= cấm
SYNC : chọn chế độ đồng bộ hay bất đồng bộ
1= chế độ đồng bộ
0= chế độ bất đồng bộ
2009
dce
©2009, CE Department 35
Thanh ghi TXSTA (tt.)
BRGH : chọn tốc độ truyền nhận cao hay thấp (chỉ dùng cho chế độ bất đồng bộ)
1= tốc độ cao
0= tốc độ thấp
TRMT : trạng thái thanh ghi dịch truyền (TSR)
1= TSR rỗng
0= TSR chưa rỗng
TX9D : bit dữ liệu truyền thứ 9 (dùng cho chế độ 9 bit), có thể là bit phân biệt dữ
liệu/địa chỉ hay bit kiểm tra chẳn lẻ.
CSRC TX9 TXEN SYNC - BRGH TRMT TX9D
2009
dce
©2009, CE Department 36
Thanh ghi RCSTA
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
SPEN : cho phép cổng nối tiếp
1= cho phép cổng giao tiếp nối tiếp.
0= cấm (mặc định sau Reset).
RX9 : Chọn khung nhận (1= khung 9 bit, 0= khung 8 bit)
SREN : cho phép nhận đơn (chế độ đồng bộ chủ)
1= cho phép nhận 1 ký tự
0= cấm
CREN : cho phép nhận liên tục
Chế độ bất đồng bộ
1= cho phép bộ nhận
0= cấm
Chế độ đồng bộ
1= cho phép nhận liên tục
0= cấm
2009
dce
©2009, CE Department 37
Thanh ghi RCSTA (tt.)
SPEN RX9 SREN CREN ADDEN FERR OERR RX9D
ADDEN : cho phép phát hiện địa chỉ (chỉ dùng trong chế độ đồng bộ 9 bit)
1= cho phép phát hiện địa chỉ, cho phép ngắt quãng.
0= cấm (mặc định sau Reset).
FERR : lỗi sai về khung dữ liệu
OERR : lỗi tràn ký tự
1= lỗi
0= cấm
RX9D : bit dữ liệu nhận thứ 9.
2009
dce
©2009, CE Department 38
Xung clock dùng trong giao tiếp nối tiếp được tạo ra bởi bộ
tạo xung BRG (Baud rate generator).
Số đếm nạp vào thanh ghi SPBRG được tính theo công thức
sau :
Ví dụ : tính số đếm cho tốc độ 9600 với FOCS=16 MHz, BRGH=0,
SYNC=0
X = ((FOSC/tốc độ)/64) - 1 = ((16000000/9600)/64) - 1 = 25.042
X ≈ 25
tính ngược lại tốc độ ứng với số đếm 25, ta có 9615. Như vậy, sai số
giữa tốc độ thực và tốc độ mong muốn là 0.16%.
Bộ phát xung truyền nhận BRG
2009
dce
©2009, CE Department 39
Bảng số đếm tham khảo
2009
dce
©2009, CE Department 40
Lập trình chế độ truyền bất đồng bộ
Khởi động SPBRG với số đếm tra bảng tốc độ.
Cho bit SYNC=0 và bit SPEN=1.
Nếu dùng ngắt quãng, cho bit TXIE=1.
Nếu dùng 9 bit dữ liệu, cho bit TX9=1.
Cho bit TXEN=1 và bit TXIF=1.
Nếu cần, nạp bit TX9D.
Nạp dữ liệu vào thanh ghi TXREG.
Nếu có sử dụng ngắt quãng, chú ý cho phép ngắt (GIE và
PEIE).
2009
dce
©2009, CE Department 41
Lập trình chế độ nhận bất đồng bộ
Khởi động SPBRG với số đếm tra bảng tốc độ.
Cho bit SYNC=0 và bit SPEN=1.
Nếu dùng ngắt quãng, cho bit TXIE=1.
Nếu dùng 9 bit dữ liệu, cho bit RX9=1.
Cho bit CREN=1.
Đọc RCSTA để lấy bit 9 và kiểm tra lỗi.
Nhập dữ liệu từ thanh ghi RCREG.
Nếu có lỗi, tiến hành xóa lỗi.
Nếu có sử dụng ngắt quãng, chú ý cho phép ngắt (GIE và
PEIE).
Các file đính kèm theo tài liệu này:
- slide_vi_xu_li_chuong_6_6575.pdf