Các chế độ hoạt động của I2C

Một phần của tài liệu TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300 (Trang 73 - 77)

I.15.3.1 Master truyền.

Khi đó Master ở chế độ truyền và Slave ở chế độ nhận. Thanh ghi I2CONSET phải được thiết lập như sau. I2EN phải được gán = 1 để kích hoạt chức năng I2C. Nếu bit AA = 0 thì giao tiếp I2C sẽ nhận ra bất cứ địa chỉ nào nếu có một thiết bị khác đang là Master trên kênh truyền.

KHOA HỌC & KỸ THUẬT MÁY TÍNH

Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn

Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 67

Bảng 35 Thanh ghi I2CnCONSET được sử dụng trong chế độ Master

Bit 7 6 5 4 3 2 1 0

Symbol - I2EN STA STO SI AA - -

Value - 1 0 0 0 0 - -

Trong chế độ này, bit R/W nên là 0, tức là “ghi”. Byte đầu tiên gửi đi chứ địa chỉ của thiết bị nhận (7 bit) và bit R/W quyết định chiều của dữ liệu. Giao tiếp I2C sẽ khởi động vào chế độ Master truyền khi chương trình phần mềm gán STA = 1. Giao tiếp I2C sẽ gửi tín hiệu START khi kênh truyền rãnh. Sau khi START được truyền, bit SI sẽ được gán = 1, và giá trị của thanh ghi I2STAT là 0x08. Byte gồm địa chỉ của Slave và bit R/W được truyền vào thanh ghi I2DAT, sau đó bit SI được xoá = 0. Bit SI được xoá bằng cách gán 1 vào bit SIC trong thanh ghi I2CONCLR.

Sau khi truyền byte chứa địa chỉ Slave và bit R/W, và ACK được trả về, bit SI lại được gán = 1, thanh ghi I2STAT lúc này có thể mang giá trị 0x18, 0x20 hay 0x38 (ở chế độ Master); 0x66, 0x78 hay 0xB0 (ở chế độ Slave).

Hình 31 Định dạng ở chế độ Master truyền

I.15.3.2 Master nhận.

Ở chế độ này, dữ liệu được Slave gửi về. Quá trình truyền nhận tương tự ở chế độ Master truyền. Tuy nhiên, bit R/W được gán = 1, tức là “đọc”. Khi địa chỉ của Slave và bit R/W được gửi, ACK sẽ được trả về, bit SI lại được gán = 1, thanh ghi I2STAT lúc này có thể mang giá trị 0x40, 0x48 hay 0x38 (ở chế độ Master); 0x68, 0x78 hay 0xB0 (ở chế độ Slave).

KHOA HỌC & KỸ THUẬT MÁY TÍNH

Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn

Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 68

Hình 32 Định dạng ở chế độ Master nhận

Nếu tín hiệu START được khởi tạo một lần nữa, giao tiếp I2C của LPC2300 có thể trở về chế độ Master truyền.

Hình 33 Chế độ Master nhận chuyển thành Master truyền sau khi gửi START lặp lại

I.15.3.3 Chế độ Slave nhận

Dữ liệu sẽ được gửi từ Master đến, để thiết lập chế độ này, thanh ghi I2ADR và I2CONSET phải được thiết lập như sau:

Bảng 36 Thanh ghi I2CnCONSET được sử dụng trong chế độ Slave

Bit 7 6 5 4 3 2 1 0

Symbol - I2EN STA STO SI AA - -

Value - 1 0 0 0 1 - -

Sau khi các thanh ghi I2ADR và I2CONSET được thiết lập, giao tiếp I2C sẽ chờ đến khi nó được gán địa chỉ. Nếu bit R/W là 0, giao tiếp này là Slave nhận, ngược lại, nó sẽ trở thành Slave truyền. Sau khi byte chứa địa chỉ Slave và bit R/W được nhận, SI được gán = 1 và

KHOA HỌC & KỸ THUẬT MÁY TÍNH

Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn

Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 69

I2STAT được xác lập. Thanh ghi này có thể đọc để nhận giá trị thể hiện tình trạng của kênh truyền.

Hình 34 Định dạng ở chế độ Slave nhận

I.15.3.4 Chế độ Slave truyền.

Ở chế độ này, bit R/W có giá trị 1. Phần cứng sẽ tự động nhận dạng địa chỉ của chính nó. Khi địa chỉ này được phát hiện, một ngắt sẽ được yêu cầu. Nếu vi xử lý yêu cầu vào chế độ Master thì phải chờ cho đến khi kênh truyền rãnh. Và nếu cơ chế trọng tài bị mất đi thì giao tiếp I2C lập tức chuyển thành chế độ Slave.

KHOA HỌC & KỸ THUẬT MÁY TÍNH

Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn

Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 70

Một phần của tài liệu TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300 (Trang 73 - 77)