Cơ sở dữ liệu - Chương 6: Giao tiếp ngoại vi
Bạn đang xem 20 trang mẫu của tài liệu "Cơ sở dữ liệu - Chương 6: Giao tiếp ngoại vi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- co_so_du_lieu_chuong_6_giao_tiep_ngoai_vi.pdf
Nội dung text: Cơ sở dữ liệu - Chương 6: Giao tiếp ngoại vi
- dce 2009 Chương 6 - Giao tiếp ngoại vi 1. Cổng giao tiếp song song. BK 2. Giao tiếp nối tiếp. TP.HCM ©2009, CE Department
- dce 2009 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, CE Department 2
- dce 2009 Sơ đồ khối 1 bit của cổng Dữ liệu đã xuất ra 1 bit của tuyến dữ liệu Dữ liệu từ thiết bị về hoặc dữ liệu xuất ra ©2009, CE Department 3
- dce 2009 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, CE Department 4
- dce 2009 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 Nhập tương tự / Nhập chọn slave cho MSSP / RA5/AN4/SS/LVDIN/C2OUT TTL Nhập phát hiện điện áp thấp / Xuất so sánh 2 Nhập xung sự kiện cho Timer0 / Xuất so sánh RA4/T0CKI/C1OUT ST 1 (Open drain) RA3/AN3/VREF+ TTL Nhập tương tự / Xuất Vref+ Nhập tương tự / Xuất Vref- / Xuất Vref so RA2/AN2/VREF-/CVREF TTL sánh RA1/AN1 TTL Nhập tương tự RA0/AN0 TTL Nhập tương tự ©2009, CE Department 5
- dce 2009 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, CE Department 6
- dce 2009 Sơ đồ chân RA5, RA3 - RA0 ©2009, CE Department 7
- dce 2009 Sơ đồ chân RA4 Dạng cực máng hở Dạng Schmitt trigger ©2009, CE Department 8
- dce 2009 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, CE Department 9
- dce 2009 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 Ngắt đổi trạng thái 1 / Cho phép lập trình ICSP điện TTL/ST RB5/KBI1/PGM áp thấp RB4/AN11/KBI0 TTL Nhập tương tự / Ngắt đổi trạng thái 0 Nhập tương tự / Nhập lấy mẫu 2 / Xuất so sánh 2 / TTL/ST RB3/AN9/CCP2 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, CE Department 10
- dce 2009 Sơ đồ chân RB7-RB5 Chọn trở kéo lên Trở kéo lên Dạng Schmitt trigger ©2009, CE Department 11
- dce 2009 Sơ đồ chân RB2-RB0 ngắt ngoài ©2009, CE Department 12
- dce 2009 Sơ đồ chân RB3 ©2009, CE Department 13
- dce 2009 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, CE Department 14
- dce 2009 So đồ chân RCi ©2009, CE Department 15
- dce 2009 Chức năng các bit cổng C Chân Ngỏ nhập Chức năng Dữ liệu nhận nối tiếp bất đồng bộ / Dữ liệu nối ST RC7/RX/DT tiếp đồng bộ Dữ liệu truyền nối tiếp bất đồng bộ / Clock nối ST RC6/TX/CK 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 Nhập dao động Timer1 / Nhập lấy mẫu 2 / Xuất ST RC1/T1OSI/CCP2 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, CE Department 16
- dce 2009 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, CE Department 17
- dce 2009 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, CE Department 18
- dce 2009 Sơ đồ khối chế độ SPI Dữ liệu vào thanh ghi dịch Dữ liệu ra Xung clock ©2009, CE Department 19
- dce 2009 Thanh ghi SSPSTAT SMP CKE D / A P S R / W UA PS 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 ©2009, CE Department 20
- dce 2009 Thanh ghi SSPSTAT (tt.) (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. ©2009, CE Department 21
- dce 2009 Thanh ghi SSPCON1 WCOL SSPOV SSPEN CKP SSPM3 SSPM2 SSPM1 SSPM0 (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. ©2009, CE Department 22
- dce 2009 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, CE Department 23
- dce 2009 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, CE Department 24
- dce 2009 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, CE Department 25
- dce 2009 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, CE Department 26
- dce 2009 Giản đồ xung chế độ chủ ©2009, CE Department 27
- dce 2009 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, CE Department 28
- dce 2009 Sơ đồ khối chế độ I2C Xung clock Dữ liệu nối tiếp ©2009, CE Department 29
- dce 2009 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, CE Department 30
- dce 2009 Chế độ bất đồng bộ Khung dữ liệu : 1 start bit + 8(hoặc 9) data bits + 1 stop bit ©2009, CE Department 31
- dce 2009 Sơ đồ khối truyền bất đồng bộ ©2009, CE Department 32
- dce 2009 Sơ đồ khối nhận bất đồng bộ ©2009, CE Department 33
- dce 2009 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, CE Department 34
- dce 2009 Thanh ghi TXSTA (tt.) CSRC TX9 TXEN SYNC - BRGH TRMT TX9D 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ẻ. ©2009, CE Department 35
- dce 2009 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, CE Department 36
- dce 2009 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, CE Department 37
- dce 2009 Bộ phát xung truyền nhận BRG 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%. ©2009, CE Department 38
- dce 2009 Bảng số đếm tham khảo ©2009, CE Department 39
- dce 2009 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, CE Department 40
- dce 2009 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). ©2009, CE Department 41