Tải bản đầy đủ (.docx) (29 trang)

bai8.giao tiepTWI-I2C

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 (1.07 MB, 29 trang )

Bài 8 - Giao tiếp TWI - I2C


1

2

3

4

5
( 21 Votes )
Nội dung Các bài cần tham khảo trước
1. Bạn sẽ đi đến đâu .
2. Giao diện TWI – I2C .
3. TWI trên AVR .
4. Điều khiển AVR TWI.
Download ví dụ
Cấu trúc AVR .
WinAVR .
C cho AVR.
Mô phỏng với Proteus.

I. Bạn sẽ đi đến đâu.
Bài này giới thiệu cách giao tiếp bằng truyền thông nối tiếp đồng bộ Two-Wire
Serial (TWI) tương thích với chuẩn I
2
C. Trong bài này chúng ta sẽ khảo sát 2 mode
truyền và nhận trên chip Master cùng với 2 mode truyền và nhận trên chip Slave.
Công cụ chính cũng là 2 bộ phần mềm WinAVR và Proteus. Vi điều khiển


ATmega32 sẽ được dùng làm minh họa.
Sau bài này, tôi hy vọng bạn có thể hiểu và thực hiện được:
- Nguyên lý truyền thông nối tiếp TWI và I
2
C.
- Sử dụng module TWI trong AVR ở các chế độ Master.
- Sử dụng module TWI trong AVR ở các chế độ Slave.
- Ví dụ giao tiếp giữa các AVR bằng TWI.
II. Giao diện TWI – I
2
C.
TWI (Two-Wire Serial Intereafce) là một module truyền thông nối tiếp đồng bộ
trên các chip AVR dựa trên chuẩn truyền thông I
2
C. I
2
C là viết tắc của từ Inter-
Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips
Semiconductor sáng lập và xây dựng thành chuẩn năm 1990. Phiên bản mới nhất
của I2C là V3.0 phát hành năm 2007. Để hiểu thêm về I2C bạn có thể tham khảo
các tài liệu “I2C Specification” từ trang web của NXP- (lập
bởi Philips). Trong phạm vi bài học này tôi chỉ giới thiệu giao thức TWI được giới
thiệu trong datasheet của các chip AVR từ Atmel. Tuy nhiên, về cơ bản TWI trong
AVR hoàn toàn tương thích I2C, do đó tìm hiểu TWI của AVR không chỉ giúp bạn
giao tiếp giữa các AVR với nhau mà có thể dùng TWI để điều khiển bất kỳ một
thiết bị nào theo chuẩn I2C (các chip nhớ, bộ chuyển đổi ADC, DCA, đồng hồ thời
gian thực…).
TWI (I2C) là một truyền thông nối tiếp đa chip chủ (tạm dịch của cụm từ
multi-master serial computer bus). Khái niệm “multi-master” (tôi sẽ dùng từ tiếng
anh multi-master thay vì dùng “đa chip chủ”) được hiểu là trong trên cùng một bus

có thể có nhiều hơn một thiết bị làm Master, đồng thời một Slave có thể trở thành
một Master nếu nó có khả năng. Ví dụ trong một mạng TWI của nhiều AVR kết nối
với nhau, bất kỳ một AVR nào đều có thể trở thành Master ở một thời điểm nào đó.
Tuy nhiên nếu một mạng dùng một AVR điều khiển các chip nhớ (như EEPROM
AT24C1024 chẳng hạn) thì khái niệm “multi-master” không tồn tại vì các chip nhớ
được thiết kế sẵn là Slave, không có khả năng trở thành master. TWI (I2C) được
thực hiện trên 2 đường SDA (Serial DATA) và SCL (Serial Clock) trong đó SDA là
đường truyền/nhận dữ liệu và SCL là đường xung nhịp. Căn cứ theo chuẩn I2C,
các đường SDA và SCL trên các thiết bị có cấu hình “cực góp mở” (open-drain
hoặc open-collector, tham khảo các mạch số dùng transistor để hiểu thêm), nghĩa là
cần có các “điện trở kéo lên” (pull-up resistor) cho các đường này. Ở trạng thái
nghỉ (Idle), 2 chân SDA và SCL ở mức cao. Hình 1 mô tả một mô hình mạng TWI
(I2C) cơ bản.
Hình 1. Mạng TWI (I2C) với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL.
Tiếp theo chúng ta tìm hiểu một số khái niệm và đặc điểm của TWI. Các
khái niệm và đặc điểm tôi đề cập dưới đây được dùng cho cả TWI và I2C, nếu có
sự khác biệt tôi sẽ giải thích thêm.
Master: là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị
cần giao tiếp và tạo xung giữ nhịp trên đường SCL.
Slave: là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu
từ Master.
SDA- Serial Data: là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ
hay dữ liệu đều được truyền trên đường này theo thứ tự từng bit một. Chú ý là
trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền trước nhất, đặc điểm
này ngược lại với chuẩn UART.
SCL –Serial Clock: là đường giữ nhịp nối tiếp. TWI (I2C) là chuần truyền
thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịp cho quá trình
truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL, một bit dữ liệu trên đường
SDA sẽ được lấy mẫu (sample). Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi
đường SCL ở mức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được

đổi trạng thái khi SCL ở mức cao (trừ START và STOP condition). Chân SDA có
thể được đổi trạng thái khi SCL ở mức thấp.

START Condition-Điều kiện bắt đầu: từ trạng thái nghỉ, khi cả SDA và SCL
ở mức cao nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA
xuống thấp trong khi SCL vẫn cao. Trạng thái này gọi là START Condition (chúng
ta gọi tắt là S).
STOP Condition-Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu,
nếu Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition. STOP
condition được Master thực hiện bằng cách kéo chân SDA lên cao khi đường SCL
đang ở mức cao. STOP condition chỉ được tạo ra sau khi địa chỉ hoặc dữ liệu đã
được truyền/nhận.
REPEAT START – Bắt đầu lặp lại: khoảng giữa START và STOP condition
là khoảng bận của đường truyền, các Master khác không tác động được vào đường
truyền trong khoảng này. Trường hợp sau khi kết thúc truyền/nhận mà Master
không gởi STOP condition lại gởi thêm 1 START condition gọi là REPEAT
START. Khả năng này thường được dùng khi Master muốn lấy dữ liệu liên tiếp từ
các Slaves. Hình bên dưới mô tả các Master tạo ra START, STOP và REPEAT
START.
Address Packet Format – Định dạng gói địa chỉ: trên mạng TWI (I2C), tất
cả các thiết bị (chip) đều có thể là Master hay Slave. Mỗi thiết bị có một địa chỉ cố
định gọi là Device address. Khi một Master muốn giao tiếp với một Slave nào đó,
nó trước hết tạo ra một START condition và tiếp theo là gởi địa chỉ Device address
của Slave cần giao tiếp trên đường truyền, vì thế xuất hiện khái niệm “gói địa chỉ”
(Address Packet). Gói địa chỉ trong TWI (I2C) có định dạng 9 bits trong đó 7 bit
đầu (gọi là SLA, được gởi liền sau START condition) chứa địa chỉ Slave, một bit
READ/WRITE và một bit ACK-Ackknowledge (xác nhận). Do bit địa chỉ có độ
dài 7 bits nên về mặt lý thuyết, trên 1 mạng TWI (I2C) có thể tồn tại tối đa
2^7=128 thiết bị có địa chỉ riêng biệt. Tuy nhiên, có một số địa chỉ không được sử
dụng như các địa chỉ có định dạng 1111xxx (tức các địa chỉ lớn hơn hoặc bằng 120

không được dùng). Riêng địa chỉ 0 được dùng cho “cuộc gọi chung” (General call).
Bit READ/WRITE (R/W) được truyền tiếp sau 7 bit địa chỉ là bit báo cho Slave
biết Master muốn “đọc” hay “ghi” vào Slave. Nếu bit này bằng 0 (gọi là W) thì quá
trình “Ghi” dữ liệu từ Master đến Slave được yêu cầu, nếu bit này bằng 1 (gọi là R)
thì Master muốn “đọc” dữ liệu từ Slave về. Tám bits trên (SLA+R/W) được Master
phát ra sau khi phát START condition, nếu một Slave trên mạng nhận ra rằng địa
chỉ mà Master yêu cầu trùng khớp với Device address của chính mình, nó sẽ “đáp
trả” lại Master bằng cách phát ra 1 tín hiệu “xác nhận” ACK bằng cách kéo chân
SDA xuống thấp trong xung thứ 9. Ngược lại, nếu không có Slave đáp ứng lại,
chân SDA vẫn ở mức cao trong xung giữ nhịp thứ 9 thì gọi là tín hiệu “không xác
nhận” – NOT ACK, lúc này Master cần có những ứng xử phù hợp tùy theo mỗi
trường hợp cụ thể, ví dụ Master có thể gởi STOP condition và sau đó phát lại địa
chỉ Slave khác…Như vậy, trong 9 bit của gói địa chỉ thì chỉ có 8 bit được gởi bởi
Master, bit còn lại là do Slave. Ví dụ Master muốn yêu cầu “đọc” dữ liệu từ Slave
có địa chỉ 43, nó cần phát đi một byte như sau trên đường truyền: (43<<1)+1,
trong đó (43<<1) là dịch số 43 về bên trái 1 vị trí vì 7 bit địa chỉ nằm ở các vị trí
cao trong gói địa chỉ, sau đó cộng giá trị này với “1” tức là quá trình “đọc” được
yêu cầu.

General call – Cuộc gọi chung: khi Master phát đi gói địa chỉ có dạng 0
(thực chất là 0+W) tức nó muốn thực hiện một cuộc gọi chung đến tất cả các Slave.
Tất nhiên, cho phép hay không cho phép cuộc gọi chung là do Slave quyết định.
Nếu các Slave được cài đặt cho phép cuộc gọi chung, chúng sẽ đáp lại Master bằng
ACK. Cuộc gọi chung thường xảy ra khi Master muốn gởi dữ liệu chung đến các
Slaves. Chú ý là cuộc gọi chung có dạng 0+R là vô nghĩa vì không thể có chuyện
Master nhận dữ liệu từ tất cả các Slave cùng thời điểm.
Data Packet Format – Định dạng gói dữ liệu: sau khi địa chỉ đã được phát
đi, Slave đã đáp lại Master bằng ACK thì quá trình truyền/nhận dữ liệu sẽ diễn ra
giữa cặp Master/Slave này. Tùy vào bit R/W trong gói địa chỉ, dữ liệu có thể được
truyền theo hướng từ Master đến Slave hay từ Slave đến Master. Dù di chuyển theo

hướng nào, gói dữ liệu luôn bao gồm 9 bits trong đó 8 bits đầu là dữ liệu và 1 bit
cuối là bit ACK. Tám bits dữ liệu do thiết bị phát gởi và bit ACK do thiết bị nhận
tạo ra. Ví dụ khi Master thực hiện quá trình gởi dữ liệu đến Slave, nó sẽ phát ra 8
bits dữ liệu, Slave nhận và phát lại ACK (kéo SDA xuống 0 ở xung thứ 9), sau đó
Master sẽ quyết định gợi tiếp byte dữ liệu khác hay không. Nếu Slave phát tín hiệu
NOT ACK (không tác động SDA ở xung thứ 9) sau khi nhận dữ liệu thì Master sẽ
kết thúc quá trình gởi bằng cách phát đi STOP condition. Hình bên dưới mô tả định
dạng gói dữ liệu trong TWI (I2C).

Phối hợp gói địa chỉ và dữ liệu: một quá trình truyền/nhận TWI (I2C) thường
được bắt đầu từ Master, Master phát đi một START condition sau đó gởi gói địa
chỉ SLA+R/W trên đường truyền. Tiếp theo nếu có một Slave đáp ứng lại, dữ liệu
có thể truyền/nhận liên tiếp trên đường truyền (1 hoặc nhiều byte liên tiếp). Khung
truyền thông thường được mô tả như hình bên dưới.
Multi-Master Bus –Đường truyền đa chip chủ: như đã trình bày ở trên, TWI
(I2C) là chuẩn truyền thông đa chip chủ, nghĩa là tại một thời điểm có thể có nhiều
hơn 1 chip làm Master nếu các chip này phát ra START condition cùng lúc. Nếu
các Master có cùng yêu cầu và thao tác đối với Slave thì chúng có thể “cùng tồn
tại” và quá trình truyền/nhận có thể thành công. Tuy nhiên, trong đa số trường hợp
sẽ có một số Master bị “thất lạc” (lost). Một Master bị lost khi nó truyền/nhận 1
mức cao trên SDA trong khi các Master khác truyền/nhận 1 mức thấp. Truyền
thông đa chip chủ tương đối phức tạp và vì thế tôi sẽ không đề cập trường hợp này
trong lúc thực hiện ví dụ giao tiếp trong bài học này.
Nắm được các khái niệm và đặc điểm trên của truyền thông TWI (I2C) là bạn
đã sẵn sàng để điều khiển module TWI trên AVR. Phần tiếp theo tôi sẽ hướng dẫn
cách thao tác module TWI trên AVR thông qua một ví dụ cụ thể.
III. TWI trên AVR.
1. Thanh ghi:
TWI trên AVR được vận hành bởi 5 thanh ghi bao gồm thanh ghi tốc độ giữ
nhịp TWBR, thanh ghi điều khiển TWCR , thanh ghi trạng thái TWSR, thanh ghi

địa chỉ TWAR và thanh ghi dữ liệu TWDR.
- TWBR (TWI Bit Rate Register): là 1 thanh ghi 8 bit quy định tốc độ phát
xung giữ nhịp trên đường SCL của chip Master.

Tốc độ phát xung giữ nhịp được tính theo công thức:
Trong đó CPU Clock frequency là tần số hoạt động chính của AVR, TWBR là
giá trị thanh thi TWBR và TWPS là giá trị của 2 bits TWPS1 và TWPS0 nằm trong
thanh thi trạng thái TWSR. Hai bits này được gọi là bit prescaler, thông thường
người ta hay set TWPS1:0 =00 để chọn Prescaler là 1 (40=1). Bảng 1 tóm tắt tốc
độ xung giữ nhịp tạo ra trên SCL đối với các giá trị của tham số:
Bảng 1. Tốc độ xung giữ nhịp tham khảo.

- TWCR (TWI Control Register): là thanh ghi 8 bit điều khiển hoạt động của
TWI.

• Bit 7- TWINT (TWI Interrupt Flag): là một cờ báo rất quan trọng. TWINT
được tự động set lên 1 khi TWI kết thúc một quá trình bất kỳ nào đó (như
phát/nhận START, phát nhận địa chỉ…). Chú ý là bit này không tự động được xóa
bởi phần cứng như các cờ báo trong các module khác. Vì thế, khi lập trình điều
khiển TWI chúng ta luôn phải xóa TWINT trước khi muốn thực hiện một quá trình
nào đó. Một điểm quan trọng cần lưu ý là bit TWINT được xóa khi chúng ta viết
giá trị 1 vào nó. Trong khi lập trình cho TWI, chúng ta thường xóa TWINT bằng
cách viết 1 vào nó, sau đó liên tục kiểm tra TWINT, nếu bit này được set lên 1 thì
quá trình đã hoàn thành.
• Bit 6 – TWEA (TWI Enable Acknowledge Bit): tạm hiểu là bit kích hoạt tín
hiệu xác nhận. Đối với chip Slave, nếu bit này được set thì tín hiệu xác ACK sẽ
được gởi trong các trường hợp sau: địa chỉ do Master phát ra trùng khớp với địa
chỉ của Slave; một cuộc gọi chung đang xảy ra và Slave này cho phép cuộc gọi
chung; dữ liệu đã được Slave nhận từ Master. Như thế, khi set một chip ở chế độ
Slave, chúng ta cần set bit này để nó có thể đáp ứng lại Master bất cứ khi nào được

gọi. Đối với chip Master, tín hiệu ACK chỉ được phát trong 1 trường hợp duy nhất
đó là khi Master nhận dữ liệu từ Slave, Master phát ACK để báo cho Slave là mình
đã nhận được và muốn tiếp tục nhận từ Slave.
• Bit 5 – TWSTA (TWI START Condition Bit): là bit tạo START condition.
Khi một chip muốn trở thành Master để thực hiện 1 cuộc gọi, bit này cần được set
và một START condition được tạo ra trên đường truyền nếu đường truyền đang
rảnh. Nếu đường truyền không rảnh, TWI sẽ chờ cho đến khi nó rảnh (nhận ra 1
STOP condition) và tiếp tục gởi START condition. Chú là là bit nay cần được xóa
bởi phần mềm sau khi START condition đã được gởi (viết 0 vào bit này để xóa nó).
• Bit 4 – TWSTO (TWI STOP Condition Bit): là bit tạo STOP condition cho
TWI. Khi Master muốn kết thúc một cuộc gọi, nó sẽ phát STOP condition bằng
cách viết giá trị 1 vào bit TWSTO. Slave cũng có thể tác động vào bit này, nếu một
cuộc gọi bị lỗi, viết 1 vào TWSTO trên Slave sẽ reset đường truyền về trạng thái
rảnh ban đầu.
• Bit 3 – TWWC (TWI Write Collision Flag): khi cờ TWINT đang ở mức thấp
tức TWI đang bận, nếu chúng ta viết dữ liệu vào thanh ghi dữ liệu (TWDR) thì một
lỗi xảy ra, khi đó bit TWWC tự động được set lên 1. Vì thế, trong quá trình truyền
dữ liệu, bit TWINT cần được giữ mức cao khi ghi dữ liệu vào thanh ghi TWDR và
sau đó xóa khi dữ liệu đã sẵn sàng.
• Bit 2 – TWEN (TWI Enable Bit): bit kích hoạt TWI trên AVR, khi TWEN
được set lên 1, TWI sẵn sàng hoạt động.
• Bit 1 – Reserve: không sử dụng.
• Bit 0 – TWIE (TWI Interrupt Enable Bit): bit cho phép ngắt TWI, khi bit nay
được set bằng 1 đồng thời bit I trong thanh ghi trạng thái chung được set, một ngắt
TWI xảy ra khi bit TWINT được set bởi phần cứng. Ngắt TWI có thể xảy ra sau
bất kỳ hoạt động nào liên quan đến TWI. Do đó cần sử dụng ngắt hợp lý. Thông
thường, ngắt chỉ được sử dụng cho Slave, đối với Master ngắt không cần thiết vì
Master chủ động khởi động một cuộc gọi.
Một điều cần chú ý là các bit trong thanh ghi TWCR không cần được set cùng
lúc, tùy vào từng giai đoạn trong quá trình giao tiếp TWI các bit có thể được set

riêng lẻ.
- TWSR (TWI Status Register): là 1 thanh ghi 8 bit trong đó có 5 bit chứa
code trạng thái của TWI và 2 bit chọn prescaler.

Có rất nhiều bước, nhiều tình huống xảy ra khi giao tiếp bằng TWI cho cả
Master và Slave. Ứng với mỗi trường hợp TWI sẽ tạo ra 1 code trong thanh ghi
TWSR . Lập trình cho TWI cần xét code trong 5 bit cao của thanh ghi TWSR và
đưa ra các ứng xử hợp lý ứng với từng code.
- TWDR (TWI Data Register): là thanh ghi dữ liệu chính của TWI. Trong
quá trình nhận, dữ liệu nhận về sẽ được lưu trong TWDR. Trong quá trình gởi, dữ
liệu chứa trong TWDR sẽ được chuyển ra đường SDA.
- TWAR (TWI Address Register): là thanh ghi chứa device address của chip
Slave. Cấu trúc thanh ghi được trình bày trong hình dưới.

Nhớ lại địa chỉ Slave được tạo thành từ 7 bits, trên thanh ghi TWAR 7 bits địa
chỉ này nằm ở 7 vị trí cao. Trước khi sử dụng TWI như Slave, chúng ta phải gán
địa chỉ cho chip, việc viết địa chỉ thường được thực hiện bằng lệnh TWAR =
(Device_address<<1)+TWGCE. Trong đó TWGCE (TWI General Call Enable) là
bit cho phép cuộc gọi chung. Như tôi đề cập bên trên, Slave co quyền cho phép
Master thực hiện cuộc gọi chung với nó hay không. Nếu TWGCE=1, Slave sẽ đáp
ứng lại cuộc gọi chung nếu có, nếu TWGCE=0 thì Slave sẽ bỏ qua cuộc gọi
chung.
2. Hoạt động của TWI:
TWI trên AVR được gọi là byte-oriented (tạm dịch là hướng byte) và
interrupt-based (dựa trên ngắt). Bất kỳ một sự kiện nào trong quá trình truyền/nhận
TWI cũng có thể gây ra 1 ngắt TWI. TWI trên AVR vì thế hoạt động tương đối độc
lập với chip. Tuy nhiên, cần khai thác ngắt trên AVR một cách hơp lý. Ví dụ, đối
với Master, chúng ta không cần sử dụng ngắt vì chip này hoàn toàn chủ động trong
việc truyền và nhận. Riêng với Slave, sử dụng ngắt để tránh bỏ lỡ các cuộc gọi là
cần thiết.

Tất cả các AVR trên mạng TWI đều có thể là Master hay Slave, cả Master và Slave
đều có thể truyền và nhận dữ liệu. Vì thế, có tất cả 4 mode trong hoạt động của
TWI trên AVR. Chúng ta sẽ lần lượt khảo sát các mode này như sau: Master
Transmitter (chip chủ truyền), Master Receiver (Chip chủ nhận), Slave Reicever
(chip tớ nhận) và Slave Transmitter (Chip tớ truyền).
Trước khi khảo sát các chế độ hoạt động của TWI chúng ta qui ước một số ký hiệu
thường dùng (đây cũng là các ký hiệu dùng trong datasheet của các chip AVR).
S: START condition – điều kiện bắt đầu
Rs: REPEAT START – bắt đầu lặp lại
R: READ Bit, bit này bằng 1 được gởi kèm với gói địa chỉ
W: WRITE Bit, bit này mang giá trị 0, gởi kèm gói địa chỉ
ACK: Ackowledge, bit xác nhận, chân SDA được kéo xuống 0 ở xung
thứ 9
NACK: Not Acknowledge, không xác nhận, SDA ở mức cao ở bit thứ 9
Data: 8 bits dữ liệu
P: STOP condition – điều kiện kết thúc.
SLA: Slave address, địa chỉ của Slave cần giao tiếp.
A. Master Transmitter mode – Master truyền dữ liệu:
Trong chế độ này, Master truyền 1 hoặc một số byte dữ liệu đến một hoặc các
Slave. Để bắt đầu, Master tạo ra một START condition trên đường SDA, nếu
đường truyền đang rảnh, Master sẽ tiếp tục phát đi địa chỉ của Slave cần giao tiếp
cùng với bit W (ghi) theo định dạng như sau: SLA+W. Nếu Slave đáp lại bằng một
ACK trong xung giữ nhịp thứ 9, Master sẽ tiếp tục gởi 1 hoặc liên tiếp các byte dữ
liệu trên SDA. Cứ sau mỗi byte dữ liệu, Master sẽ kiểm tra ACK từ Slave. Nếu
Slave gởi một NACK hoặc Master không muốn gởi thêm dữ liệu đến Slave nó sẽ
phát đi một STOP condition hoặc một REPEAT START (Rs). Nếu STOP được
phát, cuộc gọi kết thúc, nếu Rs được phát, một cuộc gọi mới bắt đầu, sau Rs là địa
chỉ của Slave mới…Đó là về mặt lý thuyết, trên thực tế làm sao để kiểm tra môt
START condition có được gởi chưa? làm sao biết có nhận được ACK sau khi phát
địa chỉ hoặc dữ liệu? Tất cả được TWI mã hóa thành các code chứa trong thanh ghi

TWSR (chỉ 5 bit cao). Chúng ta chỉ thanh ghi này và đối chiếu với bảng code quy
định sẵn để biết trạng thái đường truyền và đưa ra quyết định tiếp theo. Hình 2 mô
tả một quá trình Master truyền dữ liệu, các khả năng có thể xảy ra và giá trị tương
ứng của thanh ghi TWSR. Ý nghĩa các code trong thanh ghi TWSR trong lúc
Master truyền dữ liệu có thể tham khảo thêm datasheet của chip.

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×