Nghiên Cứu Thiết Kế Và Thi Công Bộ Truyền Nhận Theo Giao Thức I2C

Chuyên khảo phân tích Thiết kế và thi công bộ truyền nhận theo giao thức i2c, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo.

Người đăng

Ẩn danh

Thể loại

Báo Cáo Nghiên Cứu Khoa Học

2021

67
5
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

TÓM TẮT

1. CHƯƠNG 1: TỔNG QUAN

1.1. TÌNH HÌNH NGHIÊN CỨU

1.2. MỤC TIÊU ĐỀ TÀI

1.3. GIỚI HẠN ĐỀ TÀI

1.4. BỐ CỤC ĐỀ TÀI

2. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1. Giới thiệu I2C

2.2. Đặc điểm truyền nhận theo giao thức I2C

2.2.1. Đặc điểm giao tiếp

2.2.2. Định dạng khung dữ liệu

2.2.3. Điều kiện START và STOP

2.2.4. Địa chỉ thiết bị

2.2.5. Chế độ Master-Slave

2.3. Giao thức APB

2.4. RTL DESIGN SỬ DỤNG VERILOG

3. CHƯƠNG 3: MÔ HÌNH HỆ THỐNG

3.1. SƠ ĐỒ CHÂN HỆ THỐNG

3.2. SƠ ĐỒ KHỐI TOÀN HỆ THỐNG

4. CHƯƠNG 4: THIẾT KẾ CHI TIẾT

4.1. MODULE APB INTERFACE

4.2. Mạch logic thực hiện đọc ghi dữ liệu

4.3. Khối điều khiển ngắt

4.4. MODULE CLOCK DIVIDER

4.5. RX FIFO và TX FIFO

4.5.1. Khối TX FIFO

4.5.2. Khối RX FIFO

4.6. Máy trạng thái hữu hạn

4.7. Mạch phát hiện điều kiện Start/Stop

4.8. Mạch định hướng truyền dữ liệu

4.9. Mạch truyền nhận dữ liệu

4.10. Mạch xác định ACK

5. CHƯƠNG 5: KẾT QUẢ VÀ ĐÁNH GIÁ

5.1. TÓM TẮT NỘI DUNG

5.2. MÔ PHỎNG HOẠT ĐỘNG TỪNG KHỐI

5.3. MÔ PHỎNG HOẠT ĐỘNG TOÀN THIẾT KẾ

5.4. ĐÁNH GIÁ HOẠT ĐỘNG THIẾT KẾ

6. CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1. HƯỚNG PHÁT TRIỂN

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Nghiên Cứu Thiết Kế Module Truyền Nhận I2C

Bài viết này trình bày tổng quan về nghiên cứu thiết kế module truyền nhận dữ liệu I2C, một giao thức truyền thông nối tiếp đồng bộ quan trọng trong các hệ thống nhúng. Giao thức I2C được sử dụng rộng rãi để kết nối các IC với nhau hoặc kết nối IC với các thiết bị ngoại vi tốc độ thấp. Ưu điểm của I2C là khả năng kết nối giữa vi điều khiển và nhiều ngoại vi với phần cứng đơn giản. Cùng với sự phát triển của công nghiệp vi mạch số, việc tích hợp nhiều tính năng vào một IC giúp đơn giản hóa phần cứng, tiết kiệm chi phí và thu nhỏ thiết bị điện tử. Một vi mạch số hiện đại không chỉ là một mạch nhỏ mà là một hệ thống trên chip (SOC) bao gồm vi xử lý, các khối chức năng đặc biệt và các khối giao tiếp như SPI, UART, I2C. Báo cáo này trình bày chi tiết thiết kế và hoạt động của bộ giao tiếp theo giao thức I2C, được thực hiện và mô phỏng bằng ngôn ngữ Verilog. Thiết kế này hỗ trợ giao tiếp với vi xử lý để cấu hình và truyền nhận dữ liệu thông qua giao tiếp AMBA APB v2.2.

1.1. Tầm quan trọng của giao thức I2C trong hệ thống nhúng

Trong bối cảnh phát triển của các dòng vi điều khiển, các thiết bị ngoại vi và chuẩn giao tiếp, I2C vẫn giữ vai trò quan trọng. Các chuẩn truyền hiện đại có tốc độ cao và tỉ lệ lỗi thấp, phù hợp với hệ thống số phức tạp. Tuy nhiên, với các hệ thống yêu cầu khắt khe về công suất hoặc không cần tối ưu hiệu suất truyền dữ liệu, các chuẩn truyền cũ như UART, SPI, I2C vẫn được sử dụng rộng rãi. I2C (Inter-Integrated Circuit) là chuẩn truyền đơn giản, tiêu thụ ít năng lượng và có phần cứng phổ biến. Đề tài này tập trung vào thiết kế module I2C để truyền nhận dữ liệu từ các kênh truyền theo giao thức I2C.

1.2. Mục tiêu và phạm vi của nghiên cứu thiết kế module I2C

Mục tiêu của đề tài là thiết kế và thi công bộ giao tiếp truyền nhận theo giao thức I2C. Thiết kế này có thể cấu hình ở nhiều chế độ khác nhau, bao gồm cấu hình Slave hoặc Master, thay đổi địa chỉ giao tiếp (7 bit), hỗ trợ 4 tốc độ truyền khác nhau (100kbps, 400kps, 1Mbps, 3,4Mbps) và giao tiếp với 128 thiết bị. Ngoài ra, thiết kế sử dụng giao thức APB của bộ giao tiếp AMBA để cấu hình, truyền và gửi dữ liệu đến vi xử lý. Đề tài được thực hiện, kiểm tra và hoàn thiện ở mức độ mô phỏng, đảm bảo thiết kế hoạt động đúng theo giao thức. Do giới hạn về thời gian và độ phức tạp của thiết kế, nhóm sinh viên chỉ tổng hợp thiết kế trên board FPGA để kiểm tra tài nguyên sử dụng.

II. Thách Thức và Giải Pháp Thiết Kế Module Truyền Nhận I2C

Việc thiết kế module truyền nhận dữ liệu I2C hiệu quả đòi hỏi giải quyết nhiều thách thức. Một trong số đó là đảm bảo tính tương thích với nhiều loại vi điều khiển và thiết bị ngoại vi khác nhau. Ngoài ra, cần tối ưu hóa tốc độ truyền dữ liệu và giảm thiểu tiêu thụ năng lượng. Các giải pháp thường bao gồm việc sử dụng các kỹ thuật lập trình I2C tiên tiến, lựa chọn phần cứng phù hợp và áp dụng các phương pháp debug I2C hiệu quả. Theo tài liệu nghiên cứu, "I2C là chuẩn truyền nối tiếp đồng bộ được sử dụng rộng rãi trong việc kết nối nhiều IC với nhau, hay kết nối giữa IC và các ngoại vi với tốc độ thấp trong các hệ thống nhúng".

2.1. Các vấn đề thường gặp khi thiết kế mạch giao tiếp I2C

Khi thiết kế mạch giao tiếp I2C, một số vấn đề thường gặp bao gồm: xung đột địa chỉ, lỗi truyền dữ liệu do nhiễu, và giới hạn về tốc độ truyền. Để giải quyết các vấn đề này, cần chú ý đến việc lựa chọn điện trở kéo lên phù hợp, sử dụng các bộ lọc nhiễu và tối ưu hóa tốc độ truyền I2C. Ngoài ra, việc kiểm tra và debug I2C kỹ lưỡng là rất quan trọng để đảm bảo hoạt động ổn định của hệ thống.

2.2. Tối ưu hóa tốc độ truyền và giảm thiểu tiêu thụ năng lượng

Để tối ưu hóa tốc độ truyền I2C, có thể sử dụng các chế độ truyền nhanh hơn như Fast mode hoặc High-speed mode. Tuy nhiên, cần đảm bảo rằng tất cả các thiết bị trên bus đều hỗ trợ các chế độ này. Để giảm thiểu tiêu thụ năng lượng, có thể sử dụng các kỹ thuật như giảm điện áp hoạt động, tắt các module không sử dụng và sử dụng các chế độ ngủ. Việc lựa chọn IC I2C có hiệu suất năng lượng cao cũng là một yếu tố quan trọng.

III. Phương Pháp Thiết Kế Module Truyền Nhận Dữ Liệu I2C Hiệu Quả

Để thiết kế module truyền nhận dữ liệu I2C hiệu quả, cần tuân thủ một quy trình thiết kế chặt chẽ. Quy trình này bao gồm các bước như xác định yêu cầu, lựa chọn phần cứng, lập trình I2C, kiểm tra và debug I2C. Việc sử dụng các công cụ mô phỏng và kiểm tra tự động cũng giúp tăng tốc quá trình thiết kế và giảm thiểu lỗi. Theo tài liệu, "thiết kế cũng hỗ trợ việc giao tiếp với vi xử lý để cấu hình và gửi dữ liệu truyền nhận thông qua giao tiếp AMBA APB v2.2".

3.1. Lựa chọn vi điều khiển và IC I2C phù hợp

Việc lựa chọn vi điều khiểnIC I2C phù hợp là rất quan trọng để đảm bảo hiệu suất và tính ổn định của hệ thống. Cần xem xét các yếu tố như tốc độ xử lý, dung lượng bộ nhớ, số lượng chân I2C, và các tính năng hỗ trợ khác. Các vi điều khiển phổ biến thường được sử dụng bao gồm STM32, Arduino, và Raspberry Pi. Các IC I2C phổ biến bao gồm EEPROM, cảm biến I2C, và các mạch giao tiếp I2C.

3.2. Xây dựng thư viện I2C và lập trình giao tiếp I2C

Để đơn giản hóa quá trình lập trình I2C, nên xây dựng một thư viện I2C chứa các hàm cơ bản như khởi tạo I2C, gửi và nhận dữ liệu, và kiểm tra lỗi. Việc sử dụng các thư viện I2C có sẵn cũng giúp tiết kiệm thời gian và công sức. Khi lập trình I2C, cần chú ý đến việc xử lý các sự kiện như ngắt I2C, DMA I2C, và I2C clock stretching.

3.3. Kiểm tra và debug module I2C

Sau khi thiết kế module I2C, cần kiểm tra và debug I2C kỹ lưỡng để đảm bảo hoạt động đúng theo yêu cầu. Có thể sử dụng các công cụ như oscilloscope, logic analyzer, và các phần mềm debug I2C để phân tích tín hiệu và tìm ra lỗi. Việc kiểm tra các trường hợp biên và các điều kiện lỗi cũng rất quan trọng để đảm bảo tính ổn định của hệ thống.

IV. Ứng Dụng Thực Tế Của Module Truyền Nhận Dữ Liệu I2C

Module truyền nhận dữ liệu I2C có nhiều ứng dụng I2C thực tế trong các lĩnh vực khác nhau. Một số ứng dụng I2C phổ biến bao gồm: giao tiếp với cảm biến I2C, điều khiển EEPROM, và giao tiếp giữa các IC trong hệ thống nhúng. Việc hiểu rõ các ứng dụng I2C này giúp thiết kế module I2C phù hợp với yêu cầu cụ thể.

4.1. Giao tiếp với cảm biến I2C

I2C là một giao thức phổ biến để giao tiếp với cảm biến I2C như cảm biến nhiệt độ, áp suất, độ ẩm, và ánh sáng. Việc sử dụng I2C giúp đơn giản hóa kết nối và giảm số lượng chân cần thiết. Khi giao tiếp với cảm biến I2C, cần chú ý đến việc đọc dữ liệu từ các thanh ghi của cảm biến và xử lý các lỗi truyền thông.

4.2. Điều khiển EEPROM thông qua giao thức I2C

EEPROM thường được sử dụng để lưu trữ dữ liệu cấu hình và dữ liệu người dùng trong các hệ thống nhúng. I2C là một giao thức phổ biến để đọc và ghi dữ liệu vào EEPROM. Khi điều khiển EEPROM thông qua I2C, cần chú ý đến việc ghi dữ liệu vào các địa chỉ khác nhau và xử lý các lỗi ghi.

4.3. Giao tiếp giữa các IC trong hệ thống nhúng

I2C là một giao thức hiệu quả để giao tiếp giữa các IC trong hệ thống nhúng. Việc sử dụng I2C giúp giảm số lượng chân cần thiết và đơn giản hóa kết nối. Khi giao tiếp giữa các IC, cần chú ý đến việc đồng bộ hóa dữ liệu và xử lý các lỗi truyền thông.

V. Đánh Giá Ưu Nhược Điểm Của Giao Thức Truyền Thông I2C

Giao thức I2C có nhiều ưu điểm I2C như đơn giản, dễ sử dụng, và tiêu thụ ít năng lượng. Tuy nhiên, I2C cũng có một số nhược điểm I2C như tốc độ truyền thấp và giới hạn về số lượng thiết bị trên bus. Việc so sánh I2C với các giao thức khác như SPIUART giúp lựa chọn giao thức phù hợp với yêu cầu cụ thể.

5.1. Ưu điểm của giao thức I2C

Các ưu điểm I2C bao gồm: chỉ cần 2 dây (SDA và SCL) để giao tiếp, hỗ trợ nhiều thiết bị trên cùng một bus, và tiêu thụ ít năng lượng. I2C cũng dễ sử dụng và có nhiều thư viện I2C hỗ trợ.

5.2. Nhược điểm của giao thức I2C

Các nhược điểm I2C bao gồm: tốc độ truyền thấp hơn so với SPI, giới hạn về số lượng thiết bị trên bus, và yêu cầu điện trở kéo lên.

5.3. So sánh I2C với SPI và UART

So sánh I2C SPI UART: I2C phù hợp với các ứng dụng tốc độ thấp và yêu cầu nhiều thiết bị trên cùng một bus. SPI phù hợp với các ứng dụng tốc độ cao và yêu cầu ít thiết bị. UART phù hợp với các ứng dụng giao tiếp nối tiếp đơn giản.

VI. Kết Luận và Hướng Phát Triển Module Truyền Nhận I2C

Nghiên cứu này đã trình bày chi tiết về thiết kế module truyền nhận dữ liệu I2C, từ tổng quan về giao thức I2C đến các phương pháp thiết kế module, ứng dụng I2C, và đánh giá ưu nhược điểm I2C. Hướng phát triển trong tương lai có thể tập trung vào việc tăng tốc độ truyền, giảm tiêu thụ năng lượng, và tích hợp các tính năng bảo mật.

6.1. Tóm tắt kết quả nghiên cứu

Nghiên cứu đã thành công trong việc thiết kế module I2C có thể cấu hình ở nhiều chế độ khác nhau, hỗ trợ nhiều tốc độ truyền, và giao tiếp với vi xử lý thông qua giao thức APB.

6.2. Hướng phát triển trong tương lai

Hướng phát triển trong tương lai có thể tập trung vào việc tăng tốc độ truyền, giảm tiêu thụ năng lượng, tích hợp các tính năng bảo mật, và hỗ trợ các chuẩn I2C mới như I2C multi-masterI2C clock stretching.

06/06/2025
Thiết kế và thi công bộ truyền nhận theo giao thức i2c

Trích đoạn nội dung tài liệu

Chương 1: Tổng quan: Chương này trình bày lý do chọn đề tài, các mục tiêu và giới hạn của đề tài. Chương 2: Cơ sở lý thuyết: Giới thiệu chuẩn truyền I2C, Bus APB và RTL Design sử dụng Verilog. Chương 3: Mô hình hệ thống: Trình bày sơ đồ khối của hệ thống, các chức năng của từng 1 khối Chương 4: Thiết kế chi tiết: Phân tích, thiết kế, thi công từng khối của hệ thống. Chương 5: Kết quả và đánh giá: Bao gồm việc thực hiện mô phỏng mạch và kiểm tra hoạt động thực tế trên kit FPGA.

Chương 6: Kết luận và hướng phát triển. 2 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu I2C, viết tắt của cụm từ “Inter – Integrated Circuit”, là một chuẩn 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, chuẩn này chỉ được dùng trong các linh kiện điện tử của Philips. Sau đó, do tính ưu việt và đơn giản của nó, I2C đã được chuẩn hóa và sử dụng rộng rãi trong các module truyền thông nối tiếp của vi mạch tích hợp ngày nay [6-7].

I2C đã trở thành chuẩn công nghiệp được ứng dụng trong các giao tiếp công nghiệp, ngoài Philips còn có một vài tên tuổi cũng sử dụng chuẩn công nghiệp trong các sản phầm của mình như: Texas Instrument (TI), Analog Device, Maxim-Dallas, National Semiconductor, …Đồng thời bus I2C cũng được sử dụng làm bus giao tiếp ngoại vi cho nhiều loại IC khác nhau như Vi điều khiển 8051, ARM, AVR, EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự (DAC, chip nhớ như RAM tĩnh (Static RAM), các IC điều khiển LED, LCD, … 2.2 Đặc điểm truyền nhận theo giao thức I2C: 2.1 Đặc điểm giao tiếp 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. Mỗi dây SDA và SCL đều được nối với dương nguồn qua điện trở kéo lên (pull-up- register) do các chân giao tiếp I2C của các thiết bị ngoại vi thường ở dạng open-drain hay open-collector. Giá trị của điện trở này thường trong khoảng 1k𝛺 đến 4.7k𝛺 tùy thuộc vào thiết bị [6].1: Sơ đồ giao tiếp các thiết bị theo chuẩn I2C [7].

Trong quá trình giao tiếp, mỗi thiết bị kết nối trên bus I2C đều được đánh một giá trị địa chỉ riêng biệt (do nhà sản xuất quy định), điều này giúp việc truyền nhận không bị nhầm lẫn mặc dù có nhiều thiết bị cũng kết nối trên một bus. 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 3 thuộc vào việc thiết bị đó là chủ (Master) hay tớ (Slave). Trên một bus I2C thì quyền điều khiển thuộc về Master.

Master nắm vai trò tạo xung đồng hồ cho toàn hệ thống, điều khiển quá trình khởi tạo cũng như kết thức giao tiếp và quyết định quá trình đọc hoặc ghi giữa các thiết bị. 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à 100Kbps – Chế độ chuẩn (Standard mode), tốc độ truyền có thể lên tới 400Kbps – Chế độ nhanh (Fast mode), 1Mbps và cao nhất là 3,4Mbps – Chế độ cao tốc (High‐speed mode). Quá trình truyền nhận giữa một Master và một Slave trên bus I2C được tiến hành như sau: +Thiết bị Master xác định địa chỉ của Slave cần giao tiếp. +Thiết bị chủ gửi một xung START, liền sau đó gửi địa chỉ của thiết bị tớ đó cùng với yêu cầu truyền hay nhận dữ liệu tương ứng.

+Thiết bị tớ nhận thấy địa chỉ trùng với địa chỉ của mình thì xác nhận bằng 1 xung ACK. +Quá trình truyền nhận dữ liệu bắt đầu, bên nhận dữ liệu sẽ kết thúc mỗi byte nhận bằng việc trả ACK. +Thiết bị chủ gửi một xung STOP, kết thúc quá trình truyền nhận.2 Định dạng khung dữ liệu Hình 2.2: Định dạng khung dữ liệu theo chuẩn I2C [8]. Dữ liệu trên bus I2C được truyền theo từng bit một, tại mỗi sườn dương của clock trên dây ACK.

Dữ liệu thay đổi trên SDA theo sườn xuống của clock. Mỗi byte dữ liệu có độ dài 8-bit, bit MSB được truyền đầu tiên trong byte, theo sau là các bit có trọng số thấp dần. Sau 8-bit dữ liệu, thiết bị nhận nếu đã nhận đủ 8-bit sẽ kéo SDA xuống mức thấp ở SCL thứ 9 tạo một xung ACK. Thiết bị truyền sau khi nhận được xung ACK sẽ tiếp tục truyền hoặc kết thúc.

Trường hợp không nhận đủ 8-bit dữ liệu, thiết 4 bị nhận sẽ gửi một xung NOT-ACK (SDA ở mức cao tại SCL thứ 9), từ đó Master sẽ gửi tín hiệu STOP hay RESTART.3 Điều kiện START và STOP Khi muốn thiết lập hay kết thúc một quá trình truyền nhận thì Master đều phải gửi tín hiệu START hay STOP để báo cho Slave biết. Ban đầu, khi chưa giao tiếp, cả SDA và SCL đều ở mức cao, báo cho thiết bị biết đường truyền đang ở chế độ rỗi. Đ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.3: Điều kiện START Hình 2.4: Điều kiện STOP Cả hai điều kiện START và STOP đều được tạo ra bởi Master.

Sau tín hiệu START, bus I2C coi như đang trong trạng 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 Master. Sau khi có một điều kiện START, trong quá trình giao tiếp, khi có một tín hiệu RESTART 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.4 Địa chỉ thiết bị Mỗi thiết bị tham gia vào bus I2C đều có một địa chỉ duy nhất do nhà sản xuất qui định để tránh gây nhầm lẫn trên đường truyền. Độ dài byte địa chỉ là 7-bit, do đó, sẽ có tối đa 128 thiết bị trên một bus I2C.

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. 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ừ thiết bị tớ gửi đến thiết bị chủ [7].5 Chế độ Master-Slave 5 Việc truyền nhận dữ liệu giữa Master và Slave có thể thực hiện theo một trong hai hướng truyền trên đường dữ liệu SDA: Master truyền-Slave nhận hoặc Slave truyền-Master nhận.

Quá trình được quyết định theo bit 8 (bit R/W) trong byte truyền đầu tiên từ phía Master. Trong đó, Master luôn là thiết bị tạo xung đồng hồ SCL trong suốt quá trình truyền. - Quá trình master truyền dữ liệu đến slave: +Master tạo tín hiệu START, bắt đầu quá trình truyền dữ liệu. +Master gửi byte đầu tiên gồm 7 bit địa chỉ của Slave cần giao tiếp, và bit thứ 8 R/W = “0” và đợi xung phản hồi ACK từ Slave.

+Nhận được ACK báo đúng địa chỉ từ Slave, Master bắt đầu truyền dữ liệu theo từng bit một. Kết thúc mỗi byte 8 bit thì chờ xung ACK phản hồi. Số lượng byte truyền không giới hạn. +Muốn kết thúc quá trình truyền thì Master gửi một bit STOP.5: Định dạng dữ liệu trong chế độ Master truyền [6].

- Quá trình Master nhận dữ liệu từ Slave: +Master tạo tín hiệu START, bắt đầu quá trình truyền dữ liệu. +Master gửi byte đầu tiên gồm 7 bit địa chỉ của Slave cần giao tiếp, và bit thứ 8 R/W = “1” và đợi xung phản hồi ACK từ Slave. +Slave bắt đầu truyền dữ liệu theo từng bit một, sau mỗi byte 8 bit thì chờ xung ACK phản hồi từ Master. Số lượng byte truyền không giới hạn.

+Muốn kết thúc quá trình truyền thì Master gửi một bit STOP.6: Định dạng dữ liệu trong chế độ Master nhận [6].1 Giới thiệu Giao thức APB (Advanced Peripheral Bus) là một trong những giao thức của bộ giao tiếp AMBA (Advanced Microcontroller Bus Architecture). Bộ giao tiếp AMBA là một kiến trúc bus hệ thống được xây dựng, phát triển và ứng dụng rộng rãi trong các vi điều khiển ARM. Trong đó, APB được xác định là một giao thức chi phí thấp để tối ưu hóa việc tiêu hao năng lượng và giảm mức độ phức tạp của giao tiếp. Giao thức APB phù hợp để kết nối với các ngoại vi công suất thấp như UART, I2C, SPI,….

Ngoài ra, AMBA còn bao gồm nhiều giao tiếp khác như AXI, ASB, AHB [9].7: Minh họa về kế nối của APB bus.8: Minh họa hệ thống SOC sử dụng APB bus và module I2C. Các kiến trúc bus tốc độ cao bao gồm ASB (Advanced System Bus) và AHB (Advanced High-performance Bus), một hệ thống chỉ sử dụng một trong hai. APB Bridge có vai trò tương tác với các bus tốc độ cao trên. Các module ngoại vi để giao tiếp được với bus phải có mạch giao tiếp, mạch này thường còn được gọi là APB Slave, mạch điều khiển bus từ phía APB Bridge gọi là APB Master.

Giao thức APB thực hiện thay đổi dữ liệu tại cạnh lên của xung đồng hồ, điều này nhằm đơn giản hóa việc tích hợp các ngoại vi APB vào bất kì thiết kế nào. Mỗi quá trình truyền nhận theo giao thức APB cần ít nhất 2 chu kỳ của xung đồng hồ. Bus APB có các tín hiệu như sau [2]: -PCLK: tín hiệu clock đồng bộ hoạt động theo cạnh lên. -PADDR: địa chỉ thanh ghi được truy xuất.

-PWRITE: tín hiệu cho phép ghi. -PSEL: tín hiệu cho phép. -PENABLE: tín hiệu báo pha ENABLE của một truy xuất đọc hoặc ghi. -PWDATA: dữ liệu ghi.

-PRDATA: dữ liệu đọc.2 Những đặc trưng cơ bản của AMBA 2 APB Các cập nhật dữ liệu của APB tại mọi phiên bản đều được thực thi tại sườn lên của xung clock, điều này giúp việc đơn giản hóa việc truyền nhận, đồng thời cũng giúp cho APB được dễ dàng tích hợp vào các ngoại vi. Tại phiên bản mới nhất của APB (AMBA 3 APB), việc thực hiện một giao tiếp có thể được thực hiện trong nhiều chu kỳ của xung clock, tuy nhiên, việc truyền nhận luôn phải đảm bảo được thực hiện ít nhất trong hai chu kỳ xung clock [10]. Trong đề tài, AMBA 2 APB được sử dụng để truyền nhận dữ liệu và cấu hình cho module I2C từ vi điều khiển. 8 Những đặc trưng cơ bản nhất của AMBA APB: Hình 2.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu có tiêu đề Nghiên Cứu Thiết Kế Module Truyền Nhận Dữ Liệu I2C cung cấp cái nhìn sâu sắc về thiết kế và ứng dụng của giao thức I2C trong việc truyền nhận dữ liệu. Bài viết nêu bật các nguyên lý hoạt động của I2C, cách thức triển khai module truyền nhận dữ liệu, cũng như những lợi ích mà nó mang lại cho các hệ thống nhúng và Internet of Things (IoT). Đặc biệt, tài liệu này giúp người đọc hiểu rõ hơn về cách tối ưu hóa việc truyền dữ liệu giữa các thiết bị, từ đó nâng cao hiệu suất và độ tin cậy của hệ thống.

Để mở rộng kiến thức của bạn về các giao thức truyền nhận dữ liệu trong mạng IoT, bạn có thể tham khảo tài liệu Nghiên cứu giao thức mqtt trong mạng lưới internet kết nối vạn vật và xây dựng ứng dụng thực nghiệm, nơi bạn sẽ tìm thấy thông tin về giao thức MQTT và ứng dụng thực tiễn của nó. Ngoài ra, tài liệu Giao thứ thiết lập phiên sip trong mạng thế hệ sau ngn cũng sẽ cung cấp cho bạn cái nhìn về giao thức SIP trong các mạng thế hệ mới, giúp bạn có cái nhìn tổng quát hơn về các công nghệ truyền thông hiện đại. Những tài liệu này sẽ là nguồn tài nguyên quý giá để bạn khám phá sâu hơn về lĩnh vực này.