Chuẩn giao tiếp SPI ng y ng được sử dụng r ng rã rong lĩnh v đ ện tử, đặc biệt là trong giao tiếp rao đổi dữ liệu với các thiết bị ngoại vi.. Có thể mô tả tóm tắt các tín hiệu của giao
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
C T N
Lập trình nhúng cơ bản
Tìm hiểu giao diện SPI
Giảng v ên hướng dẫn: T.S Phạm Văn H
Sinh v ên h h ện h m
Tăng Quang hả Nguyễn Tuấn Anh
H
Trang 2MỤC LỤC
LỜI ÓI ẦU 6
PHẦN 1: MỞ ẦU 7
1 Tên đ tài 7
2 Lý do chọn đ tài 7
3 Mục tiêu nghiên cứu 7
4 Bố cụ đ tài 7
PHẦN 2: NỘI DUNG 8
CHƯƠ G I GIỚI THIỆU GIAO DIỆN SPI 8
1.1 Giới thiệu 8
1.2 Chuẩn truy n thông SPI 8
1.2.1 Cấu trúc SPI 8
1.2.2 SPI truy n hông như hế nào? 10
1.2.3 SPI là giao thứ đồng b 11
1.2.4 SPI là giao thứ rao đổi dữ liệu 12
1.3 Các kiểu kết nối SPI 14
1.3.1 Kết nố đ ểm – đ ểm ( point-to-point ) 14
1.3.2 Kết nối Multi-slave 15
1.3.3 Kết nối Multi-master 16
CHƯƠ G II GIAO DIỆ SPI TRÊ VI IỀU KHIỂN STM32F4 VỚI LÕI ARM CORTEX-M4 19
1.1 Tổng quan v ARM và Cortex-M 19
1.2 Tổng quan v b vi xử lý Cortex-M4 22
1.3 Lõi Cortex-M4 (CPU Cortex) 22
1.4 SPI trên STM32 24
1.5 Th ế lập SPI rên STM3 25
CHƯƠ G III HẬ XÉT VỀ GIAO DIỆ SPI 33
3.1 Những ưu đ ểm của SPI 33
3.2 Những nhượ đ ểm của SPI 33
ẾT LUẬ 34
Trang 3TÀI LIỆU THAM KHẢO 35
Trang 4DANH MỤC HÌNH
Hình 1: Giao diện SPI 9
Hình 2: Truyền dữ liệu SPI 10
Hình 3: Giản đồ timing của giao tiếp SPI theo Motorola 11
Hình 4: Giản đồ thời gian của SPI ở Mode 0 13
Hình 5: Giản đồ thời gian của SPI ở Mode 1 13
Hình 6: Giản đồ thời gian của SPI ở Mode 2 14
Hình 7: Giản đồ thời gian của SPI ở Mode 3 14
Hình 8: Kết nối point-to-point, một master nối với một slave 15
Hình 9: Kết nối nhiều slave song song 16
Hình 11: Kết nối hai master song song đến một slave 17
Hình 12: Kết nối hai master với nhau 18
Hình 13: Vi mạch tích hợp của một vi điều khiển 20
Hình 14: Các sản phẩm trong dòng vi xử lý Cortex 21
Hình 15: Các thế hệ dòng vi xử lý Cortex-M 21
Hình 16: Kiến trúc bộ vi xử lý ARM Cortex-M4 22
Hình 17: Lõi ARM7TDMI của Cortex-M4 23
Hình 18: Kiến trúc đường ống của ARM Cortex-M4 23
Hình 19: Sơ đồ khối SPI 24
Hình 20: Kết nối giữa SPI và MMC/SD card 25
Trang 5DANH MỤC BẢNG
Bảng 1: Các tín hiệu của giao diện SPI 10 Bảng 2: Các chế độ truyền thông trong giao thức SPI 13 Bảng 3: Danh sách các kiến trúc và lõi vi xử lý mà ARM đã thiết kế 19
Trang 6LỜI NÓI ĐẦU
H ện nay, á v xử lý hay v đ u kh ển đang đượ sử dụng r ng rã rong nh u lĩnh v như đ u kh ển, đ ng h a, đo đạ , ruy n hông So vớ á phương pháp
đ u kh ển, đo đạ ruy n hống ( ơ khí, đ ện ử ương ) hì sử dụng v xử lý
á ưu đ ểm như nhỏ gọn, í ốn năng lượng, hờ g an đáp ứng nhanh, hể lập rình đượ
Cùng vớ đ g ao d ện SPI ngày càng đượ sử dụng r ng rã trong ngành công ngh ệp ơ đ ện ử hận hứ đượ ầm quan rọng ủa g ao d ện SPI rong v ệ ứng dụng v o lập rình v đ u kh ển l ơ sở để húng em họn đ b ập lớn “Tìm
h ểu g ao d ện SPI”
Dướ s hướng dẫn, hỉ bảo nh ệ ình ủa hầy Phạm Văn H ùng vớ s ố gắng
nỗ l ủa á h nh v ên rong nh m húng em đã ho n h nh đ đúng hờ g an
ho phép Tuy nh ên do hờ g an hạn hế, ũng như vớ ầm h ểu b ế hạn nên húng em không ránh khỏ sa s Vì vậy húng em rấ mong nhận đượ nh u ý k ến đánh g á, g p ý ủa hầy g áo v á bạn để húng em hể ho n h ện hêm đ này
Chúng em x n hân h nh ảm ơn!
Trang 7PHẦN 1: MỞ ĐẦU
1 Tên đề tài
Tìm hiểu giao diện SPI
2 Lý do chọn đề tài
Ngày nay, khoa học kỹ thuật phát triển như vũ bão Hệ thống thiết bị đ ện
tử, mạ h đ ện tử, đ ện tử kỹ thuật số đã l m hay đổi sâu sắc toàn b hoạt
đ ng sản xuất của on người Kỹ thuậ đ ện tử số đã v đang hay hế dần các
kỹ thuậ ương v òn đ ng va rò hen hốt trong cu c cách mạng kỹ thuật
và công nghệ Song song với s phát triển thần kì của cu c cách mạng khoa học – công nghệ, kỹ thuật số đã dần dần có mặt trong hầu hết tất cả các thiết
bị từ dân dụng đến thiết bị công nghiệp đặc biệ l rong lĩnh v c thông tin liên lạc, phát thanh truy n hình, đ u khiển t đ ng Nó giải quyết khối lượng công việc lớn, giảm kí h hước của các mạ h đ ện tử đồng thời chúng
có nhi u ính năng v đ chính xác cao Có thể nói rằng kỹ thuật số ra đời là
cu c cách mạng trong ngành kỹ thuậ đ ện tử
Thế kỷ 21 chứng kiến s phát triển với tố đ chóng mặt của khoa học công nghệ, n đ ng va rò hen hốt trên tất cả á lĩnh v c của cu c sống vì vậy trong mỗ húng a, đặc biệt là thế hệ trẻ, sinh viên ngành kỹ thuật cần phải hiểu rõ và nắm bắ được các kiến thức v công nghệ kỹ thuật số Do đ chúng em quyế định chọn đ “Tìm h ểu giao diện SPI” l m đ bài tập lớn
3 Mục tiêu nghiên cứu
- S nh v ên bướ đầu tìm hiểu v nghiên cứu khoa học
- Hiểu được chuẩn nối tiếp truy n thông
- Nắm được kiến thức v chuẩn giao tiếp SPI
- Phân í h đượ ưu, đượ đ ểm của giao tiếp SPI
4 Bố cục đề tài
N i dung chính của đ tài gồm ba hương
Chương I G ới thiệu giao diện SPI
Chương II Ứng dụng giao diện SPI rên v đ u khiển AVR
Chương III hận xét v giao diện SPI
Trang 8đ u khi n và thiết bị ngoại vi m á h đơn g ản
ây l k ểu truy n thông Master-Slave, rong đ h p Mas er đ u phối quá trình truy n hông v á h p Slaves đượ đ u khiển bởi Master vì thế truy n thông chỉ xảy ra giữa Master và Slave
SPI cung cấp m t giao diện nối tiếp đơn g ản giữa vi xử lý và thiết bị ngoại vi Giống với các Bus nối tiếp khá như I C, CA hoặc USB Chuẩn giao tiếp SPI ng y ng được sử dụng r ng rã rong lĩnh v đ ện tử, đặc biệt
là trong giao tiếp rao đổi dữ liệu với các thiết bị ngoại vi
Giao diện SPI được sử dụng tích hợp trong m t số loại thiết bị như
Các b chuyển đổi (ADC và DAC)
Các loại b nhớ (EEPROM và FLASH)
Các loại IC thời gian th c
Các loại cảm biến (nhiệ đ , áp suất )
Và m t số loại thiết bị khá như b tr n tín hiệu analog, LCD, Graphic LCD
1.2 Chuẩn truyền thông SPI
1.2.1 Cấu trúc SPI
Giao diện SPI được th c hiện thông qua Bus 4 dây MISO, MOSI, SCK và
SS nên đô kh SPI òn được gọi là “giao diện 4 dây”
a MISO – Master Input/ Slave Output
Chân MISO dùng để truy n dữ liệu ra khỏ SPI kh đặt cấu hình là Slave và nhận dữ liệu kh đặt cấu hình là Master MISO của Master và các Slaves được nối tr c tiếp với nhau
b MOSI – Master Output/ Slave Input
Trang 9Chân MOSI dùng để truy n dữ liệu ra khỏ SPI kh đặt cấu hình là Master và nhận dữ liệu kh đặt cấu hình là Slave MISO của Master và các Slaves được nối tr c tiếp với nhau
c SCK – Serial Clock
Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truy n hông đồng b nên cần m đường giữ nhịp, mỗi nhịp trên chân SCK báo 1 bit dữ liệu đến hoặ đ S tồn tại của chân SCK giúp quá trình truy n ít bị lỗi và vì thế tốc
đ truy n của SPI có thể đạt hiệu quả cao
Xung nhịp chỉ được tạo ra bởi chip Master
d SS – Slave Select
SS l đường chọn Slave cần giao tiếp, rên á h p Slave đường SS sẽ
ở mức cao khi không làm việc Nếu h p Mas er 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 đ
Chỉ có m đường SS trên mỗ Slave nhưng hể có nhi u đường đ u khiển trên Master tùy thu c vào thiết kế của người dùng
Hình 1: Giao diện SPI
Trang 10 Có thể mô tả tóm tắt các tín hiệu của giao diện SPI bằng bảng sau:
Tên tín hiệu Chiều Mô tả
Slave đầu vào Clo k đồng b truy n/nhận dữ liệu luôn được cung cấp bởi Master
Slave đầu vào
Tín hiệu kết nối với Slave Master kích hoạt tín hiệu này nếu muốn truy n/nhận dữ liệu với Slave
Master: MOSI
Slave: SDO hoặc SO ầu ra
ầu ra dữ liệu nối tiếp
- Với Master tín hiệu có tên Master Out Slave In
- Với Slave tín hiệu có tên Slave Data Out
Master: MISO
Slave: SDI hoặc SI ầu vào
ầu vào dữ liệu nối tiếp
- Với Master tín hiệu có tên Master
In Slave Out
- Với Slave tín hiệu có tên Slave Data In
Bảng 1: Các tín hiệu của giao diện SPI
1.2.2 SPI truyền thông như thế nào?
Trang 11 Giản đồ định thời giao tiếp SPI – Motorola
Khi Master muốn truy n/nhận dữ liệu, nó kéo tín hiệu chọn chip SS xuống mức thấp Sau đ , Mas er ung ấp Clo k đồng b việc truy n/nhận dữ liệu rên đường SCK
Vị trí lấy mẫu dữ liệu và dịch dữ liệu theo xung SCK phụ thu c vào hai thông số cấu hình đượ quy định bởi chuẩn SPI là pha của Clock (CPHS – Clock Phase) và c c của Clock (CPOL – Clock Polarity)
Hình 3: Giản đồ timing của giao tiếp SPI theo Motorola
C c của Clock quyế định trạng thái rảnh (idle) của tín hiệu SCK Nếu CPOL = 0 thì mức logic khi idle của SCK là mức 0 Nếu CPOL = 1 thì ngược lại
D a vào pha của Clock chúng ta sẽ biết lấy đ ểm mẫu ở đâu
Nếu pha Clock bằng 0 thì dữ liệu được lấy mẫu khi SCK chuyển từ
trạng thái idle sang active, có thể là cạnh lên hoặc cạnh xuống tùy vào giá
trị CPOL
Nếu pha Clock bằng 1 thì dữ liệu được lấy mẫu khi SCK chuyển từ
trạng thái active sang idle
Trang 12- Khi tín hiệu SC được phát ra thì tín hiệu này có thể hay đổ nhưng không làm hỏng dữ liệu Lí do là trong giao thức SPI, tố đ của dữ liệu truy n đ sẽ hay đổi theo s hay đổi của SC u này rất có lợi nếu như
vi xử lý bị cấp xung đồng hồ không chính xác (VD: b dao đ ng RC)
1.2.4 SPI là giao thức trao đổi dữ liệu
Dữ liệu lú n o ũng được truy n qua lại giữa các thiết bị SPI Thật ra, không có khái niệm thiết bị phát hay thiết bị nhận trong giao thức SPI mà mỗi thiết bị đường dữ liệu, m đường dữ liệu vào và m đường dữ liệu ra
Dữ liệu truy n đ đượ đ u khiển bởi xung SCK từ Master
h được truy n đ , dữ liệu vào cần phả đượ đọc ngay nếu không sẽ bị
mấ đ v kh đ , g ao hức SPI có thể sẽ ngưng hoạ đ ng ể tránh tình trạng
n y, lú n o a ũng phả đọc dữ liệu v ngay sau khi truy n đ ho dù dữ liệu
đ không h c s cần thiết
Thường thì m t tín hiệu chọn Slave sẽ á đ ng mức thấp để chỉ ra Slave
n o được truy cập Tín hiệu này phả được sử dụng khi có nhi u hơn m t Slave trong cùng hệ thống v hường không sử dụng đến khi trong mạch chỉ
có m t Slave Tuy nhiên, theo nguyên tắc thì ta nên sử dụng tín hiệu này trong
cả ha rường hợp trên
Tín hiệu SS sẽ chỉ ra Slave nào mà Master muốn bắ đầu m t quá trình rao đổi dữ liệu bằng giao thức SPI giữa thiết bị Slave đ và chính nó Nếu tín hiệu rên đường SS là 0 thì chứng tỏ giao thứ SPI đang hoạ đ ng gược lại
là mức 1 thì giao thức SPI sẽ không hoạ đ ng
M đặ đ ểm khá quan trọng của tín hiệu SS là nó có tác dụng l m ăng ường khả năng m ễn nhiễm cho hệ thống Lí do là SS sẽ Rese Slave để nó
có thể nhận Byte dữ liệu tiếp theo
SPI có 4 mode hoạ đ ng, phụ thu c vào c c tính và pha của xung đồng
hồ Trong rường hợp c c âm của xung đồng hồ, tín hiệu SCK sẽ ở mức thấp trong quá trình nghỉ và chuyển sang mức cao trong quá trình truy n dữ liệu gược lạ , đối vớ rường hợp c dương ủa xung đồng hồ, tín hiệu SCK ở mức cao trong quá trình nghỉ và chuyển sang mức thấp khi truy n dữ liệu:
Trang 13SPI Mode CPOL CPHS
Mô tả Xung dương, dữ liệu được chố rước khi dịch
Giản đồ thời gian:
Hình 4: Giản đồ thời gian của SPI ở Mode 0
SPI Mode 1:
Mô tả Xung dương, dữ liệu được dị h đ rước khi chốt
Giản đồ thời gian
Hình 5: Giản đồ thời gian của SPI ở Mode 1
SPI Mode 2:
Trang 14Mô tả: Xung âm, dữ liệu được chốt lạ rước khi dịch
Giản đồ thời gian
Hình 6: Giản đồ thời gian của SPI ở Mode 2
SPI Mode 3:
Mô tả: Xung âm, dữ liệu bị dị h đ rước khi chốt lại
Giản đồ thời gian
Hình 7: Giản đồ thời gian của SPI ở Mode 3
1.3 Các kiểu kết nối SPI
1.3.1 Kết nối điểm – điểm ( point-to-point )
ây l k ểu kết nố ơ bản nhất của giao thức SPI là m t master kết nối với
m t slave
Trang 15Hình 8: Kết nối point-to-point, một master nối với một slave
Cả Mas er v Slave đ u có thanh ghi dịch nối tiếp (thanh ghi dữ liệu 8 bits) ở bên trong Thiết bị Master bắ đầu việ rao đổi dữ liệu bằng cách truy n đ m t bit vào thanh ghi dịch của n , sau đ bit dữ liệu sẽ đượ đưa sang Slave heo đường tín hiệu MOSI (SDI), Slave sẽ truy n dữ liệu nằm trong thanh ghi dịch của hính n ngược trở v Mas er hông qua đường tín hiệu MISO (SDO) Bằng cách này, dữ liệu của hai thanh ghi sẽ đượ rao đổi với nhau Việ đọc và ghi dữ liệu vào Slave diễn ra cùng m t lúc nên tố đ rao đổi dữ liệu diễn ra rấ nhanh Do đ , g ao hức SPI là m t giao thức rất có hiệu quả
Trong kiểu kết nối này, chỉ có thiết bị Master mới có thể đ u khiển (phát ra) xung SCK Dữ liệu sẽ không được truy n đ nếu như Mas er không ung cấp xung SCK và tất cả các thiết bị Slave đ u đượ đ u khiển bởi xung nhịp phát ra từ Mas er rong kh đ , Slave lại không có khả năng phá xung
Trang 16Hình 9: Kết nối nhiều slave song song
Kết nối nối tiếp hay kết nối Daisy-Chained
Trong kết nối này, chân SS và SCK của master nố song song đến tất cả các slave Chân SDO của slave rước nố đến SDI của slave sau Chân MOSI của master nố đến SDI của slave đầu tiên trong chuỗi và MISO được nố đến SDO của slave cuối cùng trong chuỗi
Việc truy n dữ liệu từ mas er đến các slave và dữ liệu master nhận từ slave cuố ùng được minh họa với các slave như sau:
Hình 10: Kết nối nối tiếp (Daisy-Chained)
Trang 17Với cách kết nối này, phần cứng ngoại vi phải hỗ trợ thêm các tín hiệu
đ u khiển khác để ránh xung đ t khi hai master cùng truy xuấ đến slave Ví
dụ m t trong các cách hỗ trợ multi-mas er như rong hình sau
Hình 11: Kết nối hai master song song đến một slave
Giải pháp ở đây l ngo á ín h ệu SPI hông hường, phần cứng của hai master SPI hỗ trợ thêm tín hiệu SS_I để master này biế mas er k a đang chọn slave hay không ồng thời tín hiệu SS nố đến slave được mắc qua m t cổng X OR để nếu hai master cùng chọn thì tín hiệu SS của slave vẫn không tích c c Bên cạnh đ , rong mạch trên, ngoài txd (chính là tín hiệu MOSI) thì đường SC ũng phải Hi-Z khi master không chọn slave
Kết nối hai master với nhau
ây l m t dạng khác của multi-mas er Trong đ ha mas er nối tr c tiếp với nhau, giao tiếp qua 5 đường
Trang 18Hình 12: Kết nối hai master với nhau
Trang 19CHƯƠNG : GIAO DIỆN SPI TRÊN V Đ ỀU KHIỂN
STM32F4 V I LÕI ARM CORTEX-M4
1.1 Tổng quan về ARM và Cortex-M
Kiến trúc ARM là m t tập hợp các chỉ thị thiết lập kiến trúc (ISA) vi xử
lý máy tính 32-bit kiểu RISC, được phát triển bởi công ty ARM Holdings
STT Architecture Bit
width
Cores designed by ARM
Holdings Cortex profile
Microcontroller
Cortex-R5, ARM Cortex-R7 Real time
ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17
Application
Bảng 3: Danh sách các kiến trúc và lõi vi xử lý mà ARM đã thiết
kế