Tải bản đầy đủ (.doc) (26 trang)

Tim hieu giao dien spi

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (796.21 KB, 26 trang )

v

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN
MÔN: LẬP TRÌNH NHÚNG
Đề tài: Tìm hiểu về giao diện SPI
GV hướng dẫn: TS. Phạm Văn Hà
Lớp: CĐ-ĐH Khoa Học Máy Tính 1_K10
Nhóm :

Thân Quang Định
Lê Trần Thế Trung
Trần Trung Dũng

Hà Nội, 2016


LỜI NÓI ĐẦU
Hiện nay, các vi xử lý hay vi điều khiển đang được sử dụng rộng rãi trong
nhiều lĩnh vực như: điều khiển, tự động hóa, đo đạc, truyền thông… So với các
phương pháp điều khiển, đo đạc truyền thống (cơ khí, điện tử tương tự…) thì sử
dụng vi xử lý có các ưu điểm như: nhỏ gọn, ít tốn năng lượng, thời gian đáp ứng
nhanh, có thể lập trình được…
Cùng với đó giao diện SPI ngày càng được sử dụng rộng rãi trong ngành công
nghiệp cơ điện tử. Nhận thức được tầm quan trọng của giao diện SPI trong việc
ứng dụng vào lập trình vi điều khiển là cơ sở để chúng em chọn đề tài bài tập lớn
“Tìm hiểu giao diện SPI”.
Dưới sự hướng dẫn, chỉ bảo nhiệt tình của thầy Phan Văn Hà cùng với sự cố
gắng nỗ lực của các thành viên trong nhóm chúng em đã hoàn thành đề tài đúng


thời gian cho phép. Tuy nhiên do thời gian còn hạn chế, cũng như tầm hiểu biết có
hạn nên chúng em không tránh khỏi sai sót. Vì vậy chúng em rất mong nhận được
nhiều ý kiến đánh giá, đóng góp của thầy giáo và các bạn để chúng em có thể hoàn
thiện thêm đề tài này.
Chúng em xin chân thành cảm ơn!

Tìm hiểu giao diện SPI

Page 2


MỤC LỤC
v............................................................................................................................................. 1
LỜI NÓI ĐẦU......................................................................................................................... 2
MỤC LỤC............................................................................................................................... 3
PHẦN 1: MỞ ĐẦU.................................................................................................................. 5
1.Lý do chọn đề tài.............................................................................................................. 5
2.Mục tiêu nghiên cứu........................................................................................................ 5
3.Bố cục đề tài.................................................................................................................... 5
PHẦN 2: NỘI DUNG............................................................................................................... 6
CHƯƠNG I: GIỚI THIỆU GIAO DIỆN SPI.............................................................................6
1.1 Giới thiệu...................................................................................................................... 6
1.2 Chuẩn truyền thông SPI...............................................................................................6
1.2.1 Cấu trúc SPI........................................................................................................... 6
1.2.2 SPI truyền thông như thế nào?...............................................................................8
1.2.3 SPI là giao thức đồng bộ.....................................................................................10
1.2.4 SPI là giao thức trao đổi dữ liệu...........................................................................10
1.3 Các kiểu kết nối SPI....................................................................................................13
1.3.1 Kết nối điểm – điểm (point-point)..........................................................................13
1.3.2 Kết nối Multi-slave................................................................................................14

1.3.4 Kết nối Multi-master..............................................................................................15
CHƯƠNG II: GIAO DIỆN SPI TRÊN VI ĐIỀU KHIỂN STM32F4 VỚI LÕI ARM CORTEX-M4
............................................................................................................................................. 17
2.1 Tổng quan về ARM và Cortex-M.................................................................................17
2.2 Tổng quan về bộ vi xử lý Cortex-M4...........................................................................20
2.3 Lõi Cortex-M4 (CPU Cortex).......................................................................................20
2.4 SPI trên STM32.......................................................................................................... 22
CHƯƠNG III: NHẬN XÉT VỀ GIAO DIỆN SPI.....................................................................24
3.1 Những ưu điểm của SPI.............................................................................................24
3.2 Những nhược điểm của SPI.......................................................................................24
KẾT LUẬN............................................................................................................................ 25
TÀI LIỆU THAM KHẢO.........................................................................................................26

Tìm hiểu giao diện SPI

Page 3


DANH MỤC HÌNH
Hình 1. Giao diện SPI............................................................................................................. 7
Hình 2. Truyền dữ liệu SPI.....................................................................................................9
Hình 3. Giản đồ timing của giao tiếp SPI theo Motorola.........................................................9
Hình 4. Giản đồ thời gian SPI ở Mode 0...............................................................................11
Hình 5. Giản đồ thời gian ở Mode 1.....................................................................................12
Hình 6. Giản đồ thời gian của SPI ở Mode 2........................................................................12
Hình 7. Giản đồ thời gian của SPI ở Mode 3........................................................................13
Hình 8. Kết nối point-to-point, một master nối với một slave................................................13
Hình 9. Kết nối nhiều slave song song.................................................................................14
Hình 10. Kết nối nối tiếp.......................................................................................................15
Hình 11. Kết nối hai master song song đến một slave..........................................................15

Hình 12. Kết nối hai master với nhau...................................................................................16
Hình 13. Vi mạch tích hợp của một vi điều khiển..................................................................18
Hình 14. Các sản phẩm dòng vi xử lý Cortex.......................................................................19
Hình 15. Các thế hệ dòng vi xử lý Cortex-M.........................................................................19
Hình 16. Kiến trúc bộ vi xử lý ARM Cortex-M4.....................................................................20
Hình 17. Lõi ARM7TDMI của Cortex-M4..............................................................................21
Hình 18. Kiến trúc đường ống của ARM Cortex-M4.............................................................21
Hình 19. Sơ đồ khối SPI.......................................................................................................22
Hình 20. Kết nối giữa SPI và MMC/SD card.........................................................................23

Tìm hiểu giao diện SPI

Page 4


PHẦN 1: MỞ ĐẦU
1. 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ị điện tử,
mạch điện tử, điện tử kỹ thuật số đã làm thay đổi sâu sắc toàn bộ hoạt động sản
xuất của con người. Kỹ thuật điện tử số đã và đang thay thế dần các kỹ thuật tương
tự và còn đóng vai trò then chố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ệt là trong lĩnh vực thông tin liên lạc, phát thanh truyền hình,
điều khiển tự động… Nó giải quyết khối lượng công việc lớn, giảm kích thước của
các mạch điện tử đồng thời chúng có nhiều tí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ật điện tử.
Thế kỷ XXI chứng kiến sự phát triển với tốc độ chóng mặt của khoa học công
nghệ, nó đóng vai trò then chốt trên tất cả các lĩnh vực của cuộc sống vì vậy trong
mỗi chúng ta, đặ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ắt được các kiến thức về công nghệ kỹ thuật số. Do đó chúng em quyết định
chọn đề tài “Tìm hiểu giao diện SPI” để làm bài tập lớn.
2. Mục tiêu nghiên cứu
-

Sinh viên bước đầ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 tích được ưu, nhược điểm của giao tiếp SPI.

3. Bố cục đề tài
Nội dung chính của đề tài gồm ba chương:
 Chương I: Giới thiệu giao diện SPI
 Chương II: Ứng dụng giao diện SPI trên vi điều khiển AVR
 Chương III: Nhận xét về giao diện SPI

Tìm hiểu giao diện SPI

Page 5



PHẦN 2: NỘI DUNG
CHƯƠNG I: GIỚI THIỆU GIAO DIỆN SPI
1.1 Giới thiệu
SPI (Serial Peripheral Interface – Giao diện ngoại vi nối tiếp) 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), do
công ty Motorola thiết kế nhằm đảm bảo sự liên hợp giữa các vi điều khiển và
thiết bị ngoại vi một cách đơn giản.
Đây là kiểu truyền thông Master-Slave, trong đó có một chíp Master điều phối
quá trình truyền thông và các chip Slaves được điề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 giả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ác như: I2C, CAN hoặc USB. Chuẩn giao tiếp SPI
ngày càng được sử dụng rộng rãi trong lĩnh vực điện tử, đặc biệt là trong giao tiếp
trao đổ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 số loại thiết bị sau:
-

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ệt độ, áp suất)


-

Và một số loại thiết bị khác nhau: 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 đôi khi SPI còn được gọi là “giao tiếp 4 dây”.
a. MISO - Master Input/Slave Output
Chân MISO dùng để truyền dữ liệu ra khỏi SPI khi đặt cấu hình là Slave và
nhận dữ liệu khi đặt cấu hình là Master. MISO của Master và các Slave được
nối trực tiếp với nhau.
b. MOSI - Master Output/Slave Input

Tìm hiểu giao diện SPI

Page 6


Chân MOSI dùng để truyền dữ liệu ra khỏi SPI khi đặt cấu hình là Master và
nhận dữ liệu khi đặt cấu hình là Slave. MISO của Master và các Slave đượ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 thông đồng bộ nên
cần một đường giữ nhịp, mỗi nhịp trên chân SCK bá 1 bit dữ liệu đến hoặc đi.
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, trên các chíp Slave đường SS sẽ ở
mức cao khi không làm việc. Nếu chíp Master khé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ột đường SS trên mỗi Slave nhưng có thể có nhiều đường điều
khiển trên Master tùy thuộc vào thiết kế người dùng

Hình 1. Giao diện SPI

Tìm hiểu giao diện SPI

Page 7




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
SCK

Chiều

Mô tả

Master: đầu ra

Clock đồng bộ truyền/nhận dữ
liệu luôn được cung cấp bởi
Master


Slave: đầu vào
Master: đầu ra

SS

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
của Slave.
Đầu ra dữ liệu nối tiếp

Master: MOSI
Đầu ra

Slave: SDO hoặc
SO

+ Với Master tín hiệu có tên
Master Out Slave In
+ Với Slave tín hiệu có tên là
Slave Data Out
Đầu vào dữ liệu nối tiếp

Master: MISO
Slave:SDI hoặc SI

Đầu ra


+ Với Master tín hiệu có tên
Master In Slave Out
+ Với Slave tín hiệu có tên là
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?

Mô tả cơ chế
Hình dưới đây mô tả quá trình truyền một gói dữ liệu thực hiện bởi
module SPI trong AVR, bên trái là chip Master và bên phải là Slave.

Tìm hiểu giao diện SPI

Page 8


Hình 2. Truyền dữ liệu SPI


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 đó, Master cung cấp Clock đồng bộ việc truyền/nhận
dữ liệu trê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 được 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ết đị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 điể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ị
CPO.

Tìm hiểu giao diện SPI

Page 9


+ 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.
1.2.3 SPI là giao thức đồng bộ
Module SPI cho phép giao tiếp nối tiếp đồng bộ kép giữa vi xử lý với
thiết bị ngoại vi:
-

Tín hiệu SCK được cung cấp bởi Master nhằm tạo xung đồng bộ cho phép
dữ liệu được truyền đi hoặc khi đọc dữ liệu nhận được.

-

Khi tín hiệu SCK được phát ra thì tín hiệu này có thể thay đổi nhưng không
làm hỏng dữ liệu. Lí do là trong giao thức SPI, tốc độ của dữ liệu truyền đi
sẽ thay đổi theo sự thay đổi của SCK. Điề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úc nào cũ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ị có 2 đường dữ liệu, một đường dữ liệu vào và một đường dữ
liệu ra.
Dữ liệu truyền đi được điều khiển bởi xung SCK từ Master.
Khi được truyền dữ liệu đi, dữ liệu vào cần phải được đọc ngay nếu
không sẽ bị mất đi và khi đó, giao thức SPI có thể sẽ ngưng hoạt động. Để
tránh tình trạng này, lúc nào ta cũng phải đọc dữ liệu về ngay sau khi truyền
đi cho dù dữ liệu đó không thực sự cần thiết.
Thường thì một tín hiệu chọn Slave sẽ tác động mức thấp để chỉ ra Slave
nào được truy cập. Tín hiệu này phải được sử dụng khi có nhiều hơn một
Slave trong cùng hệ thống và thườ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ả hai trường hợp trên.
Tín hiệu SS sẽ chỉ ra Slave nào mà Master muốn bắt đầu một quá trình
trao đổi dữ liệu bằng giao thức SPI giữa các thiết bị Slave đó và chính nó.
Nếu tín hiệu trên đường SS là 0 thì chứng tỏ giao thức SPI đang hoạt động.
Ngược lại là mức 1 thì giao thức SPI không hoạt động.
Một đặc điểm khá quan trọng của tín hiệu SS là nó có tác dụng làm tăng
cường khả năng miễn nhiễm cho hệ thống. Lí do là SS sẽ Reset Slave để nó
có thể nhận Byte dữ liệu tiếp theo.

Tìm hiểu giao diện SPI

Page 10


SPI có 4 mode hoạt động, phụ thuộc vào cực tính và pha của xung đồng
hồ. Trong trườ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. Ngược lại, đối với trường hợp cực dương củ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:
SPI mode

CPOL

CPHS

0

0

0

1

0

1

2

1

0

3


1

1

Bảng 2. Các chế độ truyền thông trong giao thức SPI
+ SPI Mode 0:
Mô tả: Xung dương, dữ liệu được chốt trước khi dịch
Giản đồ thời gian:

Hình 4. Giản đồ thời gian SPI ở Mode 0
+ SPI Mode 1:
Mô tả: Xung dương, dữ liệu được dịch đi trước khi chốt
Giản đồ thời gian:

Tìm hiểu giao diện SPI

Page 11


Hình 5. Giản đồ thời gian ở Mode 1
+ SPI Mode2:
Mô tả: Xung âm, dữ liệu được chốt lại trướ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ịch đi trước khi chốt lại
Giản đồ thời gian:

Tìm hiểu giao diện SPI


Page 12


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-point)
Đây là kiểu kết nối cơ bản nhất của giao thức SPI là một master kết nối với
một slave.

Hình 8. Kết nối point-to-point, một master nối với một slave
Cả Master 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ắt đầu việc trao đổi dữ liệu bằng cách truyền đi một
bit vào thanh ghi dịch của nó, sau đó bit dữ liệu sẽ được đưa sang Slave theo
đường tín hiệu MOSI (SDI), Slave sẽ truyền dữ liệu nằm trong thanh ghi dịch
của nó ngược trở về Master thông qua đường tí hiệu MISO (SDO). 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ả.
Trong kiểu kết nối này, chỉ có thiết bị Master mới có thể điều khiển (phát ra)
xung SCK. Dữ liệu sẽ không được truyền đi nếu như Master không cung cấp
xung SCK và tất cả các thiết bị Slave đều được điều khiển bởi xung nhịp phát
ra từ Master, trong khi đó Slave lại không có khả năng phát xung.

Tìm hiểu giao diện SPI

Page 13


1.3.2 Kết nối Multi-slave


Kết nối nhiều slave độc lập (Independent slaves) hay kết nối song
song:
Trong cách kết nối này, tín hiệu SCK và SDO từ Master được cung cấp đến
từng Slave. Đường tín hiệu SDO của các Slave nối chung lại với nhau và
truyền về Master. Lúc này, Master sẽ lựa chọn Slave nào để trao đổi dữ liệu
thông qua các chân SS riêng lẻ.

Hì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ối song song đến tất cả các
Slave. Chân SDO của Slave trước nối đến SDI của Slave sau. Chân MOSI của
Master nối đến SDI của Slave đầu tiên trong chuỗi và MISO được nối đến SDO
của Slave cuối cùng trong chuỗi.
Việc truyền dữ liệu từ Master đến các Slave và dữ liệu Master nhận từ Slave
cuối cùng được minh họa với các Slave như sau:

Tìm hiểu giao diện SPI

Page 14


Hình 10. Kết nối nối tiếp
1.3.4 Kết nối Multi-master
Kết nối nhiều Master độc lập (Independent master hay Multi-master).
Đối với kiểu kết nối này có nhiều cách kết nối và nhiều vấn đề hơn.
• Kết nối nhiều master song song đến một slave

Vớ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
điều khiển khác để tránh xung đột khi hai master cùng truy xuất đến slave.
Ví dụ một trong các cách hỗ trợ multi-master như trong 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ài các tín hiệu SPI thông thường, phần cứng của
hai master SPI hỗ trợ thêm tín hiệu SS_IN để master này biết master kia có
chọn slave hay không. Đồng thời tín hiệu SS nối đến slave được mắc qua
một cổng XNOR đểu nếu hai master cùng chọn thì tín hiệu SS của slave vẫn

Tìm hiểu giao diện SPI

Page 15


không tích cực. Bên cạnh đó, trong mạch trên, ngoài txd (chính là tín hiệu
MOSI) thì đường SCK cũng phải Hi-Z khi master không chọn slave.
• Kết nối master với nhau
Đây là một dạng khác của multi-master. Trong đó hai master nối trực
tiếp với nhau giao tiếp qua 5 đường

Hình 12. Kết nối hai master với nhau

Tìm hiểu giao diện SPI

Page 16


CHƯƠNG II: GIAO DIỆN SPI TRÊN VI ĐIỀU KHIỂN
STM32F4 VỚI LÕI ARM CORTEX-M4

2.1 Tổng quan về ARM và Cortex-M
Kiến trúc ARM là 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

1

ARM1

32/26

ARM1

2

ARM2

32/26

ARM2, ARM3

3

ARM3

32/26


ARM6, ARM7

4

ARM4

32/26

ARM8

5

ARM4T

32

ARM7TDMI, ARM9TDMI

6

ARM5

32

ARM7EJ, ARM9E, ARM10E

7

ARM6


32

ARM11

8

ARM6-M

32

ARM Cortex-M0, ARM
Cortex-M0+, ARM Cortex-M1

Microcontroller

9

ARM7-M

32

ARM Cortex-M3

Microcontroller

10

ARM7E-M

32


ARM
Cortex-M4,
Cortex-M7

11

ARM7-R

32

ARM
Cortex-R4,
ARM Real time
Cortex-R5, ARM Cortex-R7

12

ARM7-A

32

ARM
Cortex-A5,
ARM Application
Cortex-A7, ARM Cortex-A8,
ARM
Cortex-A9,
ARM
Cortex-A12, ARM CortexA15, ARM Cortex-A17


13

ARM8-R

32

ARM
Cortex-A53,
Cortex-A57

14

ARM8-R

32

No announcements yet

Tìm hiểu giao diện SPI

Page 17

Cores designed by ARM
Holdings

Cortex profile

ARM Microcontroller


ARM Application
Real time


Bảng 3. Danh sách các kiến trúc và lõi vi xử lý mà ARM đã thiết kế
Vi xử lý (Processor) là một linh kiện điện tử được chế tạo từ các tranzito thu nhỏ
tích hợp lên trên một vi mạch cùng với một số thiết bị giao tiếp cơ bản. CPU chính
là một vi xử lý.
Vi điều khiển (Microcontroller) là một vi mạch tích hợp bao gồm bộ vi xử lý kết
hợp cùng các thiết bị ngoại vi (RAM, Timer, cổng I/O, bộ chuyển đổi,…) Vi điều
khiển có thể hoạt động chỉ với vài vi mạch hỗ trợ bên ngoài

Hình 13. Vi mạch tích hợp của một vi điều khiển
Cortex là một thế hệ lõi vi xử lý thuộc kiến trúc ARM, được thiết kế theo kiến
trúc Harvard. Nó là một lõi hoàn chỉnh bao gồm bộ vi xử lý Cortex và một hệ thống
các thiết bị ngoại vi được thiết kế theo giải pháp SoC.
Cortex có nhiều bus, cho phép truy cập dữ liệu không thằng hàng, hỗ trợ đặt xóa
các bit bên trong hai vùng 1 Mbyte của bộ nhớ mà không cần xử lý luận lý
(Boolean processor). Cortex gồm 3 dòng:
-

ARM Cortex-A: bộ vi xử lý dành cho hệ điều hành và các ứng dụng của
người dùng phức hợp. Cortex-A hỗ trợ các tập lệnh ARM, Thumb và
Thumb-2. Cortex-A là sự cải tiến của ARM11.

Tìm hiểu giao diện SPI

Page 18



-

ARM Cortex-R: bộ vi xứ lý dành cho hệ thống đòi hỏi về tính thời gian
thực (Real Time Control). Cortex-R hỗ trợ các tập lệnh ARM, Thumb và
Thumb-2. Cortex-R là sự cải tiến của ARM9.

-

ARM Cortex-M: bộ xử lý được tối ưu dành cho các ứng dụng vi điều khiển
(Microcontroller) với chi phí thấp mà vẫn đạt được hiệu xuất cao. Dòng này
chỉ hỗ trợ tập lệnh Thumb-2. Cortex-M là sự cải tiến của ARM7.

Hình 14. Các sản phẩm dòng vi xử lý Cortex
Dòng Cortex-M từ khi được giới thiệu đã cho ra đời 5 thế hệ vi xử lý được kế
thừa trên 2 kiến trúc là ARMv6-M và ARMv7-M (xem hình)

Hình 15. Các thế hệ dòng vi xử lý Cortex-M

Tìm hiểu giao diện SPI

Page 19


2.2 Tổng quan về bộ vi xử lý Cortex-M4
Bộ vi xử lý ARM Cortex-M4 là thế hệ vi xử lý thứ 2 của dòng Cortex-M dựa
trên kiến trúc ARMv7-M, được giới thiều vào năm 2010. Nó được mở rộng thêm
về tập lệnh và kiến trúc mới.
Cortex-M4 gồm một lõi CPU 32-bit, các thanh ghi 32-bit, đường dẫn dữ liệu nội
bộ 32-bit và giao diện bus 32-bit, cùng một số thành phần khác. Ngoài ra, CortexM4 cũng đã hỗ trợ một số hoạt động liên quan đến dữ liệu 64-bit.


Hình 16. Kiến trúc bộ vi xử lý ARM Cortex-M4
2.3 Lõi Cortex-M4 (CPU Cortex)
Lõi của Cortex-M4 là một CPU RISC 32-bit được thiết kế dựa trên kiến trúc
Harvard (đặc trưng bằng sự tách biệt giữa vùng nhớ chứa dữ liệu và chương trình).
Nó là phiên bản đơn giản hóa từ mô hình lập trình của ARM7/9 nhưng có một tập
lệnh phong phú và tối ưu hơn, hỗ trợ tốt cho các phép toán số nguyên, khả năng
thao tác với bit và đáp ứng thời gian thực tốt hơn.

Tìm hiểu giao diện SPI

Page 20


Hình 17. Lõi ARM7TDMI của Cortex-M4
CPU Cortex-M4 có cấu trúc đường ống 3 đoạn (three-stage pipeline). Với kiến
trúc này thời gian rỗi của một chu kỳ sẽ được hạn chế tối đa nên hiệu xuất tổng thể
của nó được cải thiện rõ rệt.

Hình 18. Kiến trúc đường ống của ARM Cortex-M4
Bình thường Cortex-M4 có thể thực thi hầu hết lệnh trong một chu trình đơn,
nhưng với cấu trúc pipeline này Cortex-M4 có thêm khả năng dự đoán rẽ nhánh
nên lệnh có thể được thực thi nhanh hơn. Tức là nếu với một lệnh thường A đang
được thực thi thì một bên lệnh B khác sẽ được giải mã và một lệnh C khác sẽ được

Tìm hiểu giao diện SPI

Page 21


lấy về bộ nhớ. Còn đối với lệnh rẽ nhánh (if…else chẳng hạn), trong khi lệnh điều

kiện được giải mã ở tầng decode thì bộ xử lý sẽ nạp lệnh dự định rẽ nhánh trong
else, khi lênh rẽ nhánh được thực thi, bộ xử lý sẽ phân tích xem đâu là lệnh tiếp
theo. Nếu lệnh rẽ nhánh được chọn thì nó sẽ được thực thi ngay (vì nó đang ở tầng
decode), còn nếu không thì bộ vi xử lý sẽ thực hiện tiếp lệnh tiếp theo (đã được lấy
ở tầng fetch).
Lõi Cortex-M4 chỉ hỗ trợ tập lệnh Thumb-2. So với kiến trúc tập lệnh ARM
hoặc Thumb thì Thumb-2 tối ưu hơn về hiệu suất và kích thước mã, bao gồm cả bộ
phận phần cứng, nhân chu trình đơn và thao tác bit lĩnh vực.
Ngoài ra, Cortex-M4 còn được tích hợp chế độ ngủ (sleep mode) và tùy chọn
khả năng duy trì trạng thái (optional state rêtntion capabilities) cho phép đạt hiệu
suất cao với mức tiêu thụ điện năng thấp.
2.4 SPI trên STM32
STM32 hỗ trợ 5 loại giao tiếp ngoại vi khác nhau. STM32 có giao diện SPI và
I2C để giao tiếp với các mạch tích hợp khác. Hỗ trợ giao tiếp CAN cho các module,
USB cho giao tiếp với các mạch tích hợp khác, STM cung cấp 2 khối điều khiển
SPI có khả năng chạy ở chế độ song công (full duplex) với tốc độ truyền dữ liệu lên
tới 18MHz. Khối SPI tốc độ cao nằm trên APB2, khối SPI tốc độ thấp nằm trên
APB1. Mỗi khối SPI có hệ thống thanh ghi cấu hình độc lập, dữ liệu truyền có thể
dưới dạng 8-bit hoặc 16-bit, thứ tự hỗ trợ MSB hay LSB. Chúng ta có thể cấu hình
mỗi khối SPI đóng vai trò master hay slave.

Hình 19. Sơ đồ khối SPI

Tìm hiểu giao diện SPI

Page 22


Để hỗ trợ truyền dữ liệu tốc độ cao, mỗi khối SPI có 2 kênh DMA dành cho gửi
và nhận dữ liệu. Thêm vào đó là khối CRC dành cho cả truyền và nhận dữ liệu.

Khối CRC đều có thể hỗ trợ kiểm tra CRC8 và CRC16. Các đặc tính này rất cần
thiết khi sử dụng SPI để giao tiếp với MMC/SD card.

Hình 20. Kết nối giữa SPI và MMC/SD card

Tìm hiểu giao diện SPI

Page 23


CHƯƠNG III: NHẬN XÉT VỀ GIAO DIỆN SPI
3.1 Những ưu điểm của SPI
-

Truyền thông song công.

-

Không giới hạn ở 8-bit word trong trường hợp truyền bit.

-

Lượng dữ liệu đưa vào cao hơn giao thức I2C.

-

Giao tiếp phần cứng đơn giản.

-


Tùy ý lựa chọn size thông tin nội dùng và mục đích.

-

Yêu cầu nguồn tiêu chuẩn thấp hơn I2C mạch ít cồng kềnh.

-

Không có sự điều chỉnh hay các chế độ truyền thất bại liên quan.

-

Slave sử dụng Clock của master và không cần độ chính xác của bộ dao
động (oscillator).

-

Không cần thiết bộ truyền nhận.

-

Nhiều nhất là một dây tín hiệu bus duy nhất trên thiết bị (CS), tất cả dây
khác được chia sẻ.

3.2 Những nhược điểm của SPI
-

Không ấn định địa chỉ, tín hiệu chip select được yêu cầu trên bus chia sẻ.

-


Yêu cầu nhiều dây trên IC hơn I2C.

-

Không có chế độ nhận biết slave.

-

Không có luồng điều khiển phần cứng.

-

Các bus multi-master thì ít và bất tiện, thường sử dụng giới hạn slave đơn.

-

Không có một tiêu chuẩn chính thức, không có sự phê duyệt phù hợp.

-

Chỉ làm việc ở khoảng cách ngắn hơn so với Rs232, Rs485 hay CAN.

Tìm hiểu giao diện SPI

Page 24


KẾT LUẬN
Qua việc hoàn thành bài tập lớn này đã giúp nhóm chúng em hiểu rõ thêm về:

 Cấu trúc, các chức năng và hoạt động của giao tiếp SPI.
 Thế nào là chuẩn giao tiếp SPI.
 Ứng dụng giao tiếp SPI để giải quyết các vấn đề mắc phải trong lập trình nhúng
 Phân tích ưu, nhược điểm của giao tiếp SPI.
Vận dụng kiến thức đồ họa cơ sở được học ở trường, kết hợp với những tài liệu
tham khảo trên mạng và sự hướng dẫn tận tình của thầy giáo TS. Phạm Văn Hà
nhóm chúng em đã hoàn thành bài tập lớn được giao. Với tầm hiểu biết còn hạn
chế nên trong quá trình hoàn thiện không tránh khỏi thiếu sót nên nhóm chúng em
rất mong nhận được sự chỉ dẫn bổ sung góp ý và sự cảm thông sâu sắc của thầy để
bài tập lớn của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!
Hà Nội, ngày 31 tháng 05 năm 2016

Tìm hiểu giao diện SPI

Page 25


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×