Chapter8 TruyenDuLieu GT V2q tài liệu, giáo án, bài giảng , luận văn, luận án, đồ án, bài tập lớn về tất cả các lĩnh vực...
Chương 8: truyền liệu CHƯƠNG 8: TRUYỀN DỮ LIỆU Nội dung chương trình bày truyền liệu theo hai kiểu: nối tiếp song song Trong đó, truyền liệu nối hai kiểu đồng bất đồng phổ biến thiết kế ứng dụng dùng vi điều khiển Đối với PIC18F, có cổng để hỗ trợ truyền liệu song song Mục tiêu chương cho người tham khảo: Hiểu rõ chế truyền liệu nối tiếp Hiểu rõ chế truyền liệu song song PORTD VĐK 18F4550 Nắm vững chuẩn RS232 truyền liệu nối tiếp Biết ứng dụng chọn linh kiện chuyên phù hợp dùng thiết kế Có khả thiết kế phần cứng lập trình ứng dụng theo yêu cầu truyền liệu nối tiếp VĐK với VĐK, VĐK với máy tính Trong chương trình bày vấn đề giao tiếp để truyền liệu hai VĐK với nhau, VĐK với máy tính hay thiết bị có cổng giao tiếp USART, SPI, SPP, I2C, USB Các kiểu truyền liệu truyền nối tiếp hay song song đồng hay không đồng Ngày nay, máy vi tính có nhiều cổng USB, khoảng cách truyền liệu qua cổng USB ngắn truyền qua cổng COM (kiểu giao tiếp USART) nhiều thiết bị kết nối với máy tính khơng có cổng USB vật lý Vì vậy, để truyền liệu cổng USB đến cổng COM, người ta thực chuyển đổi USB sang COM ngược lại, gọi COM ảo Ngoài ra, có kiểu truyền liệu bus CAN LIN Đây hai kiểu giao tiếp truyền liệu nâng cao khơng trình bày chương Bảng 8.1: so sánh kiểu giao tiếp phổ biến máy tính Kiểu giao tiếp RS-232 (TIA-232) Số thiết bị kết nối (tối đa) Nối tiếp bất đồng Định dạng Khoảng cách truyền (tối đa, ft) 50 – 100 RS-485 (TIA-485) Nối tiếp bất 32 (nâng lên 4000 đồng 256 với phần cứng cụ thể) Ethernet Nối tiếp IEEE-1394b Nối tiếp (FireWire 800) Tốc độ truyền (tối đa, bps) Sử dụng điển hình 20 k (có thể nhanh với hệ thống mạch phần cứng) 10 M Modem, truyền liệu 1024 1600 10 G 64 300 3.2 G Các hệ thống điều khiển thu nhận liệu Truyền liệu mạng máy tính Video, lưu trữ 273 Chương 8: truyền liệu IEEE-488 (GPIB) I2C 15 60 8M Thiết bị đo đạc Nối tiếp đồng 40 Nối tiếp đồng Vòng dòng nối tiếp 18 3.4 M 10 2M 50 31.5 k 10 – 30 8M Truyền liệu VĐK Truyền liệu VĐK Âm nhạc, điều khiển hình thức Máy in 10 2.1 M Song song Microwire MIDI Cổng máy in Song song song song SPI Nối tiếp đồng USB Nối tiếp bất 127 đồng 8.1 USART 8.1.1 Khái niệm Truyền liệu VĐK 16 (lên tới 98 ft 1.5 M; 12 M; Giao tiếp ngoại với hub) 480 M vi máy tính Khi vi xử lý truyền liệu đến thiết bị khác, truyền khung liệu theo quy định Chẳng hạn số máy in sử dụng truyền song song, có bus liệu 8-bit Đối với truyền song song, cáp truyền liệu dài làm tín hiệu méo dạng Hơn nữa, chi phí cho sợi cáp truyền song song đắc Chính thế, truyền nối tiếp sử dụng đề truyền liệu hai hệ thống khoảng cách hàng trăm ft tới khoảng cách xa nhiều Truyền nối tiếp SENDER Truyền song song D0 RECEIVER SENDER RECEIVER D7 Hình 8.1: mơ hình truyền liệu nối tiếp song song Trong truyền nối tiếp, byte liệu phải chuyển đổi thành bit nối tiếp cách sử dụng ghi để ghi dịch liệu vào song song – nối tiếp Sau truyền đường liệu đơn Như vậy, phía đầu nhận liệu phải có ghi để ghi dịch liệu vào nối tiếp – song song để nhận liệu “đóng gói” chúng thành byte Truyền liệu nối tiếp dùng hai phương pháp đồng bất đồng Phương pháp đồng truyền khối liệu (các ký tự) thời điểm, phương pháp bất đồng truyền byte đơn thời điểm Các hãng sản xuất linh kiện điện tử chế tạo vi mạch chuyên dùng để hỗ trợ truyền bất đồng UART đồng bộ/bất đồng USART PIC18 xây dựng USART 274 Chương 8: truyền liệu SIMPLEX TRANSMITTER RECEIVER TRANSMITTER RECEIVER RECEIVER TRANSMITTER TRANSMITTER RECEIVER RECEIVER TRANSMITTER HALF DUPLEX FULL DUPLEX Hình 8.2: mơ hình kiểu truyền liệu nối tiếp Trong truyền liệu, liệu gửi nhận sử dụng truyền song cơng (duplex) Kiểu song cơng bán song cơng (half duplex) hay tồn công (full duplex), tuỳ thuộc vào liệu gửi nhận có đồng thời hay khơng Hình 8.2 mơ tả kiểu truyền nối tiếp đơn công (simplex) song công 8.1.2 Truyền nối tiếp bất đồng Dữ liệu đến đầu thu chứa đựng bit 1, thật khó để phía đầu thu để nhận biết liệu trừ đầu phát đầu thu thống tập hợp quy luật mà gọi giao thức Giao thức cách thức mà liệu đóng gói, có bit liên tục cho ký tự bắt đầu dừng Các bit start stop (bit bắt đầu dừng) Truyền liệu nối tiếp bất đồng sử dụng phổ biến cho việc truyền định hướng ký tự Mỗi ký tự đặt bit start stop, gọi thiết lập khung liệu Trong khung liệu, bit start luôn bit bit stop bit Bit start luôn (mức thấp) bit stop (mức cao) Hình 8.3 mô tả cấu trúc liệu để gửi hình 8.4 để ví dụ gửi ký tự “A” có mã ASCII 0b01000001 sử dụng bit stop Stop bit Stop bit Gửi cuối D7 D6 D5 D4 D3 D2 D1 D0 Start bit Gửi Hình 8.3: cấu trúc khung liệu để gửi 275 Chương 8: truyền liệu Hình 8.4: gửi ký tự “A” Trong hình 8.4, khơng có gửi liệu, tín hiệu mức cao để đánh dấu (mark) chờ sẵn sàng để bắt đầu gửi liệu “Space” khoảch cách truyền ký tự liên tiếp Đối với bảng mã ASCII chuẩn ký tự có độ dài 7-bit, ASCII mở rộng có độ dài ký tự 8-bit Trong vài hệ thống, bit parity (bit kiểm tra chẵn lẻ) byte ký tự đính kèm khung liệu hợp lệ để trì tồn vẹn liệu Điều có nghĩa ký tự (7-bit 8-bit) có bit parity đơn thêm vào Bit parity lẻ chẵn Trong trường hợp bit parity lẻ tổng số bit bit liệu, bao gồm bit parity, lẻ bit parity lẻ Tương tự, bit parity chẵn tổng số bit 1, bao gồm bit parity, chẵn Ví dụ, mã ASCII “A” 0b0100 0001, có bit parity chẵn Các vi mạch UART cho phép lập trình chọn parity chẵn, lẻ khơng có bit kiểm tra parity Tốc độ truyền liệu Tốc độ truyền liệu liệu nối tiếp có đơn vị bps Mở rộng thuật ngữ sử dụng cho bps baud Tuy nhiên, tốc độ baud bps khơng hồn tồn tương đương Nguyên tốc độ baud thuật ngữ sử dụng modem định nghĩa số tín hiệu thay đổi giây Trong modem, đơi thay đổi đơn giản tín hiệu gửi vài bit liệu Trong sách xem bps baud Tốc độ truyền liệu nối tiếp tuỳ thuộc vào khả cổng truyền máy tính, 100 bps, 1200 bps, 2400 bps, 4800 bps, 9600 bps, …, 56 kbps Khả truyền liệu nối tiếp bất đồng lên tới 100 kbps Các chuẩn RS232 Để cho phép tương thích thiết bị truyển liệu mà sản xuất nhiều nhà sản xuất khác nhau, chuẩn giao tiếp gọi RS232 thiết lập hiệp hội công nghiệp điện tử (EIA) vào năm 1960 Vào năm 1963, bổ sung gọi RS232A RS232B RS232C lưu hành vào năm 1965 1969 Ngày nay, RS232 chuẩn giao tiếp xuất/nhập nối tiếp sử dụng rộng rãi chuẩn sử dụng máy vi tính Trong chuẩn RS232, bit biểu diễn điện có giá trị từ -3 V đến -25 V, bit có giá trị điện từ +3 V đến +25 V Vì nguyên này, để kết nối RS232 đến hệ thống vi điều khiển phải sử dụng chuyển đổi điện MAX232 để chuyển đổi mức logic TTL sang mức điện RS232 ngược lại 276 Chương 8: truyền liệu Các chân RS232 RS232 có kiểu đầu kết nối DB-25 DB-9 có hình dạng hình 8.5 8.6 DB-25 DB-9 có hai kiểu đầm cắm loại đầu kết nối đực có ký hiệu DB-25P DB-9P, đầu kết nối DB-25S DB-9S Ý nghĩa chân DB-25 DB-9 giải thích bảng 8.2 8.3 Tuy nhiên, tất chân DB-25 DB-9 lúc sử dụng hết mà tuỳ theo kết nối hệ thống cụ thể Hình 8.5: hình chiếu bề mặt DB-25 Hình 8.6: hình chiếu bề mặt hai kiểu đầu cắm DB-9 Bảng 8.2: ký hiệu chân DB-25 Thứ tự chân 9-10 11 12 Ký hiệu chân TxD RxD ̅̅̅̅̅ 𝑅𝑇𝑆 ̅̅̅̅̅ 𝐶𝑇𝑆 ̅̅̅̅̅̅ 𝐷𝑆𝑅 GND ̅̅̅̅̅̅ 𝐷𝐶𝐷 Chú thích tiếng Anh Protective ground Transmitted data Received data Request to send Clear to send Data set ready Signal ground Data carrier detect Reserved for data testing Unassigned Secondary data carrier detect Mô tả Nối đất bảo vệ Chân gửi liệu Chân nhận liệu Yêu cầu gửi liệu Thực xoá để gửi liệu Xác nhận liệu sẵn sàng Nối GND Phát sóng mang liệu Dự trữ để kiểm tra liệu Không sử dụng (để trống) Phát sóng mang liệu lần hai 277 Chương 8: truyền liệu 13 14 15 16 17 18 19 20 21 22 23 24 25 Thực xoá lần hai để gửi liệu Secondary transmitted data Dữ liệu gửi lần Transmit signal element Phát tín hiệu tinh chỉnh thời timing gian Secondary received data Dữ liệu nhận lần Nhận tín hiệu tinh chỉnh thời Receive signal element timing gian Unassigned Không sử dụng (để trống) Xác nhận yêu cầu lần để gửi Secondary request to send liệu Data terminal ready Báo thiết bị sẵn sàng Signal quality detector Phát chất lượng tín hiệu Ring indicator Chỉ báo có tín hiệu chng Data signal rate select Chọn tốc độ liệu Transmit signal element Phát tín hiệu tinh chỉnh thời timing gian Unassigned Không sử dụng (để trống) Secondary clear to send ̅̅̅̅̅̅ 𝐷𝑇𝑅 RI Bảng 8.3: ký hiệu chân DB-9 Thứ tự chân Ký hiệu chân ̅̅̅̅̅̅ 𝐷𝐶𝐷 RxD TxD ̅̅̅̅̅̅ 𝐷𝑇𝑅 GND ̅̅̅̅̅̅ 𝐷𝑆𝑅 ̅̅̅̅̅ 𝑅𝑇𝑆 ̅̅̅̅̅ 𝐶𝑇𝑆 RI Phân loại hệ thống truyền liệu Thuật ngữ để phân biệt thiết bị truyền liệu DTE (Data Terminal Equipment – thiết bị đầu cuối liệu) DCE (Data Communication Equipment – thiết bị truyền liệu) DTE đầu cuối máy tính để gửi nhận liệu Trong DCE xem thiết bị truyền, modem mà có nhiệm vụ cho việc truyền liệu Giải thích tín hiệu bắt tay RS232 Để bảo đảm việc truyền liện nhanh tin cậy hai thiết bị, truyền liệu phải phối hợp tốt Chẳng hạn máy in, khơng có đủ nhớ để nhận hết liệu, phải có cách thức báo cho thiết bị gửi để dừng việc gửi liệu Có nhiều chân RS232 sử dụng cho tín hiệu bắt tay Sự mơ tả trình bày bên để tham khảo hiểu thêm, chúng khơng hỗ trợ cho UART PIC18 278 Chương 8: truyền liệu (1) DTR Khi thiết bị đầu cuối (hoặc cổng COM máy tính) mở, gửi tín hiệu DTR để báo sẵn sàng cho việc truyền liệu Nếu có vấn đề lỗi với cổng COM, tín hiệu khơng kích hoạt Tín hiệu DTR tích cực mức thấp để báo cho modem máy tính sẵn sàng Đây chân DTE ngõ vào modem (2) DSR Khi DCE (modem) mở sau thời tự kiểm tra hoạt động, xác nhận DSR để thơng báo sẵn sàng cho truyền liệu Đây ngõ từ modem (DCE) ngõ vào máy tính (DTE) Nó tín hiệu tích cực mức thấp Nếu có ngun nhân làm modem khơng thể kết nối đường dây điện thoại, tín hiệu khơng tích cực thơng báo cho máy tính (hay thiết bị đầu cuối) khơng chấp nhận gửi liệu (3) RTS Khi DTE (như máy tính) có byte để gửi, xác nhận RTS tới modem byte để gửi RTS ngõ tích cực mức thấp từ DTE ngõ vào modem (4) CTS Đáp lại tín hiệu RTS, modem có đủ nhớ để lưu trữ liệu để nhận, gửi tín hiệu CTS tới DTE (máy tính) để báo nhận liệu CTS tín hiệu vào cho DTE, DTE sử dụng để bắt đầu truyền liệu (5) DCD Modem xác nhận tín hiệu DCD để báo cho DTE (máy tính) có sóng mang hợp lệ phát giao tiếp modem khác thiết lập DCD ngõ modem ngõ vào DTE (6) RI RI ngõ modem (DCE) ngõ vào máy tính (DTE) báo có tín hiệu chng gọi đến từ đường dây điện thoại Từ diễn giải trên, truyền liệu PC modem tóm tắt: tín hiệu DTR DSR sử dụng PC modem theo trình tự, để thơng báo chúng sẵn sàng hoạt động tốt, RTS CTS mà chúng điều khiển thất lưu lượng liệu Khi PC muốn gửi liệu xác nhận RTS chờ đáp lại từ modem, modem có nhớ sẵn sàng modem gửi trả lại CTS Nếu modem có nhớ khơng đủ, modem khơng kích hoạt CTS, PC huỷ xác nhận DTR cố gắng thực lại 279 Chương 8: truyền liệu Cổng COM máy tính Các máy tính tương thích IBM dựa vào họ vi xử lý x86 (8086, 286, 386, 486 tất dòng Pentium) trang bị hai cổng COM theo chuẩn RS232, gồm cổng DB-25 DB-9 Các cổng COM đánh số thứ tự COM COM Hiện (năm 2014), máy tính để bàn hay xách tay khơng trang bị sẵn cổng COM nữa, thay vào có nhiều cổng USB Chính vậy, để kết nối máy tính với thiết bị sử dụng RS232, buộc phải sử dụng chuyển đổi COM-to-USB truyền liệu phía cổng USB đầu COM Sự chuyển đổi cổng USB máy tính “thành” cổng COM, ta gọi cổng USB hoạt động dạng COM ảo Đấu nối hai thiết bị RS232 Sự kết nối đơn giản hai DTE thực theo hình 8.7, cần sử dụng chân TxD, RxD GND Hình 8.7: đấu nối hai DTE Hình 8.8 dẫn cách đấu nối DTE DCE ứng dụng truyền liệu qua mạng điện thoại cơng cộng Hình 8.8: đấu nối DTE DCE hệ thống kết nối mạng điện thoại công cộng 8.1.3 Kết nối PIC18 tới RS232 PIC 18F4550 có hai chân hỗ trợ giao tiếp USART chân TX (chân số 25) chân RX (chân số 26) Hai chân tương thích với mức logic TTL, phải sử dụng vi mạch MAX232 để chuyển đổi mức logic cho tương thích với chuẩn RS232 280 Chương 8: truyền liệu Vi mạch MAX232 hãng Maxim IC MAX232 có đến hai thu phát RS232, để hiểu kỹ xem đặc trưng kỹ thuật trang web hãng www.maxim-ic.com Hình 8.9: bố trí chân MAX232 Hình 8.10: hướng dẫn nối mạch MAX232, PIC18 DB-9 Lưu ý hình 8.10, chân RX MAX232 hai chân R1OUT R2OUT, chân TX T1OUT T2OUT Các tụ mạch gồm C1, C2, C3, C4 có giá trị khoảng từ µF đến 22 µF phải gắn cực tính hình 8.10 Vi mạch MAX233 hãng Maxim IC MAX233 hoạt động giống MAX232 không cần dùng thêm tụ mạch 281 Chương 8: truyền liệu Hình 8.11: hướng dẫn nối mạch MAX233, PIC18 DB-9 8.1.4 EUSART PIC 18F4550 Khối USART PIC 18F4550 gọi USART tăng cường (EUSART) có thêm đặc trưng: phát tự động tốc độ baud đo giá trị tốc độ baud, đánh thức tự động nhờ vào tiếp nhận gián đoạn Sync truyền ký tự gián đoạn 12-bit Khối USART PIC 18F4550 hoạt động với chế độ khác nhau: Bất đồng (song công) với: - Đánh thức tự động nhờ vào tiếp nhận ký tự - Đo giá trị tốc độ baud tự động - Truyền ký tự gián đoạn 12-bit Đồng - chủ (bán song công) chọn cực tính xung clock Đồng - tớ (bán song cơng) chọn cực tính xung clock Khối USART PIC 18F4550 có ghi điều khiển hoạt động nó: Thanh ghi trạng thái phát liệu điều khiển TXSTA Thanh ghi trạng thái nhận liệu điều khiển RCSTA Thanh ghi điều khiển tốc độ baud BAUDCON Để chân RC6/TX/CK RC7/RX/DT/SDO 18F4550 hoạt động USART phải cấu hình chúng sau: Bit SPEN (RCSTA) = Bit TRISC = Bit TRISC: 282 Chương 8: truyền liệu void i2c_idle(void) { while ((SSPCON2 & 0x1F) | (SSPSTATbits.R_W)); } Ghi liệu tới bus I2C Thủ tục sau ghi giá trị WREG tới bus I2C: write_I2C pushr again WREG ; Save WREG in the stack call i2c_idle, ; Make sure I2C bus is idle popr WREG ; Retrieve data to be written movwf SSPBUF ; Send out the byte btfsc SSPSTAT, BF; BF will be cleared when bits are ; shifted out bra again return Thủ tục viết lại C: void write_i2c(unsigned char dat) { i2c_idle(); SSPBF = dat; while (SSPSTATbits.BF); /*Wait until data is shifted out*/ } Cho phép nhận byte Chúng ta sử dụng hàm sau để nhận byte từ cổng I2C trả lại giá trị vào ghi WREG: read_I2C bsf SSPCON2, RCEN ; Enable receive mode loop_r SSPSTAT, BF btfss ; Wait until one byte has been ; shifted in 356 bra loop_r movf SSPBUF, W return ; Place data in WREG Chương 8: truyền liệu Thủ tục viết lại C: unsigned char read_i2c(void) { SSPCON2bits.RCEN = 1; while (!SSPSTATbits.BF); /*Wait until a byte is received*/ return (SSPBUF); } Thừa nhận thu liệu Sự thu nhận thành công byte nên thừa nhận Chuỗi lệnh sau gửi ACK tới phát: bcf SSPCON2, ACKDT ; Set acknowledge bit state ; for ACK bsf SSPCON2, ACKEN ; Initiate bus acknowledge ; sequence Thủ tục thừa nhận viết lại C: void AckI2C(void) { SSPCON2bits.ACKDT = 0; SSPCON2bits.ACKEN = 1; } Chuỗi lệnh assembly sau tạo NACK: bsf SSPCON2, ACKDT, A; Set acknowledge bit state ; for ACK bsf SSPCON2, ACKEN, A ; Initiate bus ; acknowledge sequence Thủ tục không thừa nhận viết lại C: void Not_AckI2C(void) { SSPCON2bits.ACKDT = 1; SSPCON2bits.ACKEN = 1; } 357 Chương 8: truyền liệu Chuỗi phát phương thức chủ Chuỗi phát điển hình phương thức chủ thực sau: (1) Phát điều kiện bắt đầu cách đặt bit SEN (2) Bit cờ SSPIF đặt Khối MSSP chờ thời gian bắt đầu ấn định trước hoạt động khác thực (3) Nạp vào SSPBUF địa tớ để truyền (4) Khối MSSP ghi dịch địa từ chân SDA (5) MSSP ghi dịch vào bit ACK từ tớ ghi giá trị vào ghi SSPCON2 (bit 6) (6) MSSP phát ngắt kết thúc xung clock thứ cách đặt bit cờ SSPIF (7) Người dùng nạp liệu 8-bit vào SSPBUF (8) MSSP dịch liệu từ chân SDA (9) MSSP ghi dịch vào bit ACK từ tớ ghi giá trị vào ghi SSPCON2 (bit 6) (10) MSSP phát ngắt kết thúc xung clock thứ cách đặt bit cờ SSPIF (11) Người dùng tạo điều kiện dừng cách đặt bit PEN (12) MSSP phát ngắt trước lúc điều kiện dừng hoàn tất Bộ phát tốc độ baud Trong phương thức chủ, phát tốc độ baud (BRG) nạp lại giá trị đặt bit thấp SSPADD Khi ghi xảy với SSPBUF, BRG tự động bắt đầu đếm BRG đếm xuống tới dừng lại nạp lại giá trị khác thay Việc đếm BRG giảm hai lần chu kỳ lệnh (TCY) nhờ vào xung Q2 Q4 Trước hoạt động hoàn tất (chẳng hạn, truyền bit liệu cuối theo sau ̅̅̅̅̅̅ 𝐴𝐶𝐾 ), xung nhịp nội tự động dừng đếm chân SCL giữ trạng thái sau Hình 8.78: sơ đồ khối phát tốc độ 358 Chương 8: truyền liệu Tốc độ baud I2C tính 8.1 Giá trị BRG để ghi vào SSPADD hợp lệ tính cơng thức 8.2 𝑏𝑎𝑢𝑑_𝑟𝑎𝑡𝑒 = 𝐹𝑂𝑆𝐶 + [4 × (𝐵𝑅𝐺 + 1)] (8.1) 𝐵𝑅𝐺 = 𝐹𝑂𝑆𝐶 + (4 × 𝑏𝑎𝑢𝑑_𝑟𝑎𝑡𝑒) − (8.2) Bảng 8.27: tốc độ I2C giá trị nạp lại BRG FCY 2*FCY Giá trị BRG FSCL 10 MHz 20 MHz 0x19 400 kHz(1) 10 MHz 20 MHz 0x20 312.5 kHz 10 MHz 20 MHz 0x3F 100 kHz MHz MHz 0x0A 400 kHz(1) MHz MHz 0x0D 308 kHz MHz MHz 0x28 100 kHz MHz MHz 0x03 333 kHz(1) MHz MHz 0x0A 100 kHz MHz MHz 0x00 MHz(1) Chú thích: (1) Giao tiếp I2C khơng phù hợp, dùng với lưu ý tốc độ cao yêu cầu ứng dụng 8.4.3.4 Phương thức hoạt động tớ I2C PIC18 Phương thức tớ cho phép PIC18 hoạt động môi trường I2C đa chủ Một địa định (bởi người dùng) tới PIC18 phương thức tớ Các chân SCL SDA phải cấu hình ngõ vào Khối MSSP chồng phủ trạng thái ngõ vào với liệu ngõ yêu cầu (phát tớ) Phần cứng hoạt động I2C phát ngắt dựa vào địa thích hợp Thơng qua bit lựa chọn phương thức, người dùng chọn để ngắt dựa vào bit START STOP Khi địa thích hợp truyền liệu sau địa phù hợp nhận, phần cứng tự động phát xung ACK nạp ghi SSPBUF với giá trị nhận vào ghi SSPSR 8.4.3.5 Phương thức hoạt động đa chủ Trong phương thức đa chủ, chế phát ngắt dựa vào phát điều kiện START STOP cho phép xác định bus tự hay khơng Sự phân xử bus thường cần thiết phương thức đa chủ Dòng SDA giám sát cho phân xử biết mức tín hiệu mức ngõ mong đợi Một chủ khơng phân xử trạng thái: truyền địa chỉ, truyền liệu, điều kiện bắt đầu, điều kiện bắt đầu lặp lại, điều kiện thừa nhận 359 Chương 8: truyền liệu 8.4.3.6 Các hàm thư viện I2C C18 Giao tiếp I2C hỗ trợ với hàm liệt kê bảng 8.28 chứa i2c.h Bảng 8.28: hàm giao tiếp I2C Hàm AckI2C CloseI2C DataRdyI2C getcI2C getsI2C IdleI2C NotAckI2C OpenI2C putcI2C putsI2C ReadI2C RestartI2C StartI2C StopI2C WriteI2C Mô tả Phát điều kiện ACK Vơ hiệu khối SSP Có phải liệu sẵn sàng đệm I2C? Đọc byte đơn từ bus I2C Đọc chuỗi từ bus I2C hoạt động kiểu chủ Lặp vòng bus I2C idle Phát điều kiện NACK Cấu hình khối SSP Ghi byte đơn tới bus I2C Ghi chuỗi tới bus I2C hoạt động kiểu chủ hay tớ Đọc byte đơn từ bus I2C Phát điều kiện khởi động lại Phát điều kiện khởi động Phát điều kiện dừng Ghi byte đơn tới bus I2C Hàm OpenI2C Hàm OpenI2C có cú pháp sau: void OpenI2C(unsigned char sync_mode, unsigned char slew); Các đối số: sync_mode: có giá trị sau SLAVE_7 kiểu tớ I2C, địa 7-bit SLAVE_10 kiểu tớ I2C, địa 10-bit MASTER Kiểu chủ kiểu tớ I2C, địa 7-bit slew: hai giá trị sau SLEW_OFF Slew rate không cho phép với tốc độ 100 kHz SLEW_ON Slew rate cho phép với tốc độ 400 kHz 8.4.3.7 Ứng dụng Ví dụ 8.7: thiết kế mạch đo nhiệt độ độ ẩm môi trường cảm biến SHT10, giá trị đo hiển thị LCD 2x16 chế độ 4-bit Giải pháp: Mạch nguyên lý thiết kế theo hình 8.79 360 Chương 8: truyền liệu 5V VDD MCLR VDD 11 U1 C1 0.1uF 32 R1 10k R2 10k C2 15pF 13 OSC1 Y1 20MHz SDA 33 PIC18F4550 14 SCK U2 34 OSC2 C4 GND SDA SCK VDD NC4 NC3 NC2 NC1 SHT10 C3 15pF VSS 31 12 VSS 100n Hình 8.79: sơ đồ mạch thiết kế ví dụ 8.27 Chương trình viết C18: /*