1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo đề tài vi xử lý và vi điều khiển đề tài tìm hiểu về chuẩn giao tiếp i2c

19 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm hiểu về chuẩn giao tiếp I2C
Tác giả Vũ Tuấn Anh, Nguyễn Phúc Quý, Đồng Quang Trung
Người hướng dẫn Thiếu tá Nguyễn Đăng Hiếu
Trường học Trường Đại Học Kỹ Thuật – Hậu Cần CAND
Chuyên ngành Vi xử lý và vi điều khiển
Thể loại Báo cáo đề tài
Định dạng
Số trang 19
Dung lượng 3,95 MB

Nội dung

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ứn

Trang 1

TRƯỜNG ĐẠI HỌC KỸ THUẬT – H U C N CAND Ậ Ầ KHOA ĐIỆN TỬ VIỄN THÔNG VÀ K THU T NGHI P V Ỹ Ậ Ệ Ụ

BÁO CÁO ĐỀ TÀI

HỌC PH N: VI X Ầ Ử LÝ VÀ VI ĐIỀU KHIỂN

ĐỀ TÀI TÌM HI: ỂU V CHUẨN GIAO TI P I2C Ề Ế

Sinh viên th c hiự ện: Vũ Tuấn Anh

Nguy n Phúc Q

Đồng Quang Trung

Giáo viên hướng dẫn: Thi u tá Nguyế ễn Đăng Hiếu

Trang 2

Mục l c ụ

1 Giới thi u ệ chung v I2Cề 3

1.1 Đặ điểm giao tiếp I2C 4 c 1.2 START and STOP conditions 6

1.3 Địnhdạng d ữ liệu truy nề 7

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

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

1.6 Chế độ Multi‐Master 11

2 2 Quá trình truy n d ề ữ liệu trong chế độ Multi-Master 12

2.1 Module I2C trong Vi điề khiểu n PIC 13

2.2 Đặ điểm phần cứng 13 c 2.3 Cách th c s dứ ử ụng Module I2C trong CCS 14

3 K t ế luận 18

Trang 3

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

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ế điềp 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 khác IC nhau như các loạ Vi điề khiểi u 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ạ vii

Trang 4

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 k t n i vào ẽ ộ ế ị ạ vi ế ố đườ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ệ trởn kéo lên (pull‐up resistor) S c n thi t c a ự ầ ế ủ các điệ trởn kéo này là vì chân giao p I2C c a các thi t b ngotiế ủ ế ị ại vi thường là d ng cạ ực máng h ở (open‐drain or open‐collector)

Giá ctrị ủa các điệ trởn 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Ω đế 4.7KΩ n

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 thi t bấ là ế ị chủ (master) hay t (slave) ớ

Trang 5

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

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 u có ữ liệ 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 p I2C ộ tiế đề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 đị chỉ ủa c a thi t b B ế ị (t ),ớ cùng ớ việ v i 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

Trang 6

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 p tiế 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 d i là ỗ (“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ể ế ệ ế ữ ế ị ớ

Hình 1.4 Điều ki n START STOP c a ệ và ủ 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 = báo 0) 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 b i thi t b ạ ra ở ế ị 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ề kiệu 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

Trang 7

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 8 bits Slà ố 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 p t c th c hi n quá trình truy n hoẽ tiế ụ ự ệ ề ặc kết thúc

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

Trang 8

Clock = 8 ?

ACK ?

SDA=

BufferFull ? Hình 1.7 Bit ACK trên bus I2C

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

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 để ắt đầ b 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ó

Trang 9

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 nào trên bus I2C, ạ vi 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.9 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à ả xu s n ất ranó 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à ữ liệ d 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ượ ại Hướủ c l ng truyền được quy định bởi bit thứ 8 trong byte đầu tiên được truyền đi

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

Trang 10

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ủ ử đị chỉ ủ g i a c a thi t b tế ị ớ mà nó ầ c n giao p cùng v i bit tiế ớ = 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.11 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 thi t b ỗi, ế ị 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 ớ = 1 và đợi xung ACK t phía thi t b từ ế ị ớ

‐ Sau xung ACK ầ d u tiên, thi t b t s gế ị ớ ẽ ửi từng byte bus, thi t bra ế ị 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

Trang 11

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

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ệ việ đọn 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

Hình 1.12.Quá trình phố ợ đọc/ghi dữ liệui h p

Chế độ giao tiế Master‐Slave p là chế độ cơ b n trong m t ả ộ bus I2C, toàn

bộ bus được qu n lý b i mả ở ột master duy nh t Trong chấ ế độ này s không xẽ ảy

ra tình trạng xung đột bus hay mất đồng b xung clock vì ch có m t master ộ ỉ ộ duy nh t có th t o xung clock.ấ ể ạ

1.6 Chế độ Multi‐Master

Trên bus I2C có thể có nhiề hơnu m t master ộ điề khiểu n bus Khi đó bus I2C s ẽ hoạt động ở chế độ Multi‐Master

Chế độ Multi-Master trong I²C (Inter-Integrated Circuit) cho phép nhi u thi t b ề ế ị master đồng thời tồn tại và giao tiếp trên cùng một bus Điều này tạo điều kiện cho các

hệ thống ph c tứ ạp hơn, nơi nhiều bộ vi điều khi n ho c b x lý c n truy cể ặ ộ ử ầ ập và điều khiển các thi t b ngoế ị ại vi chung Dưới đây là chi tiết về cách thức hoạt động và quản

lý giao ti p trong ch Multi-Master c a I²C ế ế độ ủ

Chế độ Multi-Master v n s d ng hai dây SDA (Serial Data Line) và SCL (Serial ẫ ử ụ Clock Line) để truyền dữ liệu và đồng bộ hóa Tuy nhiên, khi có nhiều master, cần có các cơ chế bổ sung để đảm bảo rằng không có xung đột trên bus

a Arbitration (Phân quy n truy cề ập)

Trang 12

Arbitration là quá trình xác định master nào được quyền kiểm soát bus khi có nhiều master cố g ng truy n d u cùng lúc ắ ề ữ liệ

Trong quá trình truy n dề ữ liệu, m i master theo dõi SDA và SCL N u mỗ ế ột master nh n th y SDA khác v i mậ ấ ớ ức nó mong đợi (do một master khác đang kéo SDA xuống), nó s dừng truyẽ ền và nhường quyền điều khiển bus cho master kia Quá trình này di n ra m t cách t ễ ộ ự động và không gây xung đột dữ liệu

b Synchronization (Đồng bộ hóa)

Synchronization đảm b o r ng t t c các master trên bus hoả ằ ấ ả ạt động đồng b ộ với nhau, s d ng chung tín hiử ụ ệu đồng h SCL Master có tồ ốc độ đồng hồ thấp hơn sẽ kéo dài chu kỳ đồng hồ để các master khác ph i chả ờ, đảm bảo đồng b hóa trên toàn ộ

bộ bus

2 2 Quá trình truy n d ề ữ liệu trong chế độ Multi-Master

Quá trình truy n dề ữ liệu trong chế độ Multi-Master tương tự như trong chế độ Master-Slave, nhưng với các bước bổ sung để xử lý arbitration và synchronization:

a Khởi đầu (Start Condition)

Một master tạo Start Condition để ắt đầ b u truy n dề ữ liệu, kéo SDA t m c cao ừ ứ xuống mức th p trong khi SCL vấ ẫn ở ứ m c cao

b Arbitration

Khi nhi u master c g ng t o Start Condition cùng lúc, quá trình arbitration bề ố ắ ạ ắt

đầu Các master theo dõi tr ng thái của SDA: ạ

Nếu m t master phát hi n SDA mộ ệ ở ức thấp trong khi nó d ự kiến SDA m c cao, ở ứ

nó s d ng truyẽ ừ ền và nhường quyền điều khi n bus cho master khác ể

Master còn lại tiế ụp t c truy n d ề ữ liệu

c Gửi địa chỉ và bit đọc/ghi (R/W)

Master gửi địa ch c a slave và bit chỉ ủ ỉ định hành động đọc (1) ho c ghi (0) Tặ ất

c ả các master khác theo dõi và đảm bảo arbitration tiếp tục đúng cách

d Acknowledge (ACK)

Slave với địa chỉ tương ứng nhận địa chỉ và bit R/W, sau đó kéo SDA xuống mức

Ngày đăng: 16/08/2024, 17:36

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w