Tải bản đầy đủ (.pdf) (81 trang)

Tổng hợp kiến thức các loại giao tiếp cơ bản tiếng việt - Ôn tập kỹ thuật giao tiếp máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.27 MB, 81 trang )

Biên soạn: Hải Hoàng – website:

PHẦN 1: GIAO TIẾP RS232 – RS485
Do tính không có chuẩn RS485 nên ta phải có một bộ chuyển đổi giữa
chuẩn
RS232 và RS485.
Như vậy giải pháp mà nhóm thực hiện đề tài lựa chọn cho việc giao tiếp giữa
máy chủ và các mô-đun điều khiển sẽ là sự kết hợp giữa chuẩn RS232 và
RS485. Sau đây là sơ đồ khối tổng quát của hệ thống điều khiển:

Y
KHÁ
CH


Y
KHÁ
CH


Y
KHÁ
CH

MÁY CHỦ
MẠNG
INTERNET
RS232
BOARD
CHUYỂ
N ĐỔI


GIỮA
RS232

RS485

RS485

MÔ-ĐUN1
MÔ-ĐUN31

MÔ-ĐUN2

Hình 5. 1: Sơ đồ khối tổng quát của hệ thống điều khiển thiết bị
qua mạng Internet.

[Type text]

Page 36


Biên soạn: Hải Hoàng – website:

Với một hệ thống như trên ta có thể có tới 31 mô-đun điều khiển. Chi tiết về
chuẩn RS232, RS485 và cách thức truyền nhận dữ liệu sẽ được trình bày ở
những phần sau.
5.2 Chuẩn RS232C và chuẩn RS485
5.2.1 Chuẩn RS232C
Các máy tính thường có 1 hoặc 2 cổng nối tiếp theo chuẩn RS232C, được gọi là
cổng Com. Chúng được dùng ghép nối cho chuột, modem, thiết bị đo
lường,…Khi cần dùng nhiều cổng hơn ta có thể lắp đặt các card mở rộng trên

đó có thêm một đến hai cổng Com. Có hai dạng cổng Com: cổng Com 25 chân
và cổng Com 9 chân. Hiện nay thì cổng Com 9 chân (DB9) theo chuẩn RS232C
trở
nên
rất
phổ
biến.

[Type text]

Page 37


Biên soạn: Hải Hoàng – website:

Ưu điểm giao diện nối tiếp RS232C
− Khả năng chống nhiễu của các cổng nối tiếp cao.
− Thiết bị ngoại vi có thể tháo lắp ngay cả khi máy tính đang được cấp điện.
− Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua cổng nối
tiếp.

Hình 5. 2: Chân ra cổng Com DB9.
Bảng 5. 6: Các Chân và chức năng của cổng Com DB9.
DB-9

Tên

Ký hiệu

Chức năng


1

Data Carrier
Detect

DCD

Phát hiện tín hiệu mang dữ
liệu

2

Receive Data

RxD

Nhận dữ liệu

3

Transmit Data

TxD

Truyền dữ liệu

4

Data Terminal

Ready

DTR

5

Singal Ground

SG

6

Data Set Ready

DSR

7

Request to
Send

RTS

8

Clear To Send

CTS

9


[Type text]

Ring Indicate

RI

Đầu cuối dữ liệu sẵn sàng,
được kích hoạt bởi bộ nhận
khi muốn truyền dữ liệu
Mass của tín hiệu
Dữ liệu sẵn sàng, được kích
hoạt bởi bộ truyền khi nó sẵn
sàng nhận dữ liệu
Yêu cầu gửi, bộ truyền đặt
đường này lên mức hoạt
động khi sẵn sàng truyền dữ
liệu
Xóa để gửi, bộ nhận đặt đường
này lên mức hoạt động để
thông báo cho bộ truyền là nó
sẵn sàng nhận dữ liệu.
Báo chuông, cho biết là bộ
nhận đang nhận tín hiệu rung
chuông.

Page 38


Biên soạn: Hải Hoàng – website:


Những đặc điểm cần lưu ý trong chuẩn RS232C
− Trong chuẩn RS232C, các giới hạn trên đối với mức logic 0 và
logic 1 là ±12V. Chuẩn RS232C ngày nay đang được áp dụng còn cố định
trở kháng tải trong phạm vi từ 3000Ω đến 7000Ω.
− Mức logic 1 có điện áp nằm trong khoảng –3V đến –12V, mức
logic 0 từ +3V đến +12V.
− Trở kháng tải phải lớn hơn 3000Ω nhưng phải nhỏ hơn 7000Ω.
− Tốc độ truyền/nhận dữ liệu cực đại là 100kbps (ngày nay có thể
đạt được 200 kbps).
− Các lối vào phải có điện dung nhỏ hơn 2500pF
− Độ dài của cáp nối giữa máy tính và thiết bị ngoại vi ghép nối qua
cổng nối tiếp RS232C không thể vượt quá 15 m nếu không sử dụng
Modem.
− Các giá trị tốc độ truyền dữ liệu chuẩn là : 50, 75, 110, 150, 300,
600, 1200, 2400, 4800, 9600, 19200, 28800 …… 56600, 115200bps.
5.2.2 Chuẩn RS485
Có thể coi chuẩn RS485 là một phát triển của RS232 trong việc truyền dữ liệu
nối tiếp. Những bộ chuyển đổi RS232/RS485 cho phép người dùng giao tiếp
với bất kì thiết bị mà sử dụng liên kết nối tiếp RS232 thông qua liên kết RS485.
Liên kết RS485 được hình thành cho việc thu nhận dữ liệu ở khoảng cách xa
và điều khiển cho những ứng dụng. Những đặc điểm nổi trội của RS485 là nó
có thể hỗ trợ 1 mạng lên tới 32 trạm thu phát trên cùng 1 đường truyền, tốc độ
có thể lên tới 115.200 baud cho 1 khoảng cách là 4000feet (1200m).
Bảng 5. 7: Bảng tóm tắt thông số của RS485.
Điều kiện
Thông số
Áp ngõ ra điều khiển khi
hở
mạch

Áp ngõ ra điều khiển khi có
tải
Dòng ngắn mạch ngõ ra
điều khiển
Thời gian cạnh lên ngõ ra
điều khiển
Áp kiểu chung điều khiển
Ngưỡng nhạy thu vào
Phạm vi áp kiểu chung thu
vào
Tổng trở ngõ vào phía thu

Min

Max

Đơn vị

1.5
-1.5
1.5
-1.5

6
-6
5
-5

V


1 ngõ ra nối
với
RL
= 54Ω
điểm
CL
= 50 pF
chung
RL = 54Ω

±250

V
mA

±3

% độ
rộng
bit
V

-7V V

±200

mV

12


V

RL= 100Ω

30

-7
12

V



Với kiểu truyền cân bằng và các dây được xoắn lại với nhau nên khi nhiễu xảy
ra ở dây này thì cũng xảy ra ở dây kia, tức là 2 dây cùng nhiễu giống nhau.
[Type text]

Page 39


Biên soạn: Hải Hoàng – website:

Điều này làm cho điện áp sai biệt giữa 2 dây thay đổi không đáng kể nên tại nơi
thu vẫn nhận được tín hiệu đúng nhờ tính năng đặc biệt của bộ thu đã loại bỏ
nhiễu.

[Type text]

Page 40



Biên soạn: Hải Hoàng – website:

Liên kết RS485 được sử dụng rất rộng rãi trong công nghiệp, nơi mà môi
trường nhiễu khá cao và sự tin tưởng vào tính ổn định của hệ thống là điều
quan trọng. Bên cạnh đó khả năng truyền thông qua khoảng cách xa ở tốc độ
cao cũng rất được quan tâm, đặc biệt là tại những nơi mà có nhiều trạm giao
tiếp được trải ra trên diện rộng. Sau đây là bảng tóm tắt những đặc điểm của chuẩn
RS485.
Một số vấn đề liên quan đến chuẩn RS485
ƒ
Truyền dẫn cân
bằng
Hệ thống truyền dẫn cân bằng gồm có 2 dây tín hiệu A, B nhưng không có dây
mass. Sở dĩ được gọi là cân bằng là do tín hiệu trên dây này ngược với tín hiệu
trên dây kia. Nghĩa là nếu dây này đang phát mức cao thì dây kia phải đang
phát mức thấp và ngược lại.

A
B

Hình 5. 3: Kiểu truyền cân bằng 2 dây.

A

B

1
0

1
0

Hình 5. 4: Tín hiệu trên 2 dây của hệ thống cân bằng.
ƒ
Mức tín
hiệu

RS232 – RS485


Biên soạn: Hải Hoàng – website:

Với 2 dây A, B truyền dẫn cân bằng, tín hiệu mức cao TTL được quy định khi
áp của dây A lớn hơn dây B tối thiểu là 200mV, tín hiệu mức thấp TTL được
quy định khi áp của dây A nhỏ hơn dây B tối thiểu cũng là 200mV. Nếu điện áp
VAB mà nằm trong khoảng -200mV < VAB < 200mV thì tín hiệu lúc này
được xem như là rơi vào vùng bất định. Điện thế của mỗi dây tín hiệu so với
mass bên phía thu phải nằm trong khoảng –7V đến +12V.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

ƒ
Cặp
xoắn

dây


Như chính tên gọi của nó, cặp dây xoắn (Twisted-pair wire) đơn giản chỉ là cặp
dây có chiều dài bằng nhau và được xoắn lại với nhau. Sử dụng cặp dây xoắn sẽ
giảm thiểu được nhiễu, nhất là khi truyền ở khoảng cách xa và với tốc độ cao.

Hình 5. 5: Cặp dây xoắn trong RS485.
ƒ Trở kháng đặc tính cặp dây xoắn
Phụ thuộc vào hình dáng và chất liệu cách điện của dây mà nó sẽ có 1 trở
kháng đặc tính (Characteristic impedence-Zo), điều này thường được chỉ rõ bởi
nhà sản xuất. Theo như khuyến cáo thì trở kháng đặc tính của đường dây vào
khoảng từ 100 - 120Ω nhưng không phải lúc nào cũng đúng như vậy.
ƒ Điện áp kiểu chung
Tín hiệu truyền dẫn gồm 2 dây không có dây mass nên chúng cần được tham
chiếu đến 1 điểm chung, điểm chung lúc này có thể là mass hay bất kì một mức
điện áp cho phép nào đó. Điện áp kiểu chung (Common-mode voltage -VCM) về
mặt toán học được phát biểu như là giá trị trung bình của 2 điện áp tín hiệu
được tham chiếu với mass hay 1 điểm chung.

Hình 5. 6: Cách xác định áp kiểu chung.
ƒ
Vấn đề nối
đất
RS232 – RS485


Biên soạn: Hải Hoàng – website:

Tín hiệu trên 2 dây khi được tham chiếu đến điểm chung là đất (Ground) thì khi
đó nó cần được xem xét kỹ lưỡng. Lúc này bộ nhận sẽ xác định tín hiệu bằng
cách tham chiếu tín hiệu đó với đất của nơi nhận, nếu đất giữa nơi nhận và nơi


RS232 – RS485


Biên soạn: Hải Hoàng – website:

phát có một sự chênh lệch điện thế vượt qua ngưỡng cho phép thì tín hiệu thu được
sẽ bị sai hoặc phá hỏng thiết bị. Điều này cho thấy mạng RS485 gồm 2 dây
nhưng có tới 3 mức điện áp được xem xét. Do đất là một vật dẫn điện không
hoàn hảo nên nó có một điện trở xác định, gây ra chênh lệch điện thế từ điểm này
tới điểm kia, đặc biệt là tại các vùng có nhiều sấm sét, máy móc tiêu thụ dòng
lớn, những bộ chuyển đổi được lắp đặt và có nối đất.

Hình 5. 7: Truyền RS485 khi tham chiếu với đất.
Chuẩn RS485 cho phép chênh lệch điện thế đất lên tới 7V, lớn hơn 7V là không
được. Như vậy đất là điểm tham chiếu không đáng tin tưởng và một cách tốt
hơn cho việc truyền tín hiệu lúc này là ta đi thêm một dây thứ 3, nó sẽ được nối
mass tại nguồn cung cấp để dùng làm điện áp tham chiếu.
ƒ
Điện trở đầu
cuối
Điện trở đầu cuối (Terminating Resistor) đơn giản là điện trở được đặt tại 2
điểm tận cùng kết thúc của đường truyền. Giá trị của điện trở đầu cuối lí tưởng
là bằng giá trị trở kháng đặc tính của đường dây xoắn, thường thì vào khoảng
100 - 120Ω.

Hình 5. 8: Cách đặt điện trở đầu cuối RT trong RS485.
Nếu điện trở đầu cuối không phù hợp với giá trị trở kháng đặc tính của đường
dây thì nhiễu có thể xảy ra do có sự phản xạ xuất hiện trên đường truyền, nhiễu ở
mức độ nhỏ thì không sao nhưng nếu ở mức độ lớn thì có thể làm tín hiệu bị sai


RS232 – RS485


Biên soạn: Hải Hoàng – website:

lệch. Sau đây là hình minh họa dạng tín hiệu thu được khi dùng 2 điện trở đầu
cuối
khác
nhau.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

RT=54Ω

RT=120Ω

Hình 5. 9: Tín hiệu RS485 thu được tương ứng với 2 giá trị điện trở RT.
ƒ Phân cực đường truyền
Khi mạng RS485 ở trạng thái rãnh thì tất cả các khối thu đều ở trạng thái lắng
nghe đường truyền và tất cả khối phát đều ở trạng thái tổng trở cao cách li với
đường truyền. Lúc này trạng thái của đường truyền được xem là bất định. Nếu
-200mV ≤ VAB ≤ 200mV thì trạng thái logic tại ngõ ra khối thu sẽ mang giá
trị của bit cuối cùng nhận được. Điều này không đảm bảo vì đường truyền
rãnh trong truyền dữ liệu nối tiếp đòi hỏi phải ở mức cao để khối thu không
hiểu nhầm là có dữ liệu xuất hiện trên đường truyền.
Để duy trì trạng thái mức cao khi đường truyền rãnh thì việc phân cực đường

truyền (Biasing) phải được thực hiện. Một điện trở R kéo lên nguồn ở đường A
và một điện trở R kéo xuống mass ở đường B sao cho VAB ≥ 200mV sẽ ép
đường truyền lên mức cao.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

Hình 5. 10: Phân cực cho đường truyền RS485.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

Các kiểu mẫu truyền nhận trong RS485
ƒ
Một phát, một
nhận

Hình 5. 11: Sơ đồ một phát, một nhận trong RS485.
Trong kiểu mẫu có sử dụng cặp dây xoắn, 2 điện trở đầu cuối RT.
ƒ
Một phát, nhiều
nhận

Hình 5. 12: Sơ đồ một phát, nhiều nhận trong RS485.
ƒ
Hai bộ truyền

nhận

Hình 5. 13: Sơ đồ sử dụng 2 bộ truyền nhận trong RS485.
RS232 – RS485


Biên soạn: Hải Hoàng – website:

Ở đây việc truyền và nhận dữ liệu được thực hiện bởi 1 cặp dây xoắn nên
truyền nhận dữ liệu không thể diễn ra đồng thời mà phải theo hình thức bán
song công (half duplex), trong một thời điểm chỉ có một bộ truyền.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

ƒ Nhiều bộ truyền nhận

Hình 5. 14: Sơ đồ sử dụng nhiều bộ truyền nhận trong RS485.
Tương tự như trong sơ đồ 2 bộ truyền nhận, hình thức truyền nhận dữ liệu ở
đây là bán song công.
Đoạn dây rẽ nhánh

Hình 5. 15: Đoạn dây rẽ nhánh trong RS485.
Đoạn dây rẽ nhánh (Stub) là đoạn dây nối từ cặp dây chính tới một trạm. Đoạn
dây rẽ nhánh dài sẽ làm ảnh hưởng tới sự phối hợp trở kháng. Vì vậy nên giữ
cho chiều dài đoạn dây rẽ nhánh càng ngắn càng tốt.
Một dạng kết nối đường truyền RS485 hợp lí:


RS232 – RS485


Biên soạn: Hải Hoàng – website:

Hình 5. 16: Một dạng kết nối đường truyền RS485 hợp lí.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

Cách thức truyền một mã ASCII theo chuẩn RS485

Hình 5. 17: Biểu đồ truyền một mã ASCII theo chuẩn RS485.
Bình thường đường truyền rãnh (Idle line) sẽ ở mức cao, VAB > 200mV.
Tín hiệu TX Control cho phép phát tín hiệu đi. Mỗi bit tín hiệu TXD phát đi sẽ
được biểu diễn tương ứng dưới dạng tín hiệu VAB theo chuẩn RS485. Bit 1
tương ứng với VAB dương, bit 0 tương ứng với VAB âm. Sau khi phát đi đủ
10 bit thì đường truyền lại lên mức cao báo hiệu trạng thái rãnh.

RS232 – RS485


Biên soạn: Hải Hoàng – website:

PHẦN 2: GIAO TIẾP I2C
Tóm tắt:
Giới thiệu chung về I2C
‐ Đặc điểm chung về I2C: giao thức, địa chỉ

‐ Các chế độ hoạt động: master‐slave, multi‐master
Module I2C trong Vi điều khiển PIC
‐ Cấu trúc phần cứng
‐ Chế độ hoạt động: Master, Slave, Multi‐master

1.

Giới thiệu chung về I2C
Ngày nay trong các hệ thống điện tử hiện đại, rất nhiều ICs hay thiết bị ngoại vi cần phải giao
tiếp với các ICs hay thiết bị khác – giao tiếp với thế giới bên ngoài. Vói mục tiêu đạt được hiệu
quả cho phần cứng tốt nhất với mạch điện đơn giản, Phillips đã phát triển một chuẩn giao tiếp nối
tiếp 2 dây được gọi là I2C. I2C là tên viết tắt của cụm từ Inter ‐ Intergrated Circuit – Bus giao tiếp
giữa các IC với nhau.
Lịch sử I2C – Thêm vào đây…(Phần này sẽ thêm sau…)
I2C mặc dù được phát triển bới Philips, nhưng nó đã được rất nhiều nhà sản xuất IC
trên thế giới sử dụng. I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều khiển, có thể kể ra
đây một vài tên tuổi ngoài Philips như: Texas Intrument (TI), Maxim‐Dallas, analog Device,
National Semiconductor … Bus I2C được sử dụng làm bus giao tiếp ngoại
vi cho rất nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC, AVR, ARM, chíp nhớ như
RAM tĩnh (Static Ram), EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tụ (DAC), IC điểu
khiển LCD, LED…

Hình 1.1. BUS I2C và các thiết bị ngoại vi

I2C


Biên soạn: Hải Hoàng – website:

1.1.


Đặc điểm giao tiếp I2C

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL). SDA là đường
truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ và chỉ theo một hướng. Như hình
vẽ trên, khi một thiết bị ngoại vi kết nối vào đường I2C thì chân SDA của nó sẽ nối với dây SDA
của bus, chân SCL sẽ nối với dây SCL.

Hình 1.2. Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode)
và chế độ nhanh (Fast mode)
Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua một điện trở
kéo lên (pull‐up resistor). Sự cần thiết của các điện trở kéo này là vì chân giao tiếp I2C của các thiết
bị ngoại vi thường là dạng cực máng hở (open‐drain or open‐collector). Giá trị của các điện trở này
khác nhau tùy vào từng thiết bị và chuẩn giao tiếp, thường dao động trong khoảng 1KΩ đến 4.7KΩ.
Trở lại với hình 1.1, ta thấy có rất nhiều thiết bị (ICs) cùng được kết nối vào một bus I2C, tuy
nhiên sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị, bởi mỗi thiết bị sẽ được nhận ra bởi một
địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt thời gian kết nối. Mỗi thiết bị có thể hoạt
đông như là thiết bị nhận dữ liệu hay có thể vừa truyền vừa nhận. Hoạt động truyền hay nhận còn
tùy thuộc vào việc thiết bị đó là chủ (master) hay tớ (slave).
Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để phân biệt, nó
còn được cấu hình là thiết bị chủ (master) hay tớ (slave). Tại sao lại có sự phân biệt này ? Đó là vì
trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ (master). Thiết bị chủ nắm vai trò tạo
xung đồng hồ cho toàn hệ thống, khi giữa hai thiết bị chủ/tớ giao tiếp thì thiết bị chủ có nhiệm vụ
tạo xung đồng hồ và quản lý địa chỉ của thiết bị tớ trong suốt quá trình giao tiếp. Thiết bị chủ giữ vai
trò chủ động, còn thiết bị tớ giữ vai trò bị động trong viêc giao tiếp.

I2C


Biên soạn: Hải Hoàng – website:


Hình 1.3. Truyền nhận dữ liệu giữa chủ/tớ
Nhìn hình trên ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, còn luồng dữ liệu có thể đi
theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ.
Về dữ liệu truyền trên bus I2C, một bus I2C chuẩn truyền 8‐bit dữ liệu có hướng trên đường
truyền với tốc độ là 100Kbits/s – Chế độ chuẩn (Standard mode). Tốc độ truyền có thể lên tới
400Kbits/s – Chế độ nhanh (Fast mode) và cao nhất là 3,4Mbits/s – Chế độ cao tốc (High‐speed
mode).
Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:
- Một chủ một tớ (one master – one slave)
- Một chủ nhiều tớ (one master – multi slave)
- Nhiều chủ nhiều tớ (Multi master – multi slave)
Dù ở chế độ nào, một giao tiếp I2C đều dựa vào quan hệ chủ/tớ. Giả thiết một thiết bị A
muốn gửi dữ liệu đến thiết bị B, quá trình được thực hiện như sau:


Thiết bị A (Chủ) xác định đúng địa chỉ của thiết bị B (tớ), cừng với việc xác định
địa chỉ, thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bị tớ



Thiết bị A gửi dữ liệu tới thiết bị B



Thiết bị A kết thúc quá trình truyền dữ liệu

Khi A muốn nhận dữ liệu từ B, quá trình diễn ra như trên, chỉ khác là A sẽ nhận dữ liệu từ B.
Trong giao tiếp này, A là chủ còn B vẫn là tớ. Chi tiết việc thiết lập một giao tiếp giữa hai thiết bị sẽ
được mô tả chi tiết trong các mục dưới đây.


1.2.

START and STOP conditions

START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập giao
tiếp với một thiết bị nào đó trong mạng I2C. START là điều kiện khởi đầu, báo hiệu bắt đầu của
giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp. Hình dưới đây mô tả điều kiện START và
STOP.
Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức cao
(SDA = SCL = HIGH). Lúc này bus I2C được coi là dỗi (“bus free”), sẵn sàng cho một giao tiếp.
Hai điều kiện START và STOP là không thể thiếu trong việc giao tiếp giữa các thiết bị I2C với
nhau

I2C


Biên soạn: Hải Hoàng – website:

Hình 1.4. Điều kiện START và STOP của bus I2C
Điều kiện START: một sự chuyển đổi trạng thái từ cao xuống thấp trên đường SDA
trong khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện START
Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA
trong khi đường SCL đang ở mức cao.
Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ. Sau tín hiệu START, bus
I2C coi như đang trong trang thái làm việc (busy). Bus I2C sẽ rỗi, sẵn sàng cho một giao tiếp mới
sau tín hiệu STOP từ phía thiết bị chủ.
Sau khi có một điều kiện START, trong qua trình giao tiếp, khi có một tín hiệu START được
lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tục trong trạng thái bận. Tín hiệu START và
lặp lại START đều có chức năng giống nhau là khởi tạo một giao tiếp.


1.3.

Định dạng dữ liệu truyền

Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền đi tại mỗi sườn dương
của xung đồng hồ trên dây SCL, quá trình thay đổi bit dữ liệu xảy ra khi SCL đang ở mức thấp.

Hình 1.5. Quá trình truyền 1 bit dữ liệu
Mỗi byte dữ liệu được truyền có độ dài là 8 bits. Số lượng byte có thể truyền trong một lần là
không hạn chế. Mỗi byte được truyền đi theo sau là một bit ACK để báo hiệu đã nhận dữ liệu. Bit
có trọng số cao nhất (MSB) sẽ được truyền đi đầu tiên, các bít sẽ được truyền đi lần lượt. Sau 8
xung clock trên dây SCL, 8 bit dữ liệu đã được truyền đi. Lúc này thiết bị nhận, sau khi đã nhận đủ
8 bít dữ liệu sẽ kéo SDA xuống mức thấp tạo một xung ACK ứng với xung clock thứ 9 trên dây
SDA để báo hiệu đã nhận đủ 8 bit. Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá
trình truyền hoặc kết thúc.

I2C


Biên soạn: Hải Hoàng – website:

Hình 1.6. Dữ liệu truyền trên bus I2C

Hình 1.7. Bit ACK trên bus I2C
Truyền

Nhận

SDA = data_bit


Kiểm tra xem
đã truyền đủ
8 bit chưa

Clock = 8 ?

Buffer = databit

NO
BufferFull ?

YES
YES
ACK ?
YES
Next_byte
or STOP

NO

Send ACK

Read Buffer

STOP
Hình 1.8. Lưu đồ thuật toán quá trình truyêng nhận dữ liệu

I2C


NO


Biên soạn: Hải Hoàng – website:

Một byte truyền đi có kèm theo bit ACK là điều kiên bắt buộc, nhằm đảm bảo cho quá
trình truyền nhận được diễn ra chính xác. Khi không nhận được đúng địa chỉ hay khi muốn kết
thúc quá trình giao tiếp, thiết bị nhận sẽ gửi một xung Not‐ACK (SDA ở mức cao) để báo cho thiết
bị chủ biết, thiết bị chủ sẽ tạo xung STOP để kết thúc hay lặp lại một xung START để bắt đầu quá
trình mới.

1.4.

Định dạng địa chỉ thiết bị

Mỗi thiết bị ngoại vi tham gia vào bus i2c đều có một địa chỉ duy nhất, nhằm phân biệt giữa các
thiết bị với nhau. Độ dài địa chỉ là 7 – bit, điều đó có nghĩa là trên một bus I2C ta
có thể phân biệt tối đa 128 thiết bị. Khi thiết bị chủ muốn giao tiếp với ngoại vi nào trên bus I2C, nó
sẽ gửi 7 bit địa chỉ của thiết bị đó ra bus ngay sau xung START. Byte đầu tiên được gửi sẽ bao gồm
7 bit địa chỉ và một bít thứ 8 điều khiển hướng truyền.

Hình 1.8. Cấu trúc byte dữ liệu đầu tiên
Mỗi một thiết bị ngoại vi sẽ có một địa chỉ riêng do nhà sản xuất ra nó quy định. Địa chỉ đó có
thể là cố định hay thay đổi. Riêng bit điều khiển hướng sẽ quy định chiều truyền dữ liệu. Nếu bit này
bằng “0” có nghĩa là byte dữ liệu tiếp theo sau sẽ được truyền từ chủ đến tớ, còn ngược lại nếu bằng
“1” thì các byte theo sau byte đầu tiên sẽ là dữ liệu từ con tớ gửi đến con chủ. Việc thiết lập giá trị
cho bit này do con chủ thi hành, con tớ sẽ tùy theo giá trị đó mà có sự phản hồi tương ứng đến con
chủ.

1.5.


Truyền dữ liệu trên bus I2C, chế độ Master‐Slave

Việc truyền dữ liệu diễn ra giữa con chủ và con tớ. Dữ liệu truyền có thể theo 2 hướng, từ chủ
đến tớ hay ngược lại. Hướng truyền được quy định bởi bit thứ 8
trong byte đầu tiên được truyền
đi.

Hình 1.9. Quá trình truyền dữ liệu

I2C


Biên soạn: Hải Hoàng – website:



Truyền dữ liệu từ chủ đến tớ (ghi dữ liệu): Thiết bị chủ khi muốn ghi dữ liệu đến con tớ,
quá trình thực hiện là:


Thiết bị chủ tạo xung START



Thiết bị chủ gửi địa chỉ của thiết bị tớ mà nó cần giao tiếp cùng với bit
= 0 ra bus và đợi xung ACK phản hồi từ con tớ




Khi nhận được xung ACK báo đã nhận diện đúng thiết bị tớ, con chủ bắt đầu gửi
dữ liệu đến con tớ theo từng byte một. Theo sau mỗi byte này đều là một xung
ACK. Số lượng byte truyền là không hạn chế.



Kết thúc quá trình truyền, con chủ sau khi truyền byte cuối sẽ tạo xung
STOP báo hiệu kết thúc.

Hình 1.10. Ghi dữ liệu từ chủ đến tớ
• Truyền dữ liệu từ tớ đến chủ (đọc dữ liệu): Thiết bị chủ muốn đọc dữ liệu từ thiết bị
tớ, quá trình thực hiện như sau:





Khi bus rỗi, thiết bị chủ tạo xung START, báo hiệu bắt đầu giao tiếp
Thiết bị chủ gửi địa chỉ của thiết bị tớ cần giao tiếp cùng với bit
đợi xung ACK từ phía thiết bị tớ

= 1 và

Sau xung ACK dầu tiên, thiết bị tớ sẽ gửi từng byte ra bus, thiết bị chủ sẽ
nhận dữ liệu và trả về xung ACK. Số lượng byte không hạn chế
Khi muốn kết thúc quá trình giao tiếp, thiết bị chủ gửi xung Not‐ ACK và tạo
xung STOP để kết thúc.

Hình 1.11. Đọc dữ liệu từ thiết bị tớ



I2C

Quá trình kết hợp ghi và đọc dữ liệu: giữa hai xung START và STOP, thiết bị chủ có thể
thực hiện việc đọc hay ghi nhiều lần, với một hay nhiều thiết bị. Để thực hiện việc đó, sau
một quá trình ghi hay đọc, thiết bị chủ lặp lại một xung START và lại
gửi lại địa chỉ của thiết bị tớ và bắt đầu một quá trình mới.


×