1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO CÁO Thiết kế ngoại vi và kỹ thuật ghép nối ĐỀ TÀI: TÌM HIỂU I2CSPI

19 8 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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 733,07 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA KĨ THUẬT ĐIỆN TỬ 1 =====o0o===== BÁO CÁO ĐỀ TÀI TÌM HIỂU I2CSPI Giảng viên hướng dẫn Trần Thị Thuý Hà Môn học Thiết kế ngoại vi và kỹ thuật ghép nối Nhóm môn học 02 Nhóm bài tập lớn 02 Sinh viên thực hiện Đào Văn Nghĩa B18DCDT174 Chu Minh Đạo B18DCDT041 Trần Ngọc Khiêm B18DCDT115 HÀ NỘI, 02 2022 ⁃⁃⁃⁃‹‹‹﴾֍﴿›››⁃⁃⁃⁃ NHÓM 2 2 2 I2CSPI Phụ lục Phần I I2C 3 1 I2C là gì ? 3 2 Bus vật lý I2C 3 3 Giao thức truyền dữ liệu 4 4 Các chế độ hoạt động của I²C 6.

Trang 1

KHOA KĨ THUẬT ĐIỆN TỬ 1

=====o0o=====

BÁO CÁO

ĐỀ TÀI:

TÌM HIỂU I2C/SPI

Giảng viên hướng dẫn : Trần Thị Thuý Hà

Môn học : Thiết kế ngoại vi và kỹ thuật ghép nối Nhóm môn học : 02

Nhóm bài tập lớn : 02

Sinh viên thực hiện Đào Văn Nghĩa B18DCDT174

Chu Minh Đạo B18DCDT041 Trần Ngọc Khiêm B18DCDT115

HÀ NỘI, 02 / 2022 -⁃⁃⁃⁃‹‹‹﴾֍﴿›››⁃⁃⁃⁃ -

Trang 2

NHÓM 2 2

Phụ lục

Phần I: I2C 3

1 I2C là gì ? 3

2 Bus vật lý I2C 3

3 Giao thức truyền dữ liệu 4

4 Các chế độ hoạt động của I²C 6

Phần II: SPI 9

1. SPI là gì ? 9

2. BUS vật lý SPI 10

3. Giao thức truyền 11

4. Chế độ hoạt động SPI 14

5. Cấu hình SPI 15

Phần III: So sánh I2C và SPI 18

Trang 3

NHÓM 2 3

Phần I: I2C

1 I2C là gì ?

I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit” Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu

I2C là một giao thức truyền thông nối tiếp, vì vậy dữ liệu được truyền từng bit dọc theo một đường duy nhất (đường SDA)

Giống như SPI, I2C là đồng bộ, do đó đầ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

2 Bus vật lý I2C

✓ Giao tiếp I2C chỉ sử dụng hai dây để truyền dữ liệu giữa các thiết bị:

• SDA (Serial Data) - đườ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

✓ Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL

Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng đường SCL và SDA như sau:

Trang 4

NHÓM 2 4

Cả hai đường bus I2C (SDA, SCL) đều hoạt động như các bộ lái cực máng hở

(open drain) Nó có nghĩa là bất kỳ thiết bị / IC trên mạng I2C có thể lái SDA và

SCL xuống mức thấp, nhưng không thể lái chúng lên mức cao Vì vậy, một điện

trở kéo lên (khoảng 1 kΩ đến 4,7 kΩ) được sử dụng cho mỗi đường bus, để giữ

cho chúng ở mức cao (ở điện áp dương) theo mặc định

Lý do sử dụng một hệ thống cực máng hở (open drain) là để không xảy ra hiện

tượng ngắn mạch, điều này có thể xảy ra khi một thiết bị cố gắng kéo đường dây

lên cao và một số thiết bị khác cố gắng kéo đường dây xuống thấp

3 Giao thức truyền dữ liệu

Giao thức sau đây (tập hợp các quy tắc) được theo sau bởi thiết bị Master và các

thiết bị Slave để truyền dữ liệu giữa chúng

Dữ liệu được truyền giữa thiết bị Master và các thiết bị Slave thông qua một

đường dữ liệu SDA duy nhất, thông qua các chuỗi có cấu trúc gồm các số 0 và 1

(bit) Mỗi chuỗi số 0 và 1 được gọi là giao dịch (transaction) và dữ liệu trong

mỗi giao dịch có cấu trúc như sau:

Điều kiện bắt đầu (Start Condition)

Trang 5

NHÓM 2 5

Bất cứ khi nào một thiết bị chủ / IC quyết định bắt đầu 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ừ cao xuống thấp

Khi điều kiện bắt đầu được gửi bởi 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ỉ

Khối địa chỉ

Nó bao gồm 7 bit và được lấp đầy với địa chỉ của thiết bị Slave đến / từ đó thiết

bị Master cần gửi / nhận dữ liệu Tất cả các thiết bị Slave trên bus I2C so sánh các bit địa chỉ này với địa chỉ của chúng

Bit Read / Write

Bit này xác định hướng truyền dữ liệu Nếu thiết bị Master / IC cần gửi dữ liệu đến thiết bị Slave, bit này được thiết lập là ‘0’ Nếu IC Master cần nhận dữ liệu

từ thiết bị Slave, bit này được thiết lập là ‘1’

Bit ACK / NACK

ACK / NACK là viết tắt của Acknowledged/Not-Acknowledged Nếu địa chỉ vật

lý của bất kỳ thiết bị Slave nào trùng với địa chỉ được thiết bị Master phát, giá trị của bit này được set là ‘0’ bởi thiết bị Slave Ngược lại, nó vẫn ở mức logic

‘1’ (mặc định)

Khối dữ liệu

Trang 6

NHÓM 2 6

Nó bao gồm 8 bit và chúng đượ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 Khối này được theo sau bởi một bit ACK / NACK và được set thành ‘0’ bởi bên nhận nếu nó nhận thành công dữ liệu Ngược lại, nó vẫn ở mức logic ‘1’

Sự kết hợp của khối dữ liệu theo sau bởi bit ACK / NACK được lặp lại cho đến quá trình truyền dữ liệu được hoàn tất

Điều kiện kết thúc (Stop condition)

Sau khi các khung dữ liệu cần thiết được truyền qua đường SDA, thiết bị Master chuyển đường SDA từ mức điện áp thấp sang mức điện áp cao trước khi đường SCL chuyển từ cao xuống thấp

4 Các chế độ hoạt động của I²C

Dựa vào tốc độ ta chia làm 2 loại

• Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s

• Chế độ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s Nếu chia theo quan hệ chủ tớ:

• Một Master một Slave

• Một Master nhiều Slave

• Nhiều Master nhiều Slave

Trang 7

NHÓM 2 7

Một master với nhiều slave

Vì I2C sử dụng định địa chỉ nên nhiều slave có thể được điều khiển từ một

master duy nhất Với địa chỉ 7 bit sẽ có 128 (2 mũ 7) địa chỉ duy nhất Việc sử dụng địa chỉ 10 bit không phổ biến, nhưng nó cung cấp 1.024 (2 mũ 10) địa chỉ duy nhất Để kết nối nhiều slave đến một master duy nhất, bạn có thể đấu dây như thế này, với điện trở kéo lên 4,7K Ohm kết nối đường SDA và SCL với Vcc:

Nhiều master với nhiều slave

Nhiều master có thể được kết nối với một slave hoặc nhiều slave Sự cố với nhiều master trong cùng một hệ thống xảy ra khi hai master cố gắng gửi hoặc nhận dữ liệu cùng một lúc qua đường SDA Để giải quyết vấn đề này, mỗi

master cần phải phát hiện xem đường SDA thấp hay cao trước khi truyền tin nhắn Nếu đường SDA thấp, điều này có nghĩa là một master khác có quyền điều khiển bus và master đó phải đợi để gửi tin nhắn Nếu đường SDA cao thì có thể truyền tin nhắn an toàn Để kết nối nhiều master với nhiều slave, hãy sử

Trang 8

NHÓM 2 8

dụng sơ đồ sau, với các điện trở kéo lên 4,7K Ohm kết nối các đường SDA và SCL với Vcc:

Trang 9

NHÓM 2 9

Phần II: SPI

1 SPI là gì ?

Giao tiếp ngoại vi nối tiếp SPI (Serial Peripheral Interface) là một loại giao thức kiểu Master – Slave cung cấp một giao diện chi phí đơn giản và chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi của nó

Bus giao tiếp SPI thường được sử dụng để giao tiếp vi xử lý hoặc vi điều khiển với bộ nhớ như EEPROM, RTC (Đồng hồ thời gian thực), ADC (Analog to Digital Converter – Bộ chuyển đổi tương tự sang số), DAC (Digital-to-Analog Converter – Bộ chuyển đổi số sang tương tự), thiết bị hiển thị như màn hình LCD, IC âm thanh, các loại cảm biến như nhiệt độ và áp suất, thẻ nhớ như

MMC hoặc thẻ SD hoặc thậm chí các bộ vi điều khiển khác

Đối với giao tiếp khoảng cách ngắn, giao tiếp nối tiếp đồng bộ sẽ là lựa chọn tốt hơn và trong đó giao tiếp ngoại vi nối tiếp hoặc SPI nói riêng là lựa chọn tốt nhất Khi chúng ta nói truyền thông khoảng cách ngắn, nó thường có nghĩa là giao tiếp với một thiết bị hoặc giữa các thiết bị trên cùng một board mạch in (PCB)

Trang 10

NHÓM 2 10

2 BUS vật lý SPI

MOSI (đầu ra master / đầu vào slave) - đường truyền cho master gửi dữ liệu đến slave

MISO (đầu vào master / đầu ra slave) - đường cho slave gửi dữ liệu đến master

SCLK (clock) - đường cho tín hiệu xung nhịp

SS / CS (Slave Select / Chip Select) - đường cho master chọn slave nào để gởi tín hiệu

SPI là một kiểu truyền thông nối tiếp kiểu đồng bộ tức là nó sử dụng tín hiệu đồng hồ chuyên dụng để đồng bộ hóa bộ phát và bộ thu hoặc Master và Slave

Bộ phát và bộ thu được kết nối với dữ liệu riêng biệt và tín hiệu đồng hồ sẽ giúp

bộ thu khi tìm kiếm dữ liệu trên bus

Trang 11

NHÓM 2 11

Tín hiệu đồng hồ phải được cung cấp bởi Master tới Slave (hoặc tất cả các Slave trong trường hợp thiết lập nhiều Slave) Có hai loại cơ chế kích hoạt trên tín hiệu đồng hồ được sử dụng để báo cho bên nhận biết về dữ liệu: Kích hoạt cạnh và kích hoạt mức

Kích hoạt thường được sử dụng nhất là kích hoạt cạnh và có hai loại: cạnh lên (chuyển đổi từ thấp lên cao trên đồng hồ) và cạnh xuống (chuyển đổi từ cao xuống thấp) Tùy thuộc vào cách bộ thu được cấu hình, lên trên phát hiện các cạnh, bộ thu sẽ tìm kiếm dữ liệu trên bus dữ liệu từ bit tiếp theo

Bởi vì cả tín hiệu đồng hồ và dữ liệu được gửi bởi Master (hoặc bộ phát), chúng

ta không cần phải lo lắng về tốc độ truyền dữ liệu

Điều làm cho SPI trở nên phổ biến trong các giao thức truyền thông đồng bộ nối tiếp khác (hoặc bất kỳ giao tiếp nối tiếp nào) là nó cung cấp tốc độ truyền dữ liệu bảo mật cao với phần cứng khá đơn giản giống như thanh ghi dịch với chi phí tương đối thấp

3 Giao thức truyền

SPI hoặc giao tiếp ngoại vi nối tiếp được Motorola phát triển vào những năm

1980 như một giao diện tiêu chuẩn, chi phí thấp và đáng tin cậy giữa vi điều khiển (Vi điều khiển của Motorola lúc đầu) và các IC ngoại vi của nó

Nhờ giao diện đơn giản, linh hoạt và dễ sử dụng, SPI đã trở thành một tiêu

chuẩn và các nhà sản xuất bán dẫn khác bắt đầu sử dụng giao thức này trong các chip của mình

Trang 12

NHÓM 2 12

Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave trong một giao diện đa điểm Trong loại giao diện này, một thiết bị được coi là Master của bus (thường là một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều khiển khác) đều được coi là Slave

Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị Slave

Bus SPI bao gồm 4 tín hiệu hoặc chân Chúng là

Master – Out / Slave – In (MOSI hay SI): cổng ra của bên Master,

cổng vào của bên Slave, dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave

Master – In / Slave – Out (MISO hay SO): cổng vào của bên Master,

cổng ra của bên Slave, dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master

Serial Clock (SCK hay SCLK): xung giữ nhịp cho giao tiếp SPI

Chip Select (CS) hay Slave Select (SS): chọn chip

Lưu ý: Các nhà sản xuất khác nhau sử dụng thuật ngữ khác nhau cho bus SPI

Tham khảo datasheet để biết thông tin chính xác

Bởi vì bus SPI được thực hiện bằng cách sử dụng 4 tín hiệu hay 4 dây nên đôi khi nó được gọi là chuẩn giao tiếp 4 dây (four-wire) Đầu tiên chúng ta hãy xem một giao diện đơn giản giữa một Master và một Slave được kết nối bằng giao thức SPI và sau đó chúng ta sẽ tìm hiểu về 4 dây này

Hình ảnh sau mô tả một thiết bị Master (Bộ xử lý) được kết nối với thiết bị Slave (Ngoại vi) sử dụng bus SPI

Master – Out / Slave – In hay MOSI, như tên cho thấy, là dữ liệu được tạo ra bởi Master

và nhận bởi Slave Do đó, các chân MOSI trên cả Master và Slave được kết nối với nhau

Trang 13

NHÓM 2 13

Master – In / Slave – Out hay MISO là dữ liệu được tạo ra bởi Slave và phải

được truyền tới Master.Các chân MISO trên cả Master và Slave được kết nối với nhau Mặc dù tín hiệu trong MISO được tạo ra bởi Slave, đường tín hiệu này được điều khiển bởi Master

Master tạo tín hiệu đồng hồ SCLK và được cung cấp cho đầu vào đồng hồ của

Slave Xung này có chức năng giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng bộ nên cần 1 đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặc đi Sự tồn tại của xung SCK giúp quá trình tuyền ít bị lỗi và vì thế tốc

độ truyền của SPI có thể đạt rất cao

Chip Select (CS) hoặc Slave Select (SS) được sử dụng để chọn một Slave cụ thể

bởi Master Nếu Master kéo đường SS của một Slave nào đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó

Vì đồng hồ được tạo ra bởi Master, luồng dữ liệu được điều khiển bởi Master Với mỗi chu kỳ đồng hồ, một bit dữ liệu được truyền từ Master đến Slave và một bit dữ liệu được truyền từ Slave đến Master

Quá trình này xảy ra đồng thời và sau 8 chu kỳ đồng hồ, một byte dữ liệu được truyền theo cả hai hướng và do đó, SPI là một giao tiếp song công toàn phần (full – duplex)

Nếu dữ liệu phải được truyền bởi chỉ một thiết bị, thì thiết bị kia phải gửi một cái gì đó (dữ liệu giả) và nó phụ thuộc vào thiết bị cho dù dữ liệu được truyền là

dữ liệu thực tế hay không

Điều này có nghĩa là đối với mỗi bit được truyền bởi một thiết bị, thiết bị kia phải gửi dữ liệu một bit, tức là Master truyền dữ liệu đồng thời trên MOSI và nhận dữ liệu từ Slave trên đường MISO

Nếu Slave muốn truyền dữ liệu, Master phải tạo ra tín hiệu đồng hồ cho phù hợp bằng cách biết khi nào Slave muốn gửi dữ liệu trước Nếu một Master được kết nối với nhiều Slave thì sơ đồ kết nối như hình ảnh sau đây

Trang 14

NHÓM 2 14

Mặc dù nhiều Slave được kết nối với Master trong bus SPI, ở một thời điểm bất

kỳ thì chỉ có một Slave hoạt động Để chọn Slave, Master sẽ kéo đường SS (Slave Select) hoặc CS (Chip Select) của Slave tương ứng xuống mức thấp

Do đó, phải có một chân CS riêng trên Master tương ứng với từng thiết bị Slave Chúng ta cần phải kéo xuống đường SS hoặc CS xuống thấp để chọn Slave bởi

vì đường này tích cực mức thấp

4 Chế độ hoạt động SPI

Chúng ta đã thấy rằng công việc của thiết bị Master là tạo ra tín hiệu đồng hồ và phân phối nó tới Slave để đồng bộ dữ liệu giữa Master và Slave Công việc của Master không chỉ dừng lại ở việc tạo tín hiệu đồng hồ ở tần số cụ thể

Trong thực tế, Master và Slave phải đồng ý về các giao thức đồng bộ hóa nhất định Đối với điều này, hai đặc điểm của xung đồng hồ là cực tính đồng hồ (Clock Polarity – CPOL hoặc CKP) và pha đồng hồ (Clock Phase – CPHA) được đưa vào để xem xét

Clock Polarity (CPOL hoặc CKP) xác định trạng thái của đồng hồ Khi CPOL ở mức thấp, xung đồng hồ được tạo bởi Master tức là SCK sẽ ở mức thấp khi nhàn rỗi (idle) và chuyển sang mức cao trong trạng thái hoạt động (trong khi truyền

dữ liệu) Tương tự, khi CPOL ở mức cao, SCK ở mức cao khi nhàn rỗi và

chuyển sang mức thấp trong trạng thái hoạt động

Phase Clock (CPHA) xác định quá trình chuyển đổi trạng thái của xung đồng hồ tức là lên (thấp lên cao) hoặc xuống (cao xuống thấp), tại đó dữ liệu được truyền

đi Khi CPHA bằng 0, dữ liệu được truyền ở cạnh lên của xung đồng hồ Dữ liệu được truyền ở cạnh xuống khi CPHA là 1

Trang 15

NHÓM 2 15

Tùy thuộc vào các giá trị của Clock Polarity (CPOL) và Clock Phase (CPHA),

có 4 chế độ hoạt động của SPI

Mode 0:

Mode 0 xảy ra khi Clock Polarity và Clock Phase là 0 (CPOL = 0 và CPHA =

0) Trong Mode 0, truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ

Mode 1:

Mode 1 xảy ra khi Clock Polarity là 0 và Clock Phase là 1 (CPOL = 0 và CPHA

= 1) Trong mode 1, việc truyền dữ liệu xảy ra trong khi cạnh xuống của xung

đồng hồ

Mode 2:

Mode 2 xảy ra khi Clock Polarity là 1 và Clock Phase là 0 (CPOL = 1 và CPHA

= 0) Trong mode 2, truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ

Mode 3:

Mode 3 xảy ra khi Clock Polarity là 1 và Clock Phase là 1 (CPOL = 1 và CPHA

= 1) Trong mode 3, truyền dữ liệu xảy ra trong khi cạnh lên của xung đồng hồ

5 Cấu hình SPI

Có hai loại cấu hình trong đó các thiết bị SPI có thể được kết nối trong một bus

SPI Đó là:

Trang 16

NHÓM 2 16

Cấu hình Master và các Slave độc lập (Independent Slave

Configuration) và

Cấu hình Daisy Chain (Daisy Chain Configuration)

Trong cấu hình Master và các Slave độc lập, Master đã dành riêng các đường Slave Select cho tất cả các Slave và mỗi Slave có thể được chọn riêng lẻ Tất cả tín hiệu đồng hồ của các Slave được kết nối chung với SCK của Master

Tương tự, tất cả các chân MOSI của tất cả các SLave được kết nối với chân MOSI của Master và tất cả các chân MISO của tất cả các Slave được kết nối với chân MISO của Master

Trong cấu hình Daisy Chain, chỉ có một đường Slave Select được kết nối với tất

cả các Slave MOSI của Master được kết nối với MOSI của Slave 1 MISO của Slave 1 được kết nối với MOSI của Slave 2 và v.v MISO của Slave cuối cùng được kết nối với MISO của Master

Giả sử Master truyền đi 3 byte dữ liệu lên bus SPI Byte đầu tiên được dịch vào Slave 1 Khi byte thứ hai truyền đến 1, byte đầu tiên sẽ bị đẩy ra khỏi Slave 1 và truyền đến Slave 2 Tương tự, khi byte thứ ba truyền vào Slave 1, byte thứ hai sẽ

bị dịch sang Slave 2 và byte đầu tiên sẽ bị dịch Slave 3

Ngày đăng: 23/05/2022, 16:43

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w