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

báo cáo cuối kỳ tìm hiểu giao thức i2c

17 2 0

Đ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

Nội dung

- Địa chỉ thiết bị: Mỗi thiết bị Slave trên một mạch I2C có một địa chỉ duy nhất, cho phép các thiết bị khác nhau truyền và nhận dữ liệu một cách độc lập.- Độ dài đường truyền: Chuẩn I2C

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCMKHOA ĐIỆN - ĐIỆN TỬ

BÁO CÁO CUỐI KỲTÌM HIỂU GIAO THỨC I2CMÔN HỌC: KỸ THUẬT TRUYỀN SỐ LIỆU

Trang 2

Tên đề tài: “TÌM HIỂU GIAO THỨC I2C”Giảng viên hướng dẫn: ThS Nguyễn Văn Phúc

STTHọ và tên sinh viênMã số sinh viênSố điện thoại

BẢNG PHÂN CÔNG CÔNG VIỆC

Chương 4: Ứng dụng và hướng phát triển của

I2C trong tương lai

Đỗ Hoàng Thắng Tốt

Trang 3

MỤC LỤC

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ CHUẨN GIAO TIẾP I2C -1

1.1 Tổng quan về I2C -1

1.2 Nguyên tắt hoạt động của chuẩn giao tiếp I2C -1

1.3 Các đặc tính kỹ thuật của I2C -3

4.1 Ứng dụng thực tiễn của I2C -12

4.2 Tương lai phát triển của I2C -12

TÀI LIỆU THAM KHẢO -14

Trang 4

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ CHUẨN GIAO TIẾP I2C1.1 Tổng quan về I2C

- I2C (Inter- Integrated Circuit) là một giao thức nối tiếp đồng bộ được phát triển bởi Philips Semiconductors, sử dụng để truyền nhận dữ liệu giữa các IC với nhau Có thể kết nối nhiều slave với một master duy nhất và cũng có thể có nhiều master điều khiển một hoặc nhiều slave

- I2C chỉ sử dụng hai đường truyền tín hiệu để truyền dữ liệu giữa các thiết bị: + SDA (Serial Data) – đường truyền

dữ liệu nối tiếp, đường truyền cho master và slave để gửi và nhận dữ liệu.

+ SCL (Serial Clock) – đường mang tín hiệu xung nhịp nối tiếp

Hình 1.1 Sơ đồ khối I2C

- I2C là một giao thức truyền thông nối tiếp, các bit dữ liệu sẽ được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi 1 tín hiệu đồng hồ Đầu ra của các bit được đồng bộ hóa với việc lấy mẫu các bit bởi một tín hiệu xung nhịp được chia sẽ giữa master và slave Tín hiệu xung nhịp luôn được điều khiển bởi master.

-Tốc độ truyền dữ liệu: Giao tiếp I2C hỗ trợ nhiều tốc độ truyền dữ liệu khác nhau, từ các mức tốc độ thấp từ 100 kbps cho đến tốc độ cao hơn 400 kbps, 1 Mbps và 3.4 Mbps - Địa chỉ thiết bị: Mỗi thiết bị Slave trên một mạch I2C có một địa chỉ duy nhất, cho phép các thiết bị khác nhau truyền và nhận dữ liệu một cách độc lập.

- Độ dài đường truyền: Chuẩn I2C được thiết kế để truyền dữ liệu trên các đường truyền ngắn, thông thường là khoảng vài mét.

- Điện áp: Chuẩn I2C thường được sử dụng với các mức điện áp thấp, bao gồm 3,3 V và 5 V.

- Tốc độ truyền dữ liệu liệu: Chuẩn giao tiếp I2C.

Trang 5

1.2 Nguyên tắc hoạt động của chuẩn giao tiếp I2C

Hình 1.2 Sơ đồ tin nhắn của chuẩn giao tiếp I2C

- Dữ liệu của I2C được truyền trong các tin nhắn Tin nhắn được chia thành các khung dữ liệu Mỗi tin nhắn có một khung địa chỉ chứa địa chỉ nhị phân của địa chỉ slave và một hoặc nhiều khung dữ liệu chứa dữ liệu đang được truyền Thông điệp cũng bao gồm điều kiện khởi động và điều kiện dừng, các bit đọc/ghi và các bit ACK/ NACK giữa mỗi khung dữ liệu: - Start Condition: Khi một thiếu bị chủ quyết định một giao dịch,

nó sẽ chuyển mạch SDA từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyển từ mức điện áp cao xuống thấp Khi điều kiện bắt đầu được gửi từ thiết bị Master, tất cả các thiết bị Slave đều hoạt động ngay cả khi chúng ở chế độ ngủ (sleep mode) và đợi bit địa chỉ.

Hình 1.3 Điều kiện bắt đầu- Address Frame: Nó bao gồm một chuỗi 7-bit hoặc 10-bit cho mỗi slave để phân biệt giữa

các slave Khi thiết bị Master một dữ liệu thì tất cả các thiết bị Slave trên I2C so sánh các bit địa chỉ này với bit địa chỉ của chúng để xác định slave mà Master muốn giao tiếp.

- Bit Read/Write: Bit này dùng để xác định hướng truyền dữ liệu.

+ Nếu Master cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập mức điện áp thấp ‘0’.

+ Nếu Master cần nhận dữ liệu từ thiết bị Slave, bit này được thiết lập mức điện áp cao ‘1’.- Bit ACK/NACK: ACK/NACK là viết tắt của từ Acknowledged/Not-Acknowledged Mỗi

khung trong một tin nhắn đều được theo sau bởi một bit ACK/NACK (xác nhận/ không xác nhận) Nếu một khung địa chỉ hoặc khung dữ liệu được nhận thành công, một bit ACK sẽ được gửi lại cho thiết bị gửi từ thiết bị nhận

+ Khi địa chỉ vật lý của bất kỳ thiết bị Slave nào trùng với địa chỉ thiết bị Master phát, giá trị của bit này được set ‘0’ bởi thiết bị Slave.

+ Khi thiết bị Slave không nhận được tín hiệu của Master thì nó vẫn ở mức logic ‘1’ (mặc định).

- Khung dữ liệu: Sau khi master phát hiện bit ACK từ slave (Slave đã nhận được tín hiệu từ

Master), khung dữ liệu đầu tiên đã được sẵn sàng được gửi Khung dữ liệu bao gồm 8 bit và được thiết lập bởi bên gửi với các bit dữ liệu cần truyền tới bên nhận và được gửi với bit quan 2

Trang 6

trọng trước Theo sau mỗi khung dữ liệu là một bit ACK/ NACK để xác minh khung dữ liệu đã được nhận thành công Nếu nhận thành công thì thì bit này được set thành mức logic ‘0’ bởi bên nhận bằng cách kéo dòng SDA xuống một bit, nếu nhận không thành công thì nó vẫn ở mức logic ‘1’ Bit ACK phải được nhận bởi thiết bị gửi master hoặc slave (tùy thuộc vào cái nào đang gửi dữ liệu) trước khi khung dữ liệu tiếp theo được gửi

- Stop Condition: Sau khi các khung dữ liệu cần thiết được truyền hết

qua đường SDA, thiết bị Master chuyển đường SDA từ mức điện áp thấp lên mức điện áp cao trước khi đường SCL chuyển từ mức điện áp cao xuống thấp.

Hình 1.4 Điều kiện kết thúc

1.3 Các đặc tính kỹ thuật của I2C

- Chỉ sử dụng hai đường bus: SDA (đường truyền dữ liệu nối tiếp) và SCL (đường xung nhịp nối tiếp).

- Hoạt động theo cơ chế master - slave với cả master và slave đều có thể truyền và nhận dữ liệu Hỗ trợ nhiều thiết bị master với cơ chế phát hiện va chạm trên đường truyền và phân xử khi có va chạm tín hiệu để ngăn ngừa mất dữ liệu nếu hai hoặc nhiều master truyền tín hiệu cùng lúc.

- Mỗi thiết bị kết nối vào bus được định duy nhất một địa chỉ bằng phần mềm - Quá trình truyền dữ liệu nối tiếp 2 chiều 8-bit có định hướng có các chế độ truyền như: + Chế độ truyền thông thường - Standard mode (chế độ tiêu chuẩn): Chế độ này cho phép truyền dữ liệu với tốc độ lên đến 100kbps và sử dụng tín hiệu SCL để đồng bộ hóa các truyền thông.

+ Chế độ truyền nhanh – Fast mode: Chế độ này cho phép truyền dữ liệu với tốc độ truyền dữ liệu lên đến 400kbps và sử dụng tín hiệu SCL để đồng bộ hóa các truyền thông.

+ Chế độ truyền siêu nhanh - High speed mode: Chế độ này cho phép truyền dữ liệu với tốc độ truyền dữ liệu lên đến 3.4Mbit/giây Tuy nhiên chỉ được hỗ trợ trên một số thiết bị và bắt buộc tuân thủ các điều kiện nghiêm ngặt.

+ Chế độ đa Master- Multi Master mode: Chế độ này cho phép nhiều thiết bị điều khiển chính (master) truyền dữ liệu cùng trên một đường truyền I2C, cho phép các thiết bị truyền thông với nhau mà không cần đợi thiết bị khác truyền xong.

+ Chế độ đa Slave- Multi Slave mode: Chế độ này cho phép nhiều thiết bị con (Slave) truyền dữ liệu trên một đường truyền I2C, cho phép các thiết bị có thể nhận dữ liệu từ nhiều thiết bị khác nhau.

Trang 7

- Lọc nhiễu các xung nhọn trên đường bus để đảm bảo tính toàn vẹn dữ liệu.

- Số lượng IC tối đa có thể kết nối được trên bus I2C phụ thuộc vào sức chứa tối đa của bus.

1.4 Cách thức truyền - nhận

1.4.1 Truyền dữ liệu đến thiết bị Slave

- Quá trình truyền dữ liệu từ thiết bị Master đến một thiết bị Slave cụ thể thông qua bus I2C diễn ra theo trình tự như sau:

+ Đầu tiên thiết bị Master gửi điều kiện bắt đầu (START) đến tất cả cả thiết bị Slave + Thiết bị Master gửi đi 7-bit địa chỉ của thiết bị Slave mà thiết bị Master muốn giao tiếp cùng với bit Read/Write.

+ Mỗi thiết bị Slave so sánh địa chỉ được gửi từ thiết bị Master với địa chỉ riêng của nó Nếu địa chỉ trùng khớp, thiết bị Slave gửi về một bit ACK bằng cách hạ đường SDA xuống thấpvà bit ACK/NACK được thiết lập mức logic ‘0’ Nếu địa chỉ từ thiết bị Master không khớp

với địa chỉ riêng của thiết bị Slave thì đường SDA ở mức cao và bit ACK/NACK sẽ ở mức ‘1’ (mặc định).

+ Thiết bị Master gửi dữ liệu đến thiết bị Slave thì bit Read/Write là mức điện áp thấp ‘0’ + Khi khung dữ liệu được thiết bị Slave nhận thành công nó sẽ thiết lập bit ACK/NACK thành ‘0’ để báo cho thiết bị Master tiếp tục.

- Sau khi tất cả dữ liệu được gửi đến thiết bị Slave thì thiết bị Master gửi điều kiện dừng bằng cách chuyển mức điện áp SDA từ mức điện áp thấp lên mức điện áp cao trước khi đường SCL chuyển từ mức điện áp cao xuống thấp để báo hiệu cho tất cả các thiết bị Slave biết rằng việc truyền dữ liệu đã kết thúc.

Hình 1.5 Sơ đồ mô tả truyền dữ liệu từ Master đến Slave

1.4.2 Nhận dữ liệu từ Slave

- Quá trình nhận dữ liệu từ thiết bị Slave thông qua bus I2C tương tự như quá trình truyền dữ liệu từ Master đến Slave nhưng chỉ khác ở điểm bit Read/Write được thiết lập mức điện áp cao ‘1’.

4

Trang 8

CHƯƠNG 2: MÔ PHỎNG GIAO THỨC I2C TRÊN NỀN TẢNG ISE2.1 CODE

2.1.1 Module Verilog

Hình 2.1 Code mô phỏng Master I2C Hình 2.2 Code mô phỏng I2C

Trang 9

Hình 2.3 Code mô phỏng I2C

2.1.2 Verilog test fix ture

Hình 2.4 Code mô phỏng I2C - SLAVE không nhận được (ACK = 1)

- STOP = 1 Hình 2.5 Thông số mô phỏng thiết lập

Trang 10

Dạng sóng mô phỏng được

Hình 2.6 Kết quả mô phỏng thiết bị Master truyền dữ liệu

Ta thấy dạng sóng mô phỏng đúng với tính chất sóng của chuẩn giao tiếp I2C

Trang 11

CHƯƠNG 3: ĐÁNH GIÁ VÀ SO SÁNH CHUẨN GIAO TIẾP I2C1.1 Đánh giá

1.1.1 Sự tiện lợi I2C mang lại

- I2C rất tiện lợi trong việc kết nối các linh kiện điện tử với nhau bởi vì nó chỉ sử dụng hai dây để truyền thông (một dây dữ liệu và một dây đồng hồ), tiết kiệm không gian và chi phí.

Hình 3.1 Sự tiện lợi của I2C

+ Thiết lập dễ dàng: I2C được thiết kế để thiết lập đơn giản hơn so với các giao thức khác + Tiết kiệm đường truyền: Các thiết bị có thể chia sẻ cùng một đường truyền, giúp tiết kiệm số lượng dây kết nối.

+ Tốc độ truyền thông nhanh: I2C có tốc độ truyền thông nhanh hơn nhiều so với các giao thức khác như SPI hoặc UART Với tốc độ truyền thông tối đa lên đến 3.4 Mbps.

+ Điều khiển linh hoạt: I2C cho phép các thiết bị giao tiếp với nhau thông qua một số lệnh điều khiển, bao gồm đọc và ghi dữ liệu, đặt điều kiện, truyền thông qua nhiều thiết bị cùng một lúc, và nhiều hơn nữa.

3.1.2 Những hạn chế của I2C

Hình 3.2 Những hạn chế của I2C - Tuy nhiên, I2C cũng có một số hạn chế.

+ I2C chỉ hỗ trợ truyền thông điểm đến điểm, nghĩa là chỉ có thể truyền thông giữa hai thiết bị trực tiếp kết nối với nhau.

8

Trang 12

+ I2C có thể gặp vấn đề về tốc độ truyền thông khi kết nối nhiều thiết bị với nhau, bởi vì tốc độ truyền thông phải được chia đều cho tất cả các thiết bị.

+ I2C không được tối ưu cho các ứng dụng yêu cầu truyền thông nhanh và liên tục, nhưng thay vào đó được thiết kế cho các ứng dụng cần truyền thông đồng bộ và kiểm soát chính xác + Giới hạn khoảng cách truyền thông: Vì I2C sử dụng đường dây chung cho cả dữ liệu và xung đồng hồ, nên khoảng cách truyền thông giới hạn trong một mạch nhúng hoặc mô-đun vi điều khiển.

+ Tốc độ truyền thông giới hạn: Mặc dù tốc độ truyền thông của I2C nhanh hơn nhiều so với các giao thức khác như SPI và UART, tuy nhiên nó cũng có giới hạn tốc độ truyền thông tối đa là 3.4 Mbps, do đó không phù hợp cho các ứng dụng đòi hỏi tốc độ truyền thông rất cao + Thiết bị truyền thông phải có địa chỉ riêng: Mỗi thiết bị truyền thông I2C phải có địa chỉ riêng để được nhận dữ liệu từ các thiết bị khác Nếu có quá nhiều thiết bị trên cùng một đường truyền I2C, thì việc quản lý địa chỉ trở nên khó khăn.

+ Khó khăn trong việc xử lý lỗi: Khi có lỗi xảy ra trong quá trình truyền thông I2C, việc xác định lỗi và xử lý nó có thể khó khăn hơn so với các giao thức khác như SPI hoặc UART.

3.1.3 Kết quả

- Tổng kết lại, I2C là một giao thức truyền thông tiện lợi và được sử dụng rộng rãi trong các ứng dụng nhúng và vi điều khiển Nó mang lại nhiều lợi ích như kết nối đơn giản, định danh địa chỉ dễ dàng và tốc độ truyền thông nhanh hơn so với các giao thức khác Tuy nhiên, I2C cũng có những hạn chế như giới hạn khoảng cách truyền thông, tốc độ truyền thông giới hạn, cần có địa chỉ riêng cho mỗi thiết bị và khó khăn trong việc xử lý lỗi.

3.1.4 Nhận xét

- Vì những lý do này, I2C không phù hợp cho tất cả các ứng dụng, và cần được xem xét kỹ lưỡng trước khi sử dụng.

- Trong phần đánh giá, chúng ta đã thấy rõ được ưu điểm và nhược điểm của giao thức này I2C là một giao thức truyền thông tiện lợi và được sử dụng rộng rãi trong các ứng dụng nhúng và vi điều khiển Tuy nhiên, I2C cũng có những hạn chế như giới hạn khoảng cách truyền thông, tốc độ truyền thông giới hạn, cần có địa chỉ riêng cho mỗi thiết bị và khó khăn trong việc xử lý lỗi.

- Vì vậy, khi thiết kế hệ thống sử dụng I2C, chúng ta cần xem xét kỹ lưỡng các yếu tố để đảm bảo tính hiệu quả và đáp ứng được các yêu cầu của ứng dụng Chúng ta cũng nên xem xét sự lựa chọn của các giao thức truyền thông khác như UART, SPI, CAN để chọn ra giao thức phù hợp nhất với ứng dụng của mình.

- Tuy nhiên, với sự phát triển của công nghệ, I2C vẫn được cải tiến và sử dụng rộng rãi trong các ứng dụng nhúng Và trong tương lai, I2C vẫn sẽ được phát triển và cải tiến để đáp ứng được các yêu cầu của các ứng dụng mới và đáp ứng được các xu hướng công nghệ mới.

Trang 13

3.2 So sánh

3.2.1 So sánh I2C với UART

- I2C và UART là hai giao thức truyền thông được sử dụng rộng rãi trong các ứng dụng nhúng và vi điều khiển.

+ Tốc độ truyền thông: I2C có tốc độ truyền thông chậm hơn UART, với tốc độ truyền thông tối đa chỉ là 3.4 Mbps, trong khi đó UART có thể đạt tới 10 Mbps Tuy nhiên, I2C có thể truyền thông với nhiều thiết bị cùng lúc, trong khi đó UART chỉ có thể truyền thông với một thiết bị duy nhất.

+ Định danh địa chỉ: I2C có địa chỉ riêng cho mỗi thiết bị, trong khi đó UART không có định danh địa chỉ Điều này cho phép I2C có thể truyền thông với nhiều thiết bị cùng lúc, trong khi đó UART chỉ có thể truyền thông với một thiết bị duy nhất.

+ Điều khiển luồng dữ liệu: UART có khả năng điều khiển luồng dữ liệu (flow control) để đảm bảo tính tin cậy và độ chính xác trong truyền thông, trong khi đó I2C không có khả năng này.

+ Độ dài cáp truyền thông: I2C có giới hạn về độ dài cáp truyền thông, khoảng 1-2 mét, trong khi đó UART có thể truyền thông qua cáp dài hơn.

- Tóm lại:

+ I2C và UART đều có những ưu điểm và nhược điểm riêng Khi chọn giao thức truyền thông phù hợp cho ứng dụng, chúng ta nên xem xét kỹ lưỡng các yếu tố như tốc độ truyền thông, số lượng thiết bị, độ dài cáp truyền thông, tính tin cậy, độ chính xác để đảm bảo tính hiệu quả và đáp ứng được các yêu cầu của ứng dụng

+ Tuy nhiên, điểm khác biệt lớn nhất giữa I2C và UART là cách thức truyền dữ liệu I2C là giao thức truyền thông đồng bộ, trong đó tín hiệu đồng hồ được sử dụng để đồng bộ hóa các thiết bị truyền thông trong khi UART là giao thức truyền thông không đồng bộ, nghĩa là không sử dụng đồng hồ để đồng bộ hóa các thiết bị truyền thông Điều này có nghĩa là I2C cung cấp một độ chính xác và đồng bộ hóa cao hơn cho truyền dữ liệu, trong khi UART có thể có thời gian trễ và sai số đồng hồ do không đồng bộ hóa Tuy nhiên, UART có tốc độ truyền thông nhanh hơn và không gặp vấn đề về tốc độ khi kết nối nhiều thiết bị như I2C.

3.2.2 Kết quả

(1 dây truyền & 1 dây nhận dữ (nhiều master & slave) Tốc độ truyền Truyền không đồng bộ (tốc độ tự

đặt, tối đa khoảng 460kbps)

Trang 14

Số thiết bị Nhiều thiết bị Lên đến 127 thiết bị Giao tiếp bằng địa chỉ - Việc lựa chọn giữa I2C và UART phụ thuộc vào các yêu cầu cụ thể của ứng dụng Nếu độ chính xác và đồng bộ hóa là yếu tố quan trọng, thì I2C có thể là lựa chọn tốt hơn Nếu tốc độ truyền thông là yếu tố quan trọng, thì UART có thể là lựa chọn tốt hơn.

- Từ những so sánh trên, ta có thể thấy rằng I2C và UART đều có những ưu điểm và hạn chế riêng I2C có thể truyền thông với nhiều thiết bị cùng lúc và có địa chỉ riêng cho mỗi thiết bị, nhưng tốc độ truyền thông lại chậm hơn và không có khả năng điều khiển luồng dữ liệu Trong khi đó, UART có tốc độ truyền thông nhanh hơn và có khả năng điều khiển luồng dữ liệu, nhưng chỉ có thể truyền thông với một thiết bị duy nhất và có giới hạn về độ dài cáp truyền thông.

- Vì vậy, khi lựa chọn giao thức truyền thông cho ứng dụng nhúng, chúng ta cần phải xem xét kỹ lưỡng các yếu tố như số lượng thiết bị, tốc độ truyền thông, độ dài cáp truyền thông, tính tin cậy, độ chính xác để đảm bảo tính hiệu quả và đáp ứng được các yêu cầu của ứng dụng.

3.2.3 Nhận xét

- Từ so sánh giữa I2C và UART, ta thấy rằng mỗi giao thức đều có những ưu điểm và hạn chế riêng Việc lựa chọn giao thức truyền thông phù hợp với ứng dụng nhúng là rất quan trọng để đảm bảo tính hiệu quả và đáp ứng được các yêu cầu của ứng dụng.

- Với I2C, ưu điểm lớn nhất là có khả năng truyền thông với nhiều thiết bị cùng lúc và có địa chỉ riêng cho từng thiết bị Tuy nhiên, tốc độ truyền thông của I2C chậm hơn so với UART và không có khả năng điều khiển luồng dữ liệu Ngoài ra, độ dài cáp truyền thông của I2C cũng có giới hạn.

- Với UART, tốc độ truyền thông nhanh hơn so với I2C và có khả năng điều khiển luồng dữ liệu, tuy nhiên chỉ có thể truyền thông với một thiết bị duy nhất và độ dài cáp truyền thông cũng có giới hạn.

- Do đó, khi lựa chọn giao thức truyền thông cho ứng dụng nhúng, chúng ta cần phải xem xét kỹ lưỡng các yếu tố như số lượng thiết bị, tốc độ truyền thông, độ dài cáp truyền thông, tính tin cậy, độ chính xác, để đảm bảo tính hiệu quả và đáp ứng được các yêu cầu của ứng dụng.

Ngày đăng: 20/04/2024, 09:55

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

TÀI LIỆU LIÊN QUAN

w