Professional Documents
Culture Documents
Bài 11 Tổng Quan Về Ngoại Vi I2C
Bài 11 Tổng Quan Về Ngoại Vi I2C
www.lumi.vn
Nội dung
01
Tổng quan về giao tiếp ngoại vi I2C
02
Nguyên lý hoạt động của I2C
03
Cấu hình cho I2C
MỤC TIÊU BÀI HỌC
● Biết được giao thức I2C và so sánh với giao thức SPI.
● Hiểu được bus tín hiệu SCL, SDA và các chế độ I2C.
● Hiểu được các điều kiện START, STOP, ACK và NACK
● Hiểu được quá trình truyền dữ liệu của ngoại vi I2C
● Hiểu được điều kiện lặp START.
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ TỔNG QUAN
I2C
(Inter-Integrated Circuit)
• Chân SDA của Master và các Slave sẽ được nối với nhau
• Chân SCL của Master và các Slave sẽ được nối với nhau
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ BUS TÍN HIỆU SCL VÀ SDA
Tại sao lại phải cấu hình SDA và SCL ở chế độ Open-drain?
• Tránh xảy ra hiện tượng ngắn mạch, điều này có thể xảy ra khi một
thiết bị cố gắng kéo đường dây lên cao và một số thiết bị khác cố
gắng kéo đường dây xuống thấp.
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ ĐẶC ĐIỂM CỦA NGOẠI VI I2C
• Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào trên
mạng I2C
• Không cần thỏa thuận trước về tốc độ truyền dữ liệu. Vì vậy, tốc độ truyền dữ
liệu có thể được điều chỉnh bất cứ khi nào cần thiết
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ ĐẶC ĐIỂM CỦA NGOẠI VI I2C
Các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn
được thiết lập bởi một tín hiệu xung Clock
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ CHẾ ĐỘ HOẠT ĐỘNG CỦA I2C
Lưu ý :
• Thiết bị ở chế độ Standard-mode không thể giao tiếp với các thiết bị ở chế độ
Fast mode hoặc cao hơn.
• Thiết bị ở chế độ Fast mode có thể giao tiếp với thiết bị ở chế độ
Standard-mode
TỔNG QUAN VỀ GIAO TIẾP NGOẠI VI I2C
❖ SO SÁNH SPI VÀ I2C
Đặc điểm SPI I2C
Giao thức ngoại vi nối tiếp SPI sẽ sử dụng chân CS để chọn Slave nó muốn giao tiếp.
Có rất nhiều Slave được kết nối trên mạng I2C. Vậy làm thế nào để Master có thể
lựa chọn được Slave nó muốn giao tiếp?
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHUNG TRUYỀN I2C
Mỗi thiết bị Slave sẽ có địa chỉ. Và Master sẽ sử dụng địa chỉ này để có thể giao
tiếp với Slave có địa chỉ tương ứng.
Lưu ý: Địa chỉ của các Slave sẽ không trùng nhau
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHUNG TRUYỀN I2C
7-bit địa Bit Bit 8-bit dữ Bit
Bắt đầu Kết thúc
chỉ Read/Write ACK/NACK liệu ACK/NACK
Master Slave
Bắt đầu:
• Khi SCL đang ở mức cao, SDA chuyển từ mức
cao xuống mức thấp.
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHUNG TRUYỀN I2C
7-bit địa Bit Bit 8-bit dữ Bit
Bắt đầu Kết thúc
chỉ Read/Write ACK/NACK liệu ACK/NACK
• 7-bit địa chỉ: Master gửi địa chỉ của slave mà nó muốn liên lạc với
mọi slave được kết nối với nó. Sau đó, mỗi slave sẽ so sánh địa chỉ
được gửi từ master với địa chỉ của chính nó.
o Nếu địa chỉ phù hợp, slave sẽ gửi một bit (ACK = 0) trở lại master.
o Nếu địa chỉ không khớp, slave không làm gì và dòng SDA giữa 2 thiết
bị đó vẫn sẽ ở mức cao.
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHUNG TRUYỀN I2C
7-bit địa Bit Bit 8-bit dữ Bit
Bắt đầu Kết thúc
chỉ Read/Write ACK/NACK liệu ACK/NACK
Bit Read/Write gồm một bit duy nhất ở sau khung địa chỉ. Nó cho
slave biết master muốn ghi dữ liệu vào nó hay nhận dữ liệu từ nó.
R/W
8-bit dữ liệu: được thiết lập bởi bên gửi, với các bit dữ liệu cần truyền tới
bên nhận.
Lưu ý: Sự kết hợp của khối dữ liệu theo sau bởi bit ACK / NACK được lặp lại
cho đến quá trình truyền dữ liệu được hoàn tất.
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHUNG TRUYỀN I2C
7-bit địa Bit Bit 8-bit dữ Bit
Bắt đầu Kết thúc
chỉ Read/Write ACK/NACK liệu ACK/NACK
• Sau khi tất cả dữ liệu đã được gửi đến Slave thành công
Kết thúc:
• SCL đang ở mức cao, SDA chuyển từ mức thấp lên mức cao
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ REPEATED START(ĐIỀU KIỆN START LẶP LẠI)
Repeated Start (Sr) và Start có điều kiện giống nhau vậy sử dụng Sr trong
trường hợp nào?
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ KHI NÀO NÊN SỬ DỤNG REPEATED START
Slave Bit Bit Slave Bit Bit
Start
Address
W ACK/NACK
data
ACK/NACK
Sr
Address
R ACK/NACK
data
ACK/NACK
Stop
• Dữ liệu trên đường SDA phải ổn định (không được thay đổi) trong khi
xung clock ở mức CAO
• Mức CAO và THẤP của đường SDA chỉ có thể thay đổi khi tín hiệu xung
Clock ở mức thấp.
NGUYÊN LÝ HOẠT ĐỘNG CỦA I2C
❖ MỘT SỐ CHÚ Ý
Slave Bit Bit Slave Bit Bit
Start
Address
W ACK/NACK
data
ACK/NACK
Sr
Address
R ACK/NACK
data
ACK/NACK
Stop
• Điều kiện bắt đầu và điều kiện kết thúc sẽ được đưa ra bởi master
• Sau điều kiện kết thúc đường Bus I2C sẽ ở chế độ rảnh (idle). Một thiết
bị master khác có thể nhận Bus I2C
• Bus sẽ vẫn ở trạng thái bận khi sử dụng Repeated Start(Sr) thay vì dùng
điều kiện kết thúc (Stop)
CẤU HÌNH CHO I2C
❖ CÁC BƯỚC CẤU HÌNH CHO I2C
• Bước 1: Khởi tạo các chân GPIO với các chân SCL và SDA với
mode Alternate Function và Output Type là Open-drain
CẤU HÌNH CHO I2C
❖ CÁC BƯỚC CẤU HÌNH CHO I2C
Ưu điểm
• Chỉ sử dụng hai dây
• Hỗ trợ nhiều master và nhiều slave
• Bit ACK / NACK xác nhận rằng mỗi khung dữ liệu
hay địa chỉ được gửi (hoặc nhận) thành công
• Phần cứng ít phức tạp hơn với giao tiếp UART
• Giao thức nổi tiếng và được sử dụng rộng rãi
TỔNG KẾT BÀI HỌC
Nhược điểm
• Tốc độ truyền dữ liệu giao tiếp I2C chậm hơn so với
giao tiếp SPI
• Kích thước của khung dữ liệu được giới hạn ở 8 bit
• Cần phần cứng phức tạp hơn để triển khai so với
giao tiếp SPI
TÀI LIỆU THAM KHẢO
● Giao tiếp SPI
Thanks for Watching!