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).

pdf41 trang | Chia sẻ: truongthinh92 | Lượt xem: 1642 | Lượt tải: 0download
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:

  • pdfslide_vi_xu_li_chuong_6_6575.pdf