1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tim hieu giao dien spi

26 1,8K 9

Đ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 26
Dung lượng 792,5 KB

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

Nội dung

Luận văn đồ án môn học lập trình nhúng, nhằm giúp cho các bạn sinh viên tìm hiểu về môn Nhúng, giúp các bạn vượt qua môn học 1 cách dễ dàng, tài liệu bao gồm 2 phần, trong đó phần 2 gồm 3 chương chính, phần 1 giới thiệu về đề tài, phần 2 là những nội dung chính mà bạn cần quan tâm

Trang 1

v

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

Trang 2

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 trongnhiều lĩnh vực như: điều khiển, tự động hóa, đo đạc, truyền thông… So với cácphươ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 ứngnhanh, 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ôngnghiệ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 đúngthờ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 đượcnhiề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ànthiện thêm đề tài này

Chúng em xin chân thành cảm ơn!

Trang 3

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

Trang 4

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

Trang 5

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ảnxuấ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ủacá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ôngnghệ, 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 trongmỗ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 địnhchọ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

Trang 6

Đây là kiểu truyền thông Master-Slave, trong đó có một chíp Master điều phốiquá trình truyền thông và các chip Slaves được điều khiển bởi Master vì thế truyềnthô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 SPIngà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ếptrao đổ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, GraphicLCD…

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

Trang 7

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ốitrực tiếp với nhau.

Hình 1 Giao diện SPI

Trang 8

• 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

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

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àynếu muốn truyền/nhận dữ liệucủa Slave

Master: MOSISlave: SDO hoặc

SO

Đầu ra

Đầu ra dữ liệu nối tiếp+ Với Master tín hiệu có tênMaster Out Slave In

+ Với Slave tín hiệu có tên làSlave Data Out

Master: MISOSlave:SDI hoặc SI Đầu ra

Đầu vào dữ liệu nối tiếp+ Với Master tín hiệu có tênMaster 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ởimodule SPI trong AVR, bên trái là chip Master và bên phải là Slave

Trang 9

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 SSxuố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 haithô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ếuCPOL = 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

Trang 10

+ 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ớithiế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ônglà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ếukhô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 Slavenào được truy cập Tín hiệu này phải được sử dụng khi có nhiều hơn mộtSlave 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àytrong 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ìnhtrao đổ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ăngcườ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

Trang 11

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ấptrong 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ệuSCK ở mức cao trong quá trình nghỉ và chuyển sang mức thấp khi truyền dữliệu:

Trang 12

Hình 5 Giản đồ thời gian ở Mode 1

Trang 13

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ộtbit 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ịchcủa nó ngược trở về Master thông qua đường tí hiệu MISO (SDO) Bằng cáchnà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ấtnhanh 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ấpxung 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

Trang 14

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ácSlave Chân SDO của Slave trước nối đến SDI của Slave sau Chân MOSI củaMaster nối đến SDI của Slave đầu tiên trong chuỗi và MISO được nối đến SDOcủ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ừ Slavecuối cùng được minh họa với các Slave như sau:

Trang 15

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ủahai 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

Trang 16

không tích cực Bên cạnh đó, trong mạch trên, ngoài txd (chính là tín hiệuMOSI) 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ựctiếp với nhau giao tiếp qua 5 đường

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

Trang 17

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

Cores designed by ARM

Holdings Cortex profile

Cortex-M0+, ARM Cortex-M1

Microcontroller

Cortex-M7

Microcontroller

Cortex-R5, ARM Cortex-R7

Real time

Cortex-A7, ARM Cortex-A8,ARM Cortex-A9, ARMCortex-A12, ARM Cortex-A15, ARM Cortex-A17

Application

Cortex-A57

Application

Trang 18

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ềukhiể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ốngcá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óacá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

Trang 19

- 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àychỉ 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

Ngày đăng: 13/12/2016, 14:47

TỪ KHÓA LIÊN QUAN

w