Professional Documents
Culture Documents
I2C
Nội dung chương 1
1 Tổng quan
Giới thiệu chi tiết về I2C
NỘI DUNG
2 Function
CHÍNH So sánh với các giao thức khác.
3 Cài đặt
Làm thế nào để có thể sử dụng GPIO được trên STM32
I2C cho phép 1 master kết nối được nhiều slave cùng lúc và có
thể nhiều master và nhiều slave cùng lúc.
Chế độ truyền dữ liệu Serial thông qua dây SDA.
Cơ chế truyền nhận dữ liệu Half-duplex
Lưu ý : để tránh xảy ra hiện tượng ngắn mạch, SDA vừa bị kéo
lên 1 và vừa bị kéo xuống 0. Cần sử dụng thêm trở kéo lên ( từ 1
– 4,7 kΩ), để giá trị mặc định của đường truyền là 1, master và
slave chỉ có thể kéo xuống 0.
Lưu ý : Vì I2C là giao thức truyền Serial cho nên từng frame sẽ
được truyền và nhận liên tục.
Khi MASTER truyền xong một frame , SLAVE sẽ phản hồi lại frame
ACK/NACK.
Bit bắt đầu này được set up bởi MASTER. Khi bit này được set,
sẽ bắt đầu quá trình truyền dữ liệu một gói tin.
Master sẽ chuyển mạch SDA từ mức điện áp cao xuống mức điện
áp thấp trong khi SCL ở mức cao ngay trước khi đường SCL
chuyển từ cao xuống thấp.
Mỗi IC hay phần cứng hỗ trợ giao tiếp I2C sẽ đều có địa chỉ cố
định ( xem ở datasheet của IC đó ).
Giúp phân biệt các SLAVE trong mô hình.
Frame này được MASTER truyền đi đến các SLAVE.
Sau frame địa chỉ là chế độ Đọc / Ghi lên thanh ghi của SLAVE.
Nếu Master gửi dữ liệu đi thì ứng với bit này bằng ‘0’, và ngược
lại, nhận dữ liệu khi bit này bằng ‘1’.
SDA
SCL
Sau khi truyền xong một gói tin, MASTER sẽ set bit stop và quá
trình truyền nhận dữ liệu sẽ kết thúc.
MASTER sẽ lần lượt kéo chân SCL và chân SDA lên mức cao.
Trước khi truyền và nhận các gói tin, ta cần kiểm tra xem
đường truyền có sẵn sàng chưa :
HAL_I2C_Master_Transmit (……)
HAL_I2C_Master_Recieve (……)
HAL_I2C_Slave_Transmit (……)
HAL_I2C_Slave_Recieve (……)
HAL_I2C_Mem_Write (……)
HAL_I2C_Mem_Read (……)
Bước 4: Đổi lại tên bằng cách chuột phải vào port và chọn
“Enter User Label”