Giới thiệu chung về giao tiếp I2C
I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit”. Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu.
Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãi cho giao tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs, v.v …
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là 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 đồng hồ tham chiếu.
Đặc trưng
Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp 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 như trong giao tiếp UART. 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
- Cơ chế đơn giản để xác thực dữ liệu được truyền
- Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C
- Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối đơn giản với hai đường bus chung I2C
Phần cứng
Bus vật lý I2C
Bus I2C (dây giao tiếp) chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL) và Serial Data Line (SDA). Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL. Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng đường SCL và SDA như sau:
Thiết bị chủ (Master) và tớ (Slave)
Giao thức truyền dữ liệu
Điều kiện bắt đầu (Start Condition)
Khối địa chỉ
Bit Read / Write
Bit ACK / NACK
Khối dữ liệu
Điều kiện kết thúc (Stop condition)
Giao tiếp I2C hoạt động như thế nào?
Giao tiếp I2C được bắt đầu bởi thiết bị Master hoặc để gửi dữ liệu đến thiết bị Slave hoặc nhận dữ liệu từ thiết bị đó. Chúng ta hãy tìm hiểu về cách làm việc của cả hai kịch bản một cách chi tiết.
Gửi dữ liệu đến thiết bị Slave
Trình tự hoạt động sau đây diễn ra khi một thiết bị Master gửi dữ liệu đến một thiết bị Slave cụ thể thông qua bus I2C:
- Thiết bị Master gửi điều kiện bắt đầu đến tất cả các thiết bị Slave
- Thiết bị Master gửi 7 bit địa chỉ của thiết bị Slave mà thiết bị Master muốn giao tiếp cùng với bit Read/Write
- Mỗi thiết bị Slave so sánh địa chỉ được gửi từ thiết bị Master đến địa chỉ riêng của nó. Nếu địa chỉ trùng khớp, thiết bị Slave gửi về một bit ACK bằng cách kéo đường SDA xuống thấp và bit ACK / NACK được thiết lập là ‘0’,. Nếu địa chỉ từ thiết bị Master không khớp với địa chỉ riêng của thiết bị Slave thì đường SDA ở mức cao và bit ACK / NACK sẽ ở mức ‘1’ (mặc định).
- Thiết bị Master gửi hoặc nhận khung dữ liệu. Nếu thiết bị Master muốn gửi dữ liệu đến thiết bị Slave, bit Read / Write là mức điện áp thấp. Nếu thiết bị Master đang nhận dữ liệu từ thiết bị Slave, bit này là mức điện áp cao.
- Nếu khung dữ liệu được thiết bị Slave nhận được thành công, nó sẽ thiết lập bit ACK / NACK thành ‘0’, báo hiệu cho thiết bị Master tiếp tục
- Sau khi tất cả dữ liệu được gửi đến thiết bị Slave, thiết bị Master gửi điều kiện dừng để báo hiệu cho tất cả các thiết bị Slave biết rằng việc truyền dữ liệu đã kết thúc.
Hình dưới đây thể hiện toàn bộ các bit dữ liệu được gửi trên đường SDA và thiết bị điều khiển chúng khi thiết bị Master gửi dữ liệu đến thiết bị Slave.
Hình dưới đây thể hiện toàn bộ các bit dữ liệu được gửi trên đường SDA và thiết bị điều khiển chúng khi thiết bị Master nhận dữ liệu đến thiết bị Slave.
Các chế độ hoạt động của I²C
Dựa vào tốc độ ta chia làm 2 loại
- Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s.
- Chế độ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s.
Nếu chia theo quan hệ chủ tớ:
- Một Master một Slave.
- Một Master nhiều Slave.
- Nhiều Master nhiều Slave.
Một Master nhiều Slave
Bởi vì I2C sử dụng địa chỉ, nhiều thiết bị Slave có thể được điều khiển từ một thiết bị Master duy nhất. Với 7 bit địa chỉ tương ứng 128 (27) địa chỉ duy nhất có sẵn. Để kết nối nhiều thiết bị Slave với một một thiết bị Master duy nhất, hãy nối dây như hình bên dưới, với các điện trở kéo lên 4.7 kΩ kết nối các đường SDA và SCL với Vcc:
Nhận xét
The Best Online Casinos for 2021 » Top 10 UK Casino Sites
Trả lờiXóaThe top 10 UK gambling 저녁 메뉴 룰렛 sites: Betway 1xbet korean Casino, 888 Casino and 888 샌즈 바카라 Casino. Top 10 casino sites: 22Bet 1xbet 먹튀 Casino, 21 Blackjack, betmove Slots, Roulette. Top 10 casino sites: Betway