I. Lời mở đầu
I2C, viết tắt của từ tiếng Anh "Inter-Intergrated Circuit", là một loại bus
nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips. Ban đầu,
loại bus này chỉ được dùng trong các linh kiện điện tử của Philip. Sau đó, do
tính ưu việt và đơn giản của nó, I²C đã được chuẩn hóa và được dùng rộng rãi
trong các mô đun truyền thông nối tiếp của vi mạch tích hợp ngày nay.
1. Phiên bản 1.0 – 1992.
Đây là phiên bản ra đời năm 1992, bao gồm những đặc điểm kỹ thuật
sau:
Phần mềm bỏ sót phần lập trình của đòa chỉ Slave. Sự thật về
chi tiết này thì phức tạp hơn và không được sử dụng.
Kiểu tốc độ chậm ( low – speed ) được bỏ qua.
Kiểu nhanh ( fast ) được thêm vào. Nó cho phép tăng tốc độ
bit lên đến 400 kbit/s. Thiết bò sử dụng kiểu này có thể tương
thích với kiểu tốc độ thấp hơn, có thể sử dụng trong hệ thống
bus I2C từ 0 – 100 kbit/s.
Đòa chỉ 10-bit được thêm vào. Cho phép 1024 nút dòa chỉ.
2. Phiên bản 2.0 – 1998.
Bus I2C trở thành chuẩn thực tế, lúc này đã thực hiện trên hơn 1000 Ics
và hơn 50 công ty đăng ký. Tuy nhiên nhiều ứng dụng ngày nay yêu cầu tốc
độ cao hơn và nguồn cung cấp nhỏ xuống. Những phiên bản mới của I2C bus
cần phải chú ý đến những yêu cầu kỹ thuật này, phiên bản này có những thay
đổi như sau:
Kiểu tốc độ cao (high-speed hay HS) được thêm vào. Cho
phép tăng tốc độ bit lên đến 3.4Mbit/s . Thiết bò hỗ trợ kiểu
HS cũng mang tính kế thừa, tức là có thể hoạt động ở tốc độ
bit từ 0 – 3.4Mbit/s.
Ngõ ra và trễ của thiết bò với nguồn cung cấp 2V được điều
chỉnh cho phù hợp yêu cầu về nhiễu và duy trì sự tương thích
với thiết bò có nguồn cung cấp cao hơn.
Yêu cầu 0.6V tại 6mA của ngõ ra thiết bò với kiểu nhanh được
Sau đây là một số chi tiết của I
2
C-bus:
Chỉ yêu cầu 2 dây bus : một đường xung nhòp đồng hồ ( SCL: a
serial data line) và một đường dữ liệu ( SDA: a serial data
line)
Mỗi thiết bò kết nối đến Bus có đòa chỉ mềm bằng đòa chỉ duy
nhất và mối liên hệ đơn giản chủ/tớ (Master/Slave) tồn tại .
Masters có thể hoạt động bộ phát chủ (Master-Transmitters)
hoặc bộ thu chủ(Master-Receivers).
Trong Bus đa chủ ( multi-master bus) bao gồm phát hiện ra
xung đột và sự phân xử để tránh sai lệch dữ liệu nếu hai hay
nhiều Masters đồng thời khởi động truyền dữ liệu cùng một
lúc.
Dữ liệu nối tiếp, 8-bit đònh hướng, 2 chiều có thể truyền ở:
- Standard (Chuẩn) 100 kb/s .
- Fast (Nhanh) 400 kb/s .
- Fast mode plus (Nhanh hơn) 1 Mb/s .
- High speed mode (Tốc độ cao) 3.4 Mb/s .
Bộ lọc loại bỏ gai nhiễu trên dây Bus để giữ dữ liệu nguyên
gốc.
Số lượng IC có thể kết nối chung Bus bò giới hạn bởi điện dung
tối đa của Bus là 400pF.
1 Lợi ích cho người thiết kế.
Một số chi tiết của I
2
C-bus mà đặc biệt cuốn hút người dùng:
Khối hàm trong biểu đồ khối phù hợp với các IC trong thực tế;
thiết kế thực hiện nhanh hơn từ sơ đồ khối đến lược đồ.
Không cần phải thiết kế giao diện Bus bởi vì giao tiếp Bus đã
đường mạch in. Kết quả là bảng mạch in sẽ nhỏ hơn và rẻ hơn.
Phương thức nào tích hợp toàn bộ I2C-Bus loại bỏ yêu cầu về
giải mã đòa chỉ và các liên kết logic (glue logic) khác.
Đa chủ ( multi Master) là khả năng của I2C-Bus cho phép
nhanh chóng kiểm tra và sắp xếp đònh tuyến với thiết bò người
dùng theo kết nối cục bộ đến một đường chung.
I2C-Bus có sẵn sự tương thích với với IC trong SO(small
outline), VSO(very small outline) rất tốt.
Đó chỉ là một số lợi ích. Thêm vào đó, IC có tích hợp I2C-Bus làm tăng
sự linh động thiết kế hệ thống bằng cách nhiều thiết bò khác nhau và có cấu
trúc đơn giản và dễ dàng nâng cấp để cập nhật. Trong trường hợp này, một
thiết bò thuộc họ nào có thể phát triển lên từ thiết kế cơ bản của họ đó. Nâng
cấp cho thiết bò mới hoặc tăng cường chức năng cho thiết bò mẫu (ví dụ như mở
rộng bộ nhớ, điều khiển từ xa ... v.v) có thể làm đơn giản bằng cách tách IC
tương thích trên Bus ra.
III. Giới thiệu đặc điểm kỹ thuật của I2C-Bus.
Về ứng dụng điều khiển số đònh hướng 8-bit, như là những ứng
dụng yêu cầu vi điều khiển, tiêu chuẩn thiết kế có thể được thiết lập:
Hệ thống hoàn chỉnh thường bao gồm một vi điều khiển và
thiết bò ngoại vi khác như là bộ nhớ và mở rộng I/O.
Chi phí kết nối với nhiều thiết bò mà không cần hệ thống phải
được tối thiểu.
Một hệ thống mà thực hiện hàm điều khiển thì không yêu cầu
truyền dữ liệu tốc độ cao.
Toàn bộ hiệu quả phụ thuộc vào thiết bò dược chọn và cấu
trúc tự nhiên của Bus đa liên kết.
Để sản suất được một hệ thống đạt được các tiêu chuẩn này, một cấu
trúc nối tiếp được yêu cầu. Dù các Bus nối tiếp không có khả năng về lưu
lượng của các Bus song song, nhưng nó yêu cầu ít dây nối hơn và chân kết nối
IC hơn. Tuy nhiên, Bus không chỉ đơn thần là dây đa liên kết, mà nó biểu hiện
Bộ chủ Thiết bò khởi động truyền, khởi tạo xung
nhòp và kết thúc truyền ..
Bộ tớ thiết bò được đònh đòa chỉ bởi Bộ chủ .
Đa chủ Hơn một bộ chủ cố gắng để điều khiển
Bus tại một thời điểm mà không sai lạc
thông điệp.
Sự phân xử Thủ tục đảm bảo rằng, nếu có hơn một
bộ chủ cùng một lúc cố gắng điều khiển
Bus, chỉ có một được cho phép làm vậy
và và thông điệp thì không sai .
Đồng bộ Thủ tục đồng bộ tín hiệu xung nhòp của
hai hay nhiều thiết bò.
Bảng 1 : Đònh nghóa các thuât ngữ của I2C Bus
Điểm nổi bật là mối quan hệ chủ-tớ và thu-phát được thiết lập trên I2C
Bus. Chú ý rằng những mối quan hệ trên là không cố đònh, nhưng chỉ phụ thuộc
vào hướng truyền dữ liệu tại thời điểm đó. Sự truyền dữ liệu được tiến hành
như sau:
1, Giả thiết vi điều khiển A muốn truyền thông tin cho vi điều khiển B:
Vi điều khiển A(chủ), vi điều khiển B (tớ)được đònh đòa chỉ .
Vi điều khiển A(bộ phát chủ) truyền dữ liệu cho vi điều khiển
B(bộ thu tớ).
Vi điều khiển A kết thúc truyền.
2, Nếu vi điều khiển A muốn nhận thông tin từ vi điều khiển B:
Vi điều khiển A(chủ), vi điều khiển B được đònh đòa chỉ(tớ).
Vi điều khiển A(bộ thu chủ) nhận dữ liệu từ vi điều khiển B
(bộ phát tớ).
Vi điều khiển A kết thúc truyền.
Khả năng kết nối nhiều hơn một vi điều khiển với I2C Bus có nghóa là
nhiều hơn một master có thể khởi động truyền dữ liệu tại cùng một thời điểm.
Để tránh sự hỗn độn sinh ra từ sự việc này, người đã phát phiển một thủ tục gọi
đònh nghóa là điều kiện KHỞI ĐỘNG và điều kiện DỪNG ( START (S) và
STOP(P) conditions).
Hình 5 : Điều kiện KHỞI ĐỘNG và điều kiện DỪNG.
Điều kiện KHỞI ĐỘNG(S) : là sự chuyển đổi trạng thái từ mức CAO
xuống mức THẤP trên SDA trong khi đó SCL ở mức CAO.
Điều kiện DỪNG (P) : là sự chuyển đổi trạng thái từ mức THẤP xuống
mức CAO trên SDA trong khi đó SCL ở mức CAO.
Điều kiện KHỞI ĐỘNG và điều kiện DỪNG thì luôn luôn được khởi
động bởi bộ chủ. Bus coi như là bận sau điều kiện KHỞI ĐỘNG. Bus sẽ trở lại
rảnh sau điều kiện DỪNG.
Bus ở trạng thái bận nếu KHỞI ĐỘNG lặp lại ( Sr : repeated START)
được kích khởi thay vì điều kiện DỪNG. Về điểm này, điều kiện KHỞI
ĐỘNG(S) và KHỞI ĐỘNG lặp lại (Sr) thì đònh nghóa giống nhau ( Xem hình
10) . Do đó, ở phần còn lại , ta sẽ gọi tắt
S đại diện cho cả Điều kiện KHỞI
ĐỘNG và KHỞI ĐỘNG lặp lại. Và
P đại diện cho điều kiện DỪNG.
Thiết bò kết nối với Bus phát hiện ra
S và P thì dễ dàng nếu chúng kết
hợp chặt chẽ giao diện phần cứng cần thiết. Tuy nhiên, vi điều khiển mà không
có giao diện như vậy phải lấy mẫu SDA ít nhất 2 lần trên 1 chu kỳ xung nhòp
để nhận biết được sự truyền.
VII. Truyền dữ liệu.
1. Đònh dạng byte.
Mỗi byte trên SDA phải dài 8-bits. Số lượng byte có thể truyền trong
truyền dữ liệu là không giới hạn. M
ỗi byte phải được kèm theo một bit xác nhận
( ACK). D
ữ liệu truyền bit có trọng số lớn nhất(MSB) trước ( Xem Hình 6). Nếu
bộ tớ không thể truyền hoặc nhận byte dữ liệu khác cho đến khi nó thực hiện
P hoặc Sr.
Nếu bộ thu chủ gặp rắc rối với sự truyền, nó phải phát tín hiệu kết thúc
dữ liệu đến bộ phát tớ bằng cách không khởi tạo ACK trên byte cuối cùng
Bộ phát tớ phải giải thoát SDA và cho phép bộ chủ khởi tạo P hoặc Sr.
VIII. Sự phân xử và sự khởi tạo xung nhòp.
1. Sự đồng bộ
Tất cả các bộ chủ khởi tạo xung nhòp của chúng trên SCL để chuyển
thông điệp trên I2C Bus. Dữ liệu chỉ hợp lệ trong suốt khoảng thời gian xung
nhòp ở mức CAO. Xung nhòp được đònh nghóa về việc này thì cần thiết cho thủ
tục phân xử theo từng bit xảy ra.
Đồng bộ xung nhòp được thực hiện bằng cách sử dụng And nối dây của
giao diện I2C đến SCL. Điều này có nghóa là sự chuyển tiếp từ mức CAO
xuống mức THẤP trên SCL gây ra cho thiết bò liên quan bắt đầu giai đoạn ở
mức THẤP ( LOW period) xung nhòp của một thiết bò sẽ xuống mức THẤP, nó
sẽ giữ trạng thái này cho đến khi đạt được trạng thái CAO.( Xem hình 8). Tuy
nhiên , sự chuyển tiếp từ mức THẤP xuống mức CAO của xung nhòp này có
thể không thay đổi trạng thái của SCL nếu xung nhòp của thiết bò khác vẫn ở
trong giai đoạn ở mức THẤP của nó. SCL sẽ được giữ ở mức THẤP bởi thiế bò
mà có giai đoạn ở mức THẤP của nó dài nhất. Những thiết bò với giai đoạn ở
mức THẤP của nó ngắn hơn trạng thái chờ ở mức CAO trong suốt thời gian
này.
Hình 8 : Đồng bộ xung nhòp trong thủ tục phân sử.
Khi tất cả các thiết bò liên quan không ở giai đoạn ở mức THẤP của
chúng, SCL sẽ được giải phóng và lên mức CAO. Không có sự khác biệt giữa
xung nhòp của thiết bò . Và tất cả các thiết bò sẽ khởi động đến giai đoạn ở mức
CAO của chúng. Nếu thiết bò đầu tiên hoàn thành giai đoạn ở mức CAO của
chúng và lại kéo SCL xuống THẤP.
Trong trường hợp này, xung nhòp của SCL mà được đồng bộ được khởi
động với giai đoạn ở mức THẤP của nó quyết đònh bởi thiết bò có giai đoạn ở
mức THẤP dài nhất, giai đoạn ở mức CAO của nó quyết đònh bởi thiết bò có