Chuẩn SPI được phát triển bởi Motorola vào những năm 1980 Đây là một loại giao thức kiểu Master – Slave cung cấp một giao diện chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi củ
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
_
HDL NHÓM 3
CÁN BỘ GIẢNG DẠY: NGUYỄN XUÂN QUANG
LỚP: L03
THÀNH PHỐ HỒ CHÍ MINH 2022
Trang 2ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
_
BÁO CÁO BÀI TẬP LỚN THIẾT KẾ
LUẬN LÝ HDL NHÓM 3 “ SPI-GIAO DIỆN NGOẠI VI NỐI TIẾP”
CÁN BỘ GIẢNG DẠY: NGUYỄN XUÂN QUANG
LỚP: L03
THÀNH PHỐ HỒ CHÍ MINH 2022
Trang 3Tên lớp: L03
Nhóm: 3
Thành viên nhóm:
Nhận xét của giáo viên:
Ngày 04 tháng 05 năm 2022 Giáo viên chấm điểm
Trang 4Mục Lục
1 Cơ sở lý thuyết và ứng dụng 5
2 Giới thiệu SPI 5
3 Các thành phần quan trọng trong SPI 6
4 Cách thức hoạt động 9
5 Cách thức hoạt động 11
6 Ứng dụng SPI 12
7 Ưu và nhược điểm của SPI 12
8.Code SPI 13
9.Tài liệu tham khảo 18
Trang 51 Cơ sở lý thuyết và ứng dụng:
Giao tiếp giữa các thiết bị điện tử như giao tiếp giữa người với người
Cả hai đều phải nói chung 1 ngôn ngữ Trong điện tử, những ngôn ngữ này được gọi là những ngôn ngữ giao thức
Có 3 loại ngôn ngữ: SPI, I2C, UART
3 loại ngôn ngữ này đều chậm hơn những giao thức như USB, ethernet, Wifi nhưng chúng đơn giản hơn nhiều và sử dụng ít phần cứng và tài nguyên hệ thống hơn
Các thiết bị điện tử giao tiếp với nhau bằng cách gửi bit data bằng dây kết nối giữa các thiết bị Một bit như là một lá thư, ngoại trừ thay vì 26
từ trong bảng chữ cái thì thay vào đó chỉ là số nhị phân 0 và 1
Trong một hệ thống thực thi tại 5V, bit số 0 được giao tiếp tại xung 0V,
và bit số 1 được giao tiếp tại xung 5V
Các bit có thể được truyền song song (cùng một lúc) hoặc nối tiếp(tuần tự)
2 Giới thiệu SPI:
SPI viết tắt của Serial Peripheral Interface, SPI bus – Giao diện ngoại vi nối tiếp, bus SPI
Chuẩn SPI được phát triển bởi Motorola vào những năm 1980
Đây là một loại giao thức kiểu Master – Slave cung cấp một giao diện chi phí thấp giữa vi điều khiển và các thiết bị ngoại vi của nó, được sử dụng trong các thiết bị khác nhau Ví dụ: module thẻ SD, module đầu đọc thẻ RFID và bộ phát/ thu không dây 2,4Hz
Master là thiết bị điều khiển (thường là vi điều khiển), còn slave (thường
là cảm biến, màn hình hoặc chip nhớ) nhận lệnh từ master
Trang 6Đây là một chuẩn đồng bộ nối tiếp để truyền dữ liệu ở chế độ song công toàn phần (full- duplex) tức trong cùng một thời điểm có thể xảy ra đồng thời quá trình truyền và nhận
Cấu hình đơn giản nhất của SPI là hệ thống 1 slave, một master duy nhất, một master có thể điều khiển nhiều hơn 1 slave
Trên thực tế, số lượng Slave bị giới hạn bởi điện dung tải của hệ thống,
mà làm giảm khả năng của Master thay đổi chính xác giữa 2 cấp điện thế
Đôi khi SPI còn được gọi là chuẩn giao tiếp 4 dây (Four-wire)
3 Các thành phần quan trọng trong SPI:
- Tín hiệu đồng hồ:
Phải được cung cấp bởi Master và 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 cạnh thường được sử dụng nhất, có hai loại: cạnh lên và cạnh xuống 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
- Cực của xung giữ nhịp (CPOL):
Cực của xung giữ nhịp (Clock Polarity) được gọi tắt là CPOL Đây là khái niệm dùng chỉ trạng thái của chân SCK ở trạng thái nghỉ
Ở trạng thái nghỉ (Idle), chân SCK có thể được giữ ở mức cao (CPOL = 1) hoặc thấp (CPOL = 0 )
- Phase (CPHA):
Dùng để chỉ cách mà dữ liệu được lấy mẫu theo xung giữ nhịp
Trang 7Dữ liệu có thể được truyền đi ở cạnh lên của SCK (CPHA = 0) hoặc cạnh xuống (CPHA =1)
- Các chế độ hoạt động:
Sự kết hợp của SPOL và CPHA làm nên 4 chế dộ hoạt động của SPI Việc chọn 1 trong 4 chế độ này không ảnh hưởng đến chất lượng truyền thông mà làm sao cho có sự tương thích giữa Master và Slave
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:
Trang 8Mode 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ồ
Do 2 gói dữ liệu trên 2 chip này được gửi qua lại đồng thời sau 8 chu kì đồng hồ nên quá trình truyền dữ liệu này gọi là song công toàn phần (full - duplex)
- Các tín hiệu trong SPI:
Trong giao diện SPI có bốn tín hiệu số:
MOSI hay SI – cổng ra của bên Master ( Master Out Slave IN) Đây là chân dành cho việc truyền tín hiệu từ thiết bị chủ động đến thiết bị bị động
MISO hay SO – Công ra bên Slave (Master IN Slave Out) Đây
là chân dành cho việc truyền dữ liệu từ Slave đến Master,
thường được gửi với bit ít quan trọng nhất trước
SCLK hay SCK là tín hiệu clock đồng bộ (Serial Clock) Xung nhịp chỉ được tạo bởi Master
CS hay SS là tín hiệu chọn vi mạch ( Chip Select hoặc Slave Select) SS sẽ ở mức cao khi không làm việc
kéo đường SS của một Slave nào đó xuống đường mức thấp thì sẽ xảy ra việc giao tiếp với Slave đó
bằng cách nối chuỗi hoặc nối song song, ở một thời điểm xác định chỉ có 1 Slave được hoạt động
Trang 94 Cách thức hoạt động:
Bắt đầu hoạt động: Master quyết định Slave nào để gửi dữ liệu bằng cách kéo chân SS xuống thấp kích hoạt clock ở cả Master và Slave Trước đó, tất cả các Slave có chân SS đều có mức cao
Mỗi chip Master hay Slave có một thanh ghi dữ liệu 8 bits
Master tạo tín hiệu đồng hồ SCLK và được cung cấp đầ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 xung nhịp do Master tạo ra trên đường giữ nhịp SCK thì một bit trong thanh ghi dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi dữ liệu của Slave được truyển qua Master trên đường MISO
Trang 10Sự tồn tại của xung SCK giúp quá trình truyền ít bị lỗi và làm cho tốc độ truyền rất cao
Tóm tắt:
Master tạo ra tín hiệu xung nhịp (SCLK)
Master chuyển chân SS/CS sang mức thấp để kích hoạt Slave
Master gửi dữ liệu từng bit tới một Slave theo đường MOSI để Slave đọc
Slave sẽ phản hồi cho Master bằng đường MISO (nếu cần) để Master đọc
5 Phần cứng SPI:
Hãy xem xét một Master và một Slave đơn được kết nối bằng bus SPI Hình ảnh sau đây cho thấy các yêu cầu hệ thống tối thiểu cho cả hai thiết bị
Trang 11Từ hình ảnh trên cho thấy thiết bị Master bao gồm một thanh ghi dịch (Shift Register), một mạch chốt dữ liệu (Latch) và một bộ tạo xung nhịp (Clock Generator)
Thiết bị Slave bao gồm phần cứng tương tự Cả hai thanh ghi dịch được kết nối để tạo thành một vòng
Thiết bị Master bắt đầu việc trao đổi dữ liệu bằng cách truyền đi một Byte vào thanh ghi dịch của nó, sau đó Byte dữ liệu sẽ được đưa sang Slave theo đường tín hiệu MOSI, Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch của chính nó ngược trở về Master thông qua đường tín hiệu MISO Bằng cách này, dữ liệu của hai thanh ghi sẽ được trao đổi với nhau Việc đọc và ghi dữ liệu vào Slave diễn ra cùng một lúc nên tốc
độ trao đổi dữ liệu diễn ra rất nhanh Do đó, giao thức SPI là một giao thức rất có hiệu quả
Bởi vì với mỗi chu kỳ đồng hồ, một bit dữ liệu được truyền theo từng hướng tức là từ Master đến Slave và từ Slave đến Master Vì vậy, đối với một byte dữ liệu được truyền từ mỗi thiết bị, nó sẽ mất 8 chu kỳ đồng hồ
Trang 126 Ứng dụng của SPI
Giao thức SPI được tích hợp trong một số loại thiết bị như:
LCD, video game controller,…
Đ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 là nó cung cấp tốc độ truyền dữ liệu bảo mật cao, không bị gián đoạn 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
7 Ưu và nhược điểm của SPI
Ưu điểm:
Không có bit bắt đầu và dừng, vì vậy dữ liệu có thể được truyền liên tục
mà không bị gián đoạn
Không có hệ thống định địa chỉ slave phức tạp như I2C
Tốc độ truyền dữ liệu cao hơn I2C (nhanh gần gấp đôi)
Các đường MISO và MOSI riêng biệt, vì vậy dữ liệu có thể được gửi và nhận cùng một lúc
Nhược điểm:
Sử dụng bốn dây (I2C và UART sử dụng hai)
Không xác nhận dữ liệu đã được nhận thành công (I2C có điều này) Không có hình thức kiểm tra lỗi như bit chẵn lẻ trong UART
Chỉ cho phép một master duy nhất
Trang 138 Code SPI:
Trang 14Schematic
Trang 15Waveform
Trang 16Console
Trang 17Console
Trang 189 Tài liệu tham khảo:
Chuẩn giao tiếp SPI và cách kết nối - Blog Chia Sẻ Kiến Thức Và Đam Mê Điện Tử (dammedientu.vn) Basics of the SPI Communication Protocol (circuitbasics.com)
SPI Working with Verilog Code (shashisuman.com)
Chuẩn giao tiếp SPI – Trung Kien's Blog (wordpress.com)