1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Nghiên cứu ứng dụng vi điều khển ARMSTM32 trong đo lường và điều khiển. Trường DHCN Hà Nôi.

78 553 5

Đ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 78
Dung lượng 4,16 MB

Nội dung

Lý do chọn đề tài Các hệ thống nhúng đang được phát triển trên thế giới ngày càng đòi hỏi sử dụng công nghệ cao, không chỉ đơn giản như các hệ thống điều khiển đèn giao thông, điều khiển các biển quảng cáo hiển thị chữ trên LCD mà yêu cầu quá trình xử lý và điều khiển ngày càng phức tạp hơn, như điều khiển các lò phản ứng, các robot di động, truyền thông đa phương tiện, xử lý âm thanh hình ảnh trên các thiết bị di động cần tay. Các hệ thống nhúng này cần sử dụng các loại vi điều khiển tiên tiến với dung lượng bộ nhớ lớn hơn, với độ rộng bít xử lý từ 16 đến 32 bít nhằm giúp cho quá trình xử lý được sinh động và mềm dẻo hơn các loại vi điều khiển thông dụng 8 bít trước đây. Ở nước ta các thiết bị nhúng chủ yếu nhập khẩu từ nước ngoài, chúng ta chưa làm chủ và tự sản xuất được những loại thiết bị này. Vì vậy với đề tài “Nghiên cứu ứng dụng vi điều khển ARMSTM32 trong đo lường và điều khiển.” sẽ góp phần thúc đẩy việc nghiên cứu và phát triển cho các hệ thống nhúng hiện đại trong tương lai.ARM là vi xử lý sẽ thống trị thị trường thế giới trong một hai năm nữa. Sự tiến bộ thần tốc này nhờ vào những tính năng ưu việt như : an toàn, bảo mật, đặc biệt ít tiêu thụ điện năng nhưng vẫn cho hiệu năng tốt.Dựa vào những nhu cầu tìm hiểu về tính năng và đặc điểm ưu việt của dòng chíp ARM, ý tưởng nghiên cứu và ứng dụng vi điều khiển ARM STM32 cụ thể ở đây là STM32 F411 có lõi xử lý là ARMv7E.Nội dung của luận vănĐề tài : Nghiên cứu ứng dụng vi điều khển ARMSTM32 trong đo lường và điều khiển.Giới thiệu về lịch sử phát triển và ứng dụng của ARMKiến trúc phần cứng của ARMGiới thiệu về công cụ lập trình phát triển ARMLập trình với các tài nguyên của vi điều khiển ARMSTM32.

Trang 1

MỤC LỤC

DANH MỤC HÌNH VẼ 2

DANH MỤC BẢNG BIỂU 3

DANH MỤC CÁC TỪ VIẾT TẮT 4

MỞ ĐẦU 5

CHƯƠNG 1 CẤU TRÚC VI ĐIỀU KHIỂN ARM 6

1.1 Lịch sử hình thành và phát triển vi điều khiển ARM 6

1.2 Cấu trúc của ARM 9

1.3 Phân loại 14

1.4 Ứng dụng ARM 17

CHƯƠNG 2 NGOẠI VI CỦA VI ĐIỀU KHIỂN ARM STM32F411VE 19

2.1 Giới thiệu về dòng vi điều khiển STM32 19

2.2 Tổ chức bộ nhớ 23

2.3 Khối tạo dao dộng 25

2.4 Giới thiệu GPIO 27

2.5 Ngắt 31

2.6 TIMER 33

2.7 PWM 35

2.8 ADC 37

2.9 I2C 40

2.10 USART 43

CHƯƠNG 3 LẬP TRÌNH ỨNG DỤNG VỚI NGOẠI VI 47

3.1 Giới thiệu kit STM32F411VE(Discovery) 47

3.2 Cách tạo một project trong Keilc V5 49

3.3 Lập trình với GPIO 50

3.4 Lập trình với Ngắt 54

3.5 Lập trình với TIMER 56

3.6 Lập trình với PWM 60

3.7 Lập trình với ADC 64

3.8 Lập trình với I2C 67

3.9 Lập trình với USART 71

KẾT LUẬN 75

TÀI LIỆU THAM KHẢO 77

Trang 2

Danh mục hình vẽ

Hình 1 Kiến trúc đường ống ba tầng 13

Hình 2 Kiến trúc đường ống ba tầng trong tập lệnh có nhiều chu kỳ máy 14

Hình 3 Kiến trúc STM32 nhánh Performance và Access 19

Hình 4 Dưới đậy là sơ đồ khối ARM STM32F411VE 22

Hình 5 Kiến trúc hệ thống 24

Hình 6 Khối Tạo Dao Động 26

Hình 7 Chân xung kết nối nội ngoại 27

Hình 9 Sơ đồ khối của ngắt ngoài 32

Hình 10 Ngắt ngoài của chip STM32F411VE 32

Hình 11 : Hình ảnh xung PWm 35

Hình 12 Sơ đồ khối của ADC 38

Hình 13 Sơ đồ khối của giao tiếp I2C 40

Hình 14 Sơ đồ khối của bộ I2C 41

Hình 15 Sơ đồ khối USART 44

Hình 16 Sơ đồ khối kit STM32F411 48

Hình 17 Màm hình làm việc Keilc v5 49

Hình 18 Giao diện màn hình làm việc 50

Hình 19 Chọn tạo một dự án mới 50

Hình 20 Giao diện chọn chíp 51

Hình 21 Giao diện chíp và chân I/O 51

Hình 22 Sơ đồ xung của STM32F411 52

Hình 23 Cấu hình Chân vào ra 52

Hình 24 Giao diện cấu hình sự án 53

Hình 25 Cấu hình chân cho Ngắt 54

Hình 26 Cấu hình chọn ngắt ở line0 55

Hình 27 Cấu hình chân TIM 56

Hình 28 Điền thông số cho TIM 57

Hình 29 Cấu hình chân cho PWM 60

Hình 30 Cài thông số cho chân LED 61

Hình 31 Điền thông số cho xung PWm 61

Hình 32 Cấu hình chân ADC 64

Hình 33 Cài thông số cho ADC 65

Hình 34 Cấu hình chân cho I2C 67

Hình 35 Thông số cho I2C 68

Hình 36 Chọn ngắt cho i2C 68

Hình 37 Chọn DMA cho I2C 69

Hình 38 Cấu hình chân cho USART 72

Hình 39 Cấu hình tham số cho USART 1 72

Trang 3

Danh mục bảng Biểu Bảng 1: Đ c tính c a m t vài máy CISCặ ủ ộ 12Bảng 2: Đặc tính của ba mẫu đầu tiên máy RISC 14Bảng 3 Bảng mức độ ưu tiên ngắt NVIC 36

Trang 4

Danh mục các từ viết tắt

ADC Analog to Digital Converter Bộ chuyển đổi tương tự sang số

CMSIS The Cortex Microcontroller Chuẩn giao tiếp phần mềm vi điều khiển

Software Interface Standard CortexDMA Direct Memory Access Sự truy cập bộ nhớ trực tiếp

DSP Digital Signal Processors Bộ xử lý tín hiệu số

DRAM Dynamic Random Access Bộ nhớ truy cập ngẫu nhiên động

MemoryEEPROM Electrically Erasable Bộ nhớ chỉ đọc có thể xóa được bằng

Programmable Read-Only điệnMemory

EPROM Erasable Programmable Read- Bộ nhớ chỉ để đọc có khả năng lập trình

GIPO General Purpose Đầu vào hoặc ra đa mục đích

Input/OutputCommunicationsPWM Pulse Width Modulation Bộ điều chế độ rộng xung

RAM Random Access Memory Bộ nhớ truy nhập ngẫu nhiên

SD Card Secure Digital Card Thẻ nhớ dữ liệu số

SPI Serial Peripheral Interface Giao tiếp ngoại vi nối tiếp

TIC Test Interface Controller Bộ giao tiếp kiểm thử

UART Universal Asynchronous Bộ thu/phát không đồng bộ đa năng

Receiver/Transmitter

Trang 5

MỞ ĐẦU

Lý do chọn đề tài

Các hệ thống nhúng đang được phát triển trên thế giới ngày càng đòi hỏi sử dụngcông nghệ cao, không chỉ đơn giản như các hệ thống điều khiển đèn giao thông, điềukhiển các biển quảng cáo hiển thị chữ trên LCD mà yêu cầu quá trình xử lý và điềukhiển ngày càng phức tạp hơn, như điều khiển các lò phản ứng, các robot di động,truyền thông đa phương tiện, xử lý âm thanh hình ảnh trên các thiết bị di động cần tay.Các hệ thống nhúng này cần sử dụng các loại vi điều khiển tiên tiến với dung lượng bộnhớ lớn hơn, với độ rộng bít xử lý từ 16 đến 32 bít nhằm giúp cho quá trình xử lý đượcsinh động và mềm dẻo hơn các loại vi điều khiển thông dụng 8 bít trước đây Ở nước

ta các thiết bị nhúng chủ yếu nhập khẩu từ nước ngoài, chúng ta chưa làm chủ và tựsản xuất được những loại thiết bị này Vì vậy với đề tài “Nghiên cứu ứng dụng vi điềukhển ARM-STM32 trong đo lường và điều khiển.” sẽ góp phần thúc đẩy việc nghiêncứu và phát triển cho các hệ thống nhúng hiện đại trong tương lai

ARM là vi xử lý sẽ thống trị thị trường thế giới trong một hai năm nữa Sự tiến

bộ thần tốc này nhờ vào những tính năng ưu việt như : an toàn, bảo mật, đặc biệt ít tiêuthụ điện năng nhưng vẫn cho hiệu năng tốt

Dựa vào những nhu cầu tìm hiểu về tính năng và đặc điểm ưu việt của dòng chípARM, ý tưởng nghiên cứu và ứng dụng vi điều khiển ARM STM32 cụ thể ở đây làSTM32 F411 có lõi xử lý là ARMv7E

Nội dung của luận văn

Đề tài : Nghiên cứu ứng dụng vi điều khển ARM-STM32 trong đo lường và điềukhiển

- Giới thiệu về lịch sử phát triển và ứng dụng của ARM

- Kiến trúc phần cứng của ARM

- Giới thiệu về công cụ lập trình phát triển ARM

- Lập trình với các tài nguyên của vi điều khiển ARM-STM32

Chương 1 CẤU TRÚC VI ĐIỀU KHIỂN ARM 1.1 Lịch sử hình thành và phát triển vi điều khiển ARM

Trang 6

Cuối năm 1978, Hermann Hauser và Chris Curry đã thành lập Công ty AcornComputers, Ltd ở Cambridge - Anh quốc hãng này nổi tiếng với họ vi xử lý kiến trúcarm được dùng khá phổ biến trong các thiết bị nhúng và các ứng dụng cầm tay nhờvào đặc tính ưu việt là ít tiêu thụ điện năng hầu hết máy điện thoại di động vàmáy pda hiện nay đều có cpu theo kiến trúc arm.

Sau bước khởi đầu nghiên cứu và phát triển, Hauser và Curry đã chọn một bộ xử

lý công nghệ MOS 6502 cho dự án - một trong những bộ vi xử lý 8 bít giá rẻ nhất thịtrường tại thời điểm đó trong khi các tính năng như dễ lập trình, tốc độ xử lý, độ tincậy tương đương với các bộ vi xử lý khác Ngoài ra, 6502 cũng nổi tiếng với khả năng

xử lý ngắt tốc độ chậm của nó, làm nó dễ dàng xử lý các sự kiện ngắt từ bên ngoài

6502 có thiết kế đơn giản, chỉ có 3.510 transistor (so với 6.500 transistor trong vi xử lý

8085, 8.500 transistor trong Z80) 6502 xuất hiện trong nhiều thương hiệu máy tínhnổi tiếng trong lịch sử máy tính như Apple II, Atari 2600 và Commodore VIC-20 Sau đó, Arcon tiếp tục thắng các hợp đồng và tiếp tục sử dụng 6502 cho các dự

án của mình Với kinh nghiệm về vi xử lý 6502, Acorn đã phát triển nên Acorn System

1 - được thiết kế bởi Sophie Ilson dựa trên 6502 Nó bao gồm hai bảng mạch: bảngphía trên chứa các nút bấm hexa và một màn hình 7 thanh nhỏ, hiển thị dữ liệu, bảngmạch dưới chứa bộ vi xử lý và các mạch điện hỗ trợ Một bộ phần mềm giám sát đơngiản trong ROM cho phép soạn thảo bộ nhớ và phần mềm được lưu trữ trong các băngcassette

Vào tháng 4 năm 1985 Nhóm thiết kế hoàn thành việc phát triển mẫu gọi

là ARM1, Chip ARM1 được xây dựng từ các khối chức năng, mỗi khối có một mục

đích khác nhau Các thanh ghi lưu trữ dữ liệu, ALU (đơn vị logic số học) thực hiện sốhọc đơn giản, bộ giải mã lệnh xác định cách xử lý từng lệnh, v.v So với hầu hết các bộ

xử lý, bố cục của chip rất đơn giản, với mỗi khối chức năng có thể nhìn thấy rõ ràng.(So sánh, cách bố trí các chip như 6502 hoặc Z-80 được tối ưu hóa bằng tay để tránhmọi không gian bị lãng phí Trong các chip này, các khối chức năng được đặt cạnhnhau, khiến việc lấy ra các mảnh khó hơn.)

Năm 1986, nhóm hoàn thành sản phẩm ‘’thực’’ gọi là ARM2 ARM2 có tuyến

dữ liệu 32-bit, không gian địa chỉ 26-bit tức cho phép quản lý đến 64 Mbyte địa chỉ và

16 thanh ghi 32-bit Một trong những thanh ghi này đóng vai trò là bộ đếm chương

Trang 7

trình với 6 bit cao nhất và 2 bit thấp nhất lưu giữ các cờ trạng thái của bộ vi xử lý Cóthể nói ARM2 là bộ vi xử lý 32-bit khả dụng đơn giản nhất trên thế giới, với chỉ gồm30.000 transistor (so với bộ vi xử lý lâu hơn bốn năm của Motorola là 68000 vớikhoảng 68.000 transistor)

Thế hệ sau, nâng cấp bộ xử lý IFEL ARM3 cho Acorn Archimedes

Bản nâng cấp bộ xử lý IFEL ARM3 thay thế CPU ARM2 được cắm trong dảimáy tính Archimedes chạy ở tốc độ 8 MHz Một bảng con được gắn vào ổ cắm ARM2của Archimedes có CPU ARM3 chạy ở tốc độ 25 MHz cung cấp thông lượng MIPStăng gần gấp ba lần Việc tăng hiệu suất đạt được bằng cách sử dụng bộ đệm 4KB trên

bo m ch và kh năng c a ARM3 đ ch y t c đ xung nh p nhanh h n.ạ ả ủ ể ạ ở ố ộ ị ơ

Kết quả sự hợp tác này là ARM6 Mẫu đầu tiên được công bố vào năm 1991 và

Apple đã sử dụng bộ vi xử lý ARM 610 dựa trên ARM6 làm cơ sở cho PDA hiệuApple Newton Vào năm 1994, Acorn dùng ARM 610 làm CPU trong các máy vitính Risc PC của họ

Thế hệ thành công nhất có lẽ là ARM7TDMI với hàng trăm triệu lõi được sửdụng trong các máy điện thoại di động, hệ thống video game cầm tay, vàSega Dreamcast

Hãng DEC cũng bán giấy phép về lõi cấu trúc ARM (đôi khi chúng ta có thể bịnhầm lẫn vì họ cũng sản xuất ra DEC Alpha) và sản xuất ra thế hệ Strong ARM Hoạtđộng ở tần số 233 MHz mà CPU này chỉ tiêu tốn khoảng 1 watt công suất (những đờisau còn tiêu tốn ít công suất hơn nữa) Sau những kiện tụng, Intel cũng được chấpnhận sản xuất ARM và Intel đã nắm lấy cơ hội này để bổ sung vào thế hệ giàcỗi i960 của họ bằng Strong ARM Từ đó, Intel đã phát triển cho chính họ một sảnphẩm chức năng cao gọi tên là Xscale

1.1.1 Vi xử lý ARM.

 Vi xử lý ARM đầu tiên ra đời năm 1985 với thiết kế RISC viết tắt của reducedinstruction set computer máy tính có tập lệnh rút gọn, các vi xử lý ARM được sử dụngchủ yếu trong các điện thoại di động

1.1.2 Vi điều khiển ARM.

Trang 8

Cấu trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc

vi xử lý 32-bit kiểu RISC được sử dụng rộng rãi trong các thiết kế nhúng Được pháttriển lần đầu trong một dự án của công ty máy tính Acorn Do có đặc điểm tiết kiệmnăng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động, màvới các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọnghàng đầu

Ngày nay, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARMtrở thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới Một nhánh nổi tiếngcủa họ ARM là các vi xử lý Xscale của Intel Giới thiệu về vi điều khiển LPC2148: Làdòng vi điều khiển ARM được sản xuất bởi hãng Philips Tính năng:

- Vi điều khiển 16/32-bit ARM7TDMI-S

- Khả năng thiết lập chế độ ưu tiên và định địa chỉ cho ngắt

- 45 chân GPIO vào ra đa dụng

- 9 chân ngắt ngoài (tích cực cạnh hoặc tích cực mức)

- CPU clock đạt tối đa 60MHz thông qua bộ PLL lập trình được

- Xung PLCK hoạt động độc lập

On-chip Flash Memory: LPC 2148 có 512K bộ nhớ Flash có thể được dùng đểlưu trữ code và dữ liệu Trong khi thực thi ứng dụng, vẫn có thể xóa hoặc lập trìnhFlash thông qua IAP (In Application Programming) Khi đó trình loader trên chipđược sử dụng, bộ nhớ trống còn lại là 500K Bộ nhớ Flash có thể ghi xóa được ít nhất

100000 lần, lưu trữ dữ liệu đến 20 năm On-chip Static RAM: LPC 2148 có 32K RAMtĩnh, có thể được truy xuất theo đơn vị byte, half word & word Bộ điều khiển SRAM

sử dụng phương thức write-back buffer để ngăn chặn tình trạng treo CPU khi có thaotác ghi Bộ đệm luôn giữ dữ liệu cuối cùng từ chương trình gửi tới bộ nhớ Dữ liệu chỉđược ghi vào SRAM khi có 1 thao tác ghi khác từ chương trình Lập trình cho ARM:

Trang 9

Ngôn ngữ lập trình chính cho ARM hiện nay là ngôn ngữ C Các trình biên dịch choARM thường được dùng:

- Keil ARM

- IAR

- HTPICC for ARM

- ImageCraft ICCV7 for ARM

1.2 Cấu trúc của ARM

1.2.1 Kiến trúc thiết kế RISC của ARM

ARM xây dựng bộ vi xử lý theo kiến trúc RISC những năm 1980 để sử dụngtrong các máy tính cá nhân của mình Những kiến trúc RISC đầu tiên: của IBM (IBM801) của Berkeley (RISC1 của Patterson) và của Stanford (MIPS của Hennessy)

CISC - Complex Instruction Set Computer

Bảng 1: Đ c tính c a m t vài máy CISCặ ủ ộ

kiến trúc với tập lệnh phức tạp CISC (Complex Instruction Set Computer) đượcnghĩ ra từ những năm 1960 Vào thời kỳ này, người ta nhận thấy các chương trình dịchkhó dùng các thanh ghi, rằng các vi lệnh được thực hiện nhanh hơn các lệnh và cầnthiết phải làm giảm độ dài các chương trình Các đặc tính nầy khiến người ta ưu tiênchọn các kiểu ô nhớ - ô nhớ và ô nhớ - thanh ghi, với những lệnh phức tạp và dùngnhiều kiểu định vị Điều này dẫn tới việc các lệnh có chiều dài thay đổi và như thế thìdùng bộ điều khiển vi chương trình là hiệu quả nhất Bảng 1 cho các đặc tính của vàimáy CISC tiêu biểu Ta nhận thấy cả ba máy đều có điểm chung là có nhiều lệnh, các

Trang 10

lệnh có chiều dài thay đổi Nhiều cách thực hiện lệnh và nhiều vi chương trình đượcdùng.

Ưu điểm:

- Chương trình ngắn hơn so với kiến trúc RISC

- Số lệnh để thực hiện chương trình ít hơn

- Khả năng thâm nhập bộ nhớ dễ dàng hơn

- Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập lệnhphức tạp Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi động từ của ngônngữ COBOL

Trang 11

(không có ô nhớ vi chương trình), có chiều dài các lệnh cố định (32 bits), có một kiểuthi hành lệnh (kiểu thanh ghi - thanh ghi) và chỉ có một số ít lệnh.

Bảng 2: Đặc tính của ba mẫu đầu tiên máy RISC

Tóm lại, ta có thể định nghĩa mạch xử lý RISC bởi các tính chất sau:

- Có một số ít lệnh (thông thường dưới 100 lệnh )

- Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vịgián tiếp thông qua một thanh ghi)

- Có một số ít dạng lệnh (một hoặc hai)

- Các lệnh đều có cùng chiều dài

- Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ

- Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các vilệnh làm cho thời gian thực hiện lệnh kéo dài

- Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong

- Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳmáy

Bộ xử lý RISC có các ưu điểm sau :

- Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử lýCISC) xuống còn 10% (cho các bộ xử lý RISC) Như vậy có thể tích hợp thêm vàobên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ cache

Trang 12

- Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi(ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả(các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng).

- Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chiphí thiết kế

- Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặpthường trong bộ điều khiển

- Trước những điều lợi không chối cãi được, kiến trúc RISC có một số bất lợi

- Các chương trình dài ra so với chương trình viết cho bộ xử lý CISC Điều này docác nguyên nhân sau :

- Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc và ghi vào bộnhớ Do đó ta buộc phải dùng nhiều lệnh để làm một công việc nhất định

- Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị

- Tập lệnh có ít lệnh nên các lệnh không có sẵn phải được thay thế bằng một chuỗilệnh của bộ xử lý RISC

- Các chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít lựa chọn đểdiễn dịch các cấu trúc của chương trình gốc Sự cứng nhắc của kỹ thuật ống dẫncũng gây khó khăn

- Có ít lệnh trợ giúp cho ngôn ngữ cấp cao

Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập lệnhphức tạp Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi động từ của ngônngữ COBOL

Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một bộ xử lý RISC nền

và nhiều toán tử chuyên dùng

1.2.2 Kiến trúc đường ống

Kiến trúc đường ống là kiến trúc cơ bản trong vi điều khiển ARM, hình 1.7 mô tảkiến trúc đường ống ba tầng để minh họa các bước thực thi lệnh: fetch – decode –excute (nhận lệnh – giải mã – thực thi)

Trang 13

Trong kiến trúc đường ống, khi một lệnh đang được thực thi thì lệnh thứ hai đangđược giải mã và lệnh thứ ba bắt đầu được nạp từ bộ nhớ Với kỹ thuật này thì tốc độ

xử lý tăng lên rất nhiều trong một chu kỳ máy

Trong hình 1.7 cho ta thấy được một chuỗi ba lệnh được nạp, giải mã, và thực thibởi bộ xử lý Mỗi lệnh có một chu trình duy nhất để hoàn thành sau khi đường ốngđược lấp đầy Tập lệnh được đặt vào các đường ống liên tục Trong chu kỳ đầu tiên lõi

xử lý nạp lệnh ADD (cộng) từ bộ nhớ Trong chu kỳ thứ hai lõi tìm nạp các lệnh SUB(trừ) và giải mã lệnh ADD Trong chu kỳ thứ ba, cả hai lệnh SUB và ADD được dichuyển dọc theo đường ống Lệnh ADD được thực thi, lệnh SUB được giải mã, vàlệnh CMP (so sánh) được nạp Quá trình này được gọi là lấp đầy đường ống Kiến trúcđường ống cho phép lõi xử lý thực hiện lệnh trong mỗi chu kỳ

Khi tăng chiều dài đường ống, số lượng công việc thực hiện ở từng công đoạngiảm, điều này cho phép bộ xử lý phải đạt được đến một tần số hoạt động cao hơn đểtăng hiệu suất thực thi Thời gian trễ của hệ thống cũng sẽ tăng lên bởi vì có nhiều chu

kỳ hơn để lấp đầy đường ống trước khi lõi xử lý có thể thực thi một lệnh Chiều dàiđường ống tăng lên cũng có nghĩa là dữ liệu cũng có thể sẽ phải phụ thuộc giữa cáccông đoạn nhất định

ARM giới thiệu và đưa ra kiến trúc đường ống có năm tác vụ, với vùng nhớ dữliệu và chương trình riêng biệt Từ kiến trúc lệnh có ba tác vụ được chia nhỏ lại thànhnăm tác vụ cũng làm cho mỗi chu kỳ xung nhịp sẽ thực hiện một công việc đơn giảnhơn ở mỗi công đoạn, cho phép có thể tăng chu kỳ xung nhịp của hệ thống

Hình 1 Kiến trúc đường ống ba tầng.

Trang 14

Sự tách rời bộ nhớ chương trình và bộ nhớ dữ liệu cũng cho phép giảm đáng kể tàinguyên chiếm của mỗi lệnh trong một chu kỳ máy.

Thời gian để bộ xử lý thực thi một chương trình được tính bởi công thức:

Tpro = N inst xCPI

f clk

Trong đó:

CPI là số xung nhịp trung bình cần cho mỗi lệnh;

Ninst là số lệnh thực thi một chương trình (cố định);

fclk là tần số xung nhịp

Với công thức trên thì có hai cách để giảm thời gian thực thi một chương trình:Tăng tần số xung nhịp: điều này đòi hỏi trạng thái của mỗi nhiệm vụ trong dòngchảy lệnh đơn giản, và do đó số tác vụ sẽ tăng thêm

Giảm CPI: điều này đòi hỏi mỗi lệnh cần nhiều dòng chảy lệnh hơn với tác vụkhông đổi, hoặc các tác vụ cần đơn giản hơn, hoặc kết hợp cả hai lại với nhau

1.3 Phân loại

Kiến trúc Biến thể CTy sản xuất Kiến trúc vĩ mô (lõi)

Hình 2 Kiến trúc đường ống ba tầng trong tập lệnh có nhiều chu kỳ máy.

Trang 15

ARMv1 Acorn ARM1

ARMv6

ARMv6-M ARM Cortex-M0, Cortex-M1

ARMv7 ARMv7-A ARM Cortex-A5, Cortex-A7, Cortex-A8, Cortex-A9, 

Cortex-A12, Cortex-A15, Cortex-A17 Apple Swift

Marvell Sheeva PJ4 Qualcomm Scorpion, Krait

Trang 16

ARMv7-R ARM Cortex-R4, Cortex-R5, Cortex-R7

ARMv7-M ARM Cortex-M3

Phytium Xiaomi Samsung M1, M2, M3 Qualcomm Kryo, Falkor

ARMv8.1 ARMv8.1-A Cavium Vulcan

ARMv8.2

Cortex-A55, Cortex-A75, Cortex-A76 Neoverse N1, Neoverse E1

Ampere Quicksilver

Trang 17

Nvidia Carmel Samsung M4, M5

ARMv8.3 ARMv8.3-A Qualcomm Saphira

1.4 Ứng dụng ARM

Thẻ nhớ (Flash Cards & Keys):

Những sản phẩm thẻ nhớ (flash cards) đòi hỏi chi phí rất thấp, tiêu thụ điệnnăng thấp và độ bảo mật cao. Đa số các lõi CPU của ARM có thích thước nhỏ, hiệuquả sử dụng cao, mật độ mã (code) tối ưu, và cung cấp một một giải pháp hấp dẫn nhấtcho thị trường này Khi kết hợp ARM với Discretix 'CryptoFlash ™ bảo mật IP cácnhà thiết kế đạt được một giải pháp nhỏ gọn, nhanh, mạnh mẽ và đã được chứng minhcho nhu cầu bảo mật của họ

Hệ thống mạng trong nhà (Home Networking):

Có nhiều chipset dùng cấu trúc ARM đang được sử dụng trong một loạt các thiết

bị thông dụng hiện có và các thiết bị SOHO, như routers, cable modems, DSL modemsand gateways Ngoài ra, các ARM Partners còn cung cấp một số phần mềm ứng dụng

để tăng tốc độ phát triển các giải pháp đầu cuối

Mạng lưu trữ (Storage Networking:)

Các thiết bị sử dụng ARM có thể được tìm thấy trong một loạt các thiết bị hạtầng cơ sở lưu trữ mạng, từ các thiết bị tiêu dung mới NAS đến các ứng dụng cao cấpnhư Fibre Channel và iSCSI Bộ vi xử lý ARM được trang bị cơ cấu nạp tắt của bộ mãiSCSI và HBAs (Host Bus Adapter), trong khi sự dẩn đầu các giải pháp PHY truyềnnối tiếp tốc độ cao đang cung cấp các kết nối tốc độ cao Ngày nay, các chip cần phảitruyền được dữ liệu trong các mạng tốc độ cực cao Thị phần của HBA trang bị ARMchiếm khoảng 50% thị trường kênh sợi HBA (fibre channel HBA)

VoIP

ARM hỗ trợ và xử lý VoIP đáp ứng được dải phổ rộng của các loại sản phẩm, từcác line card trong các thiết bị hạ tầng cơ sở đến điện thoại để bàn Các lõi vi xử lý đa

Trang 18

dạng của ARM thì lý tưởng để đáp ứng dược các nhu cầu nhiệm vụ rộng lớn của thịtrường này Đối với các sản phẩm VoIP công nghệ cao, bao gồm các cổng cơ sở bằnggiọng nói, có nhiều loại chipset đang kết nối lõi ARM với các công cụ xử lý tín hiệu sốhoặc một bộ xử lý DSP để cho phép nhân số lượng kênh thoại lên nhiều lần

Mạng không dây (Wireless Networking):

Không gian kết nối mạng không dây đòi hỏi chi phí cực thấp, thiết bị tiêu thụđiện năng thấp để làm tăng khả năng đáp ứng Trong khi các nhà sản xuất chip WLANliên tục đổi mới về tính năng và chất lượng, thì các nhà sản xuất chip WiMax và UWBluôn tìm cách giảm giá nhanh chóng thông qua việc sử dụng hiệu quả kích thướcchip và đổi mới cấu trúc ARM đang dẩn đầu với giải pháp đỉnh cao 802.11, và đangcộng tác với UWB, WiMax và các nhà cung cấp giải pháp 802.11n để làm giảm mứctiêu thụ điện năng và tiết kiệm chi phí cần thiết cho các giải pháp không dây trongtương lai

Trang 19

Chương 2 NGOẠI VI CỦA VI ĐIỀU KHIỂN ARM STM32F411VE 2.1 Giới thiệu về dòng vi điều khiển STM32

STM32 là vi điều khiển do hãng ST Microelectronic dựa trên nền tảng lõi ARMCortex-M4 thế hệ mới do hãng ARM thiết kế Lõi ARM Cortex-M4 là sự cải tiến từ lõiARMv7E-M truyền thống từng mang lại thành công vang dội cho công ty ARM

ST đã đưa ra thị trường 4 dòng vi điều khiển dựa trên ARM7 và ARM9, nhưngSTM32 là một bước tiến quan trọng trên đường cong chi phí và hiệu suất(price/performance), giá chỉ gần 1 Euro với số lượng lớn, STM32 là sự thách thức thật sựvới các vi điều khiển 8 và 16-bit truyền thống STM32 đầu tiên gồm 14 biến thể khácnhau, được phân thành hai dòng: dòng Performance có tần số hoạt động của CPU lên tới100Mhz và dòng Access có tần số hoạt động lên tới 50Mhz Các biến thể STM32 tronghai nhóm này tương thích hoàn toàn về cách bố trí chân (pin) và phần mềm, đồng thờikích thước bộ nhớ FLASH ROM có thể lên tới 512K và 128K SRAM

Hình 3 Kiến trúc STM32 nhánh Performance và Access

Sự tinh vi

Các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộchuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC

Bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt

độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi Mỗi bộ định thời có 4 khối capture

Trang 20

compare (dùng để bắt sự kiện với tính năng input capture và tạo dạng sóng ở ngõ ra vớioutput compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo ramột mảng các định thời tinh vi hơn Một bộ định thời cao cấp chuyên hỗ trợ điều khiểnđộng cơ, với 6 đầu ra PWM với dead time (khoảng thời gian được chèn vào giữa hai đầutín hiệu xuất PWM bù nhau trong điều khiển mạch cầu H) lập trình được và một đườngbreak input (khi phát hiện điều kiện dừng khẩn cấp) sẽ buộc tín hiệu PWM sang một trạngthái an toàn đã được cài sẵn Ngoại vi nối tiếp SPI có một khối kiểm tổng (CRC) bằngphần cứng cho 8 và 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD hoặc MMC.

STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access) Mỗi kênh cóthể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi

đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit Mỗi ngoại vi cóthể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệunhư yêu cầu Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểuhoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và cáckênh DMA Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự độngđiều khiển các luồng dữ liệu bên trong vi điều khiển

STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao Nó có thểhoạt động ở điện áp 2V, chạy ở tần số 50MHz và dòng tiêu thụ chỉ có 36mA với tất cả cáckhối bên trong vi điều khiển đều được hoạt động Kết hợp với các chế độ tiết kiệm nănglượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby

Sự an toàn

Ngày nay các ứng dụng hiện đại thường phải hoạt động trong môi trường khắc khe,đòi hỏi tính an toàn cao, cũng như đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vitinh vi Để đáp ứng các yêu cầu khắc khe đó, STM32 cung cấp một số tính năng phầncứng hỗ trợ các ứng dụng một cách tốt nhất Chúng bao gồm một bộ phát hiện điện ápthấp, một hệ thống bảo vệ xung Clock và hai bộ Watchdogs Bộ đầu tiên là mộtWatchdog cửa sổ (windowed watchdog) Watchdog này phải được làm tươi trong mộtkhung thời gian xác định Nếu nhấn nó quá sớm, hoặc quá muộn, thì Watchdog sẽ kíchhoạt Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên

Trang 21

ngoài tách biệt với xung nhịp hệ thống chính Hệ thống bảo vệ xung nhịp có thể phát hiệnlỗi của bộ dao động chính bên ngoài (thường là thạch anh) và tự động chuyển sang dùng

bộ dao động nội RC 8MHz

Tính bảo mật

Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông quacổng Debug Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệchống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt Hơn nữa bảo

vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash STM32 cũng có mộtđồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin.Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sựkiện ngắt khi có sự thay đổi trạng thái ở đầu vào này Ngoài ra một sự kiện chống giả mạo

sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin

Phát triển phần mềm

Nếu bạn đã sử dụng một vi điều khiển dựa trên lõi ARM, thì các công cụ phát triểncho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex Ngoài ra ST cũngcung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như làmột thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công

bố cho vi điều khiển STR7 và STR9 Dòng Cortex-M3 cũng đi kèm với một hệ thống gỡlỗi hoàn toàn mới gọi là CoreSight Truy cập vào hệ thống CoreSight thông qua cổng truycập Debug (Debug  Access  Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thốngCoreSight trên STM32 cung cấp hệ thống điểm truy cập(data watchpoint) và một công cụtheo dõi (instrumentation trace)

Trang 22

Hình 4 Dưới đậy là sơ đồ khối ARM STM32F411VE

Sơ đồ chân

Sơ đồ chân dạng LQFP (100 chân ) bốn hàng chân dán vỏ mỏng

Trang 23

Sơ đồ chân dạng UFBGA (100 chân ) bốn hàng chân dán dưới đế.

2.2 Tổ chức bộ nhớ

Bộ nhớ của VĐK ARM STM32F411VE gồm 2 loại:

Trang 24

Bộ nhớ trương trình (program memory)

Bộ nhớ dữ liệu RAM ( data RAM)

Trong STM32F411, hệ thống chính bao gồm ma trận bus AHB đa lớp 32 bit kết nối

Ma trận xe buýt cung cấp quyền truy cập từ masters đến slaves, cho phép truy cập đồngthời và hoạt động hiệu quả ngay cả khi một số thiết bị ngoại vi tốc độ cao hoạt động đồngthời

Hình 5 Kiến trúc hệ thống

I-bus

Bus này kết nối Bus Hướng dẫn của Cortex ® -M4 với lõi FPU với BusMatrix Bus này được sử dụng bởi lõi để lấy hướng dẫn Mục tiêu của Bus này là một bộ nhớ chứa mã (bộ nhớ Flash nội bộ / SRAM)

D-bus

Bus này kết nối cơ sở dữ liệu của Cortex ® -M4 với FPU với BusMatrix Bus này là được

sử dụng bởi lõi để tải theo nghĩa đen và truy cập gỡ lỗi Mục tiêu của chiếc xe buýt này làmột bộ nhớ chứa mã hoặc dữ liệu (bộ nhớ Flash bên trong / SRAM)

S-bus

Trang 25

Bus này kết nối bus hệ thống của Cortex ® -M4 với lõi FPU với BusMatrix Điều này busđược sử dụng để truy cập dữ liệu nằm trong thiết bị ngoại vi hoặc SRAM Hướng dẫncũng có thể là tìm nạp trên bus này (kém hiệu quả hơn ICode) Mục tiêu của xe buýt này

là nội bộ SRAM1, các thiết bị ngoại vi AHB1 bao gồm các thiết bị ngoại vi APB và cácthiết bị ngoại vi AHB2

bộ nhớ flash

Giao diện bộ nhớ Flash quản lý CPU AHB I-Code và D-Code truy cập vào bộ nhớ Flash

Nó thực hiện các thao tác xóa và lập trình Flash và đọc và đọc viết cơ chế bảo vệ Nó tăngtốc thực thi mã với một hệ thống hướng dẫn dòng tải trước và bộ đệm Bộ nhớ Flash đượcsắp xếp như sau: Một khối bộ nhớ chính được chia thành các lĩnh vực Bộ nhớ hệ thống

mà thiết bị khởi động ở chế độ khởi động Bộ nhớ hệ thống 512 byte OTP (lập trình mộtlần) cho dữ liệu người dùng Tùy chọn byte để cấu hình bảo vệ đọc và ghi, mức BOR,watchdog phần mềm / phần cứng và đặt lại khi thiết bị ở chế độ Chờ hoặc Dừng

2.3 Khối tạo dao dộng

Ba nguồn xung khác nhau có thể được sử dụng để điều khiển xung hệ thống (SYSCLK):

- xung dao động HSI

- xung dao động HSE

- xung chính PLL (PLL)

Các thiết bị có hai nguồn xung thứ cấp sau:

- RC nội bộ tốc độ thấp 32 kHz (LSI RC) điều khiển cơ quan giám sát độc lập và,tùy chọn, RTC được sử dụng để Tự động đánh thức từ chế độ Dừng / Chờ

- Tinh thể ngoài tốc độ thấp 32,768 kHz (tinh thể LSE) tùy chọn điều khiển RTCxung (RTCCLK)

Mỗi nguồn xung có thể được bật hoặc tắt độc lập khi không sử dụng, để tối ưu hóa sự tiêuthụ năng lượng

Trang 26

Hình 6 Khối Tạo Dao Động

Bộ điều khiển xung cung cấp mức độ linh hoạt cao cho ứng dụng trong việc lựa chọn tinhthể ngoài hoặc bộ dao động để chạy lõi và các thiết bị ngoại vi ở tần số cao nhất và, đảmbảo tần số thích hợp cho các thiết bị ngoại vi cần xung cụ thể như USB OTG FS, I2S và

xung HSE

Tín hiệu xung bên ngoài tốc độ cao (HSE) có thể được tạo từ hai nguồn xung khả thi:

- HSE cộng hưởng tinh thể / gốm bên ngoài

Trang 27

- xung người dùng bên ngoài HSE

Bộ cộng hưởng và tụ điện tải phải được đặt càng gần càng tốt với chân dao động để giảmthiểu biến dạng đầu ra và thời gian ổn định khởi động Các tải giá trị điện dung phải đượcđiều chỉnh theo bộ dao động đã chọn

Hình 7 Chân xung kết nối nội ngoại

2.4 Giới thiệu GPIO

VDK stm32f411VE có 84 chân I/O cđược chia làm 5 cổng là PortA, PORTC,PORTD, PORTE là có 16 chân và PORTB có 15 chân Các chân I/O của vdkstm32f411ve có nhiều chức năng, nó có thể được thiết lập là chân I/O dữ liệu hay là chânchức năng đặc biệt của các bộ ngoại vi, sử dụng các thanh ghi điều khiển của ngoại vi đểlựa chọn chức năng của các chân

Cấu trúc chung của một chân vào ra

Trang 28

PORTA gồm 16 bit tương ứng với 16 chân được ký hiệu từ PA0 đến PA15 các chânPORTA có thể đọc/ghi theo từng bit hoặc cả buyte Các chân ở PORTA đều có thể dùngngắt, và các chân đềo có thể giao tiếp Analog

Trang 29

cả byte Các chân ở PORTD đều có thể dùng ngắt, và các chân đềo có thể giao tiếpAnalog.

Port E

PortE cố độ rộng 16 bit, tương ứng với 4 chân được ký hiệu từ PED0 đến PDE15 .Các chân của PORTD có hai chiều dữ liệu và người lập trình có thể đọc/ghi theo từng bithặc cả byte Các chân ở PORTD đều có thể dùng ngắt, và các chân đềo có thể giao tiếpAnalog

Tham số - GPIOx: trong đó x có thể (A K) để chọn ngoại vi GPIO cho thiết

bị STM32F429X hoặc x có thể (A I) để chọn ngoại vi GPIO chocác thiết bị STM32F40XX và STM32F427X

- GPIO_Init: con trỏ tới cấu trúc GPIO_InitTypeDef chứa thông tincấu hình cho thiết bị ngoại vi GPIO được chỉ định

Trả về giá trị Không có:

HAL_GPIO_ReadPin

Tên hàm GPIO_PinState HAL_GPIO_ReadPin (GPIO_TypeDef * GPIOx,

uint16_t GPIO_Pin)

Mô tả chức năng Đọc chân cổng đầu vào được chỉ định

Tham số - GPIOx: trong đó x có thể (A K) để chọn ngoại vi GPIO cho thiết

bị STM32F429X hoặc x có thể (A I) để chọn ngoại vi GPIO chocác thiết bị STM32F40XX và STM32F427X

Trang 30

- GPIO_Pin: chỉ định bit cổng để đọc Tham số này có thể làGPIO_PIN_x trong đó x có thể là (0 15)

Trả về giá trị Giá trị: chân cổng đầu vào

HAL_GPIO_WritePin

Tên hàm void HAL_GPIO_WritePin (GPIO_TypeDef * GPIOx,

uint16_tGPIO_Pin, GPIO_PinState PinState)

Mô tả chức năng Đặt hoặc xóa bit cổng dữ liệu đã chọn

Tham số - GPIOx: trong đó x có thể (A K) để chọn ngoại vi GPIO cho thiết

bị STM32F429X hoặc x có thể (A I) để chọn ngoại vi GPIO chocác thiết bị STM32F40XX và STM32F427X

- GPIO_Pin: chỉ định bit cổng được ghi Tham số này có thể là mộttrong GPIO_PIN_x trong đó x có thể là (0 15)

- PinState: chỉ định giá trị được ghi vào bit đã chọn Tham số này cóthể là một trong các giá trị enum GPIO_PinState:GPIO_PIN_RESET: để xóa chân cổng GPIO_PIN_SET: để đặtchân cổng

Trả về giá trị Không có:

HAL_GPIO_TogglePin

Tên hàm void HAL_GPIO_TogglePin (GPIO_TypeDef * GPIOx, uint16_t

GPIO_Pin)

Mô tả chức năng Chuyển trạng thái các chân GPIO được chỉ định

Tham số - GPIOx: Trong đó x có thể (A K) để chọn thiết bị ngoại vi GPIO

cho thiết bị STM32F429X hoặc x có thể (A I) để chọn ngoại viGPIO cho các thiết bị STM32F40XX và STM32F427X

- GPIO_Pin: Chỉ định các chân được bật

Trả về giá trị Không có:

Trang 31

2.5 Ngắt

khái niện

NVIC – Nested vectored interrupt controller là bộ điều khiển xử lý ngắt có trong

MCU STM32F103C8T6 Việc lập trình sử dụng ngắt là một kĩ năng quan trọng khi cácbạn lập trìnhh vi điều khiển, nếu không có ngắt thì chương trình sẽ thực hiện theo mộttrình tự từ trên xuống dưới, ngắt giúp chương trình xử lý theo sự việc, đáp ứng được các

sự kiện như sự thay đổi mức logic từ 1 chân vi điều khiển (ngắt ngoài), nhận một kí tự(ngắt nhận UART)… Trong bài viết này, mình sẽ trình bày về ngắt ngoài (externalinterrupt) của vi điều khiển STM32F411VE

- Có quản lí năng lượng cho vector ngắt

- Có các thanh ghi điều khiển quá trình ngắt

Ngắt ngoài nằm trong 1 phần của NVIC Mỗi EXTI – interrupt/event controller cóthể được lập trình chọn loại sự kiện/ ngắt, chọn cạnh lên, cạnh xuống hoặc cả 2, sắp xếpmức ưu tiên ngắt

Một số tính năng chính của ngắt ngoài:

- Kích hoạt độc lập và mask cho mỗi line sự kiện/ngắt

- Có bit trạng thái (status) riêng cho mỗi line ngắt

- Có thể có tối đa 23 sự kiện/ ngắt

- Kiểm tra tín hiệu ngoài có độ rộng xung nhỏ hơn clock trên APB2

Trang 32

Hình 8 Sơ đồ khối của ngắt ngoàiCấu hình với thư viện chuẩn của ST. Có 2 loại ngắt ngoài chính đó là ngắt ngoài trêncác chân điều khiển ở dạng thông thường và ngắt ngoài trên các ứng dụng như : PVD,RTC, USB, Ethernet.

Ngắt ngoài của chip STM32F411VE bao gồm có 16 line:

Hình 9 Ngắt ngoài của chip STM32F411VE

Trang 33

Ở đây chúng ta có thể thấy chip STM32F411VE gồm có 16 Line ngắt riêng biệt.

Bảng 3 Bảng mức độ ưu tiên ngắt NVIC

Các câu lệnh dùng trong ngắt

HAL_GPIO_EXTI_IRQHandler

Tên chức năng void HAL_GPIO_EXTI_IRQHandler (uint16_t GPIO_Pin)

Mô tả chức năng Hàm này xử lý yêu cầu ngắt EXTI

Thông số • GPIO_Pin: Chỉ định các chân được kết nối với dòng EXTI

Giá trị trả về Không có giá trị trả về

HAL_GPIO_EXTI_Callback

Tên chức năng void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin)

Mô tả chức năng Gọi lại phát hiện dòng EXTI

Thông số • GPIO_Pin: Chỉ định các chân được kết nối với dòng EXTI

Giá trị trả về không có giá trị trả về

2.6. TIMER

Giới thiệu cơ bản về Timer trong STM32

STM32f411VE có tất cả 8 timer có các chức năng như ngắt, timer base, PWM,Encoder, Input capture… Trong đó TIM1 là Timer đặc biệt, chuyên dụng cho việc xuấtxung với các mode xuất xung, các mode bảo vệ đầy đủ hơn so với các timer khác vàTIM2 với TIM5 là các timer 32bit và các TIM1, TIM3, TIM4, TIM9, TIM10, TIM11 là

Trang 34

các timer 16bit TIM1, TIM9, TIM10, TIM11 thuộc khối clock APB2, còn cácTIM2,TIM3,TIM4, TIM5 thuộc nhóm APB1.

Timer là bộ định thời có thể sử dụng để tạo ra thời gian cơ bản dựa trên các thôngsố: clock, prescaler, autoreload, repetition counter Timer của STM32 là timer 16 bits cóthể tạo ra các sự kiện trong khoảng thời gian từ nano giây tới vài phút gọi là UEV(updateevent)

Các tính năng chính của TIM1

- Chụp đầu vào

Mô tả chức năng Bắt đầu thế hệ cơ sở TIM

Thông số - htim: con trỏ tới cấu trúc TIM_HandleTypeDef chứa thông tin cấu

hình cho mô-đun TIM

Trả về giá trị HAL: trạng thái

HAL_TIM_Base_Start_IT

(TIM_HandleTypeDef * htim)

Mô tả chức năng Bắt đầu thế hệ TIM Base ở chế độ ngắt cơ bản

Thông số - htim: con trỏ tới cấu trúc TIM_HandleTypeDef chứa thông tin cấu

hình cho mô-đun TIM

HAL_TIM_PeriodElapsedCallback

Trang 35

Tên chức năng void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *

htim

Mô tả chức năng sau khi có tín hiệu của ngắt thì chức năng này hoat động

Thông số - htim: con trỏ tới cấu trúc TIM_HandleTypeDef chứa thông tin cấu

hình cho mô-đun TIM

Trả về giá trị không có giá trị trả về

2.7 PWM

Giới thiệu cơ bản về PWM 

Bộ điều chế độ rộng xung, hay còn gọi là bộ“băm xung” là bộ xử lý và điều khiển tạo ra dạng xung vuông chu kỳ thay đổi theo cấu hình Đây là phương pháp điềuchỉnh điện áp ra tải dựa vào trung bình tín hiệu điều chế Khi độ rộng xung tăng, trungbình điện áp ra tăng Các module PWM thường sử dụng tần số điều chế không đổi,

và điều chỉnh dựa trên sự thay đổi của chu kỳ nhiệm vụ (duty cycle)

Hình 10 : Hình ảnh xung PWmNhư trên hình đã rất rõ : Duty cycle = pulse width x 100/period

– Duty cycle là tỷ lệ phần trăm mức cao

– Period là chu kỳ xung

– Pulse width là giá trị mức cao so với period

       Dựa trên nguyên lý bên trên mà trong STM32 hay các loại vi điều khiển khácđiều hỗ trợ bộ tạo độ rộng xung tự động mà bạn không phải tốn thời gian bật tắt chân IO,

Trang 36

có thể thiết lập chu kỳ, tần số, độ rộng xung và một số chức năng đặc biệt PWM thuộckhối timer

Ứng dụng

PWM được ứng dụng nhiều trong điều khiển như điều khiển động cơ và các

bộ xung áp, điều áp… Sử dụng PWM điều khiển độ nhanh chậm của động cơ và sựổnđịnh tốc độ động cơ Ngoài lĩnh vực điều khiển hay ổn định tải thì PWM còn tham gia vàđiều chế các mạch nguồn như : boot, buck, nghịch lưu 1 pha và 3 pha… PWM chuyêndùng để điều khiển các phần tử điện tử công suất có đường đặc tính là tuyến tính khi

có sẵn 1 nguồn 1 chiều cố định. 

Câu lệnh

HAL_TIM_PWM_Start

Tên chức năng HAL_StatusTypeDef HAL_TIM_PWM_Start

(TIM_HandleTypeDef * htim, uint32_t Channel)

Mô tả chức năng Bắt đầu tạo tín hiệu PWM

Thông số - htim: con trỏ tới cấu trúc TIM_HandleTypeDef chứa thông tin cấu

hình cho mô-đun TIM

- Channel: Chennal TIM được bật Tham số này có thể là một trongnhững giá trị sau:

- TIM_CHANNEL_1: Đã chọn Chennal 1 TIM

- TIM_CHANNEL_2: Đã chọn Chennal 2 TIM

- TIM_CHANNEL_3: Đã chọn Chennal 3 TIM

- TIM_CHANNEL_4: Đã chọn Chennal 4 TIM Trả về giá trị HAL: trạng thái

HAL_TIM_PWM_Start_IT

Tên chức năng HAL_StatusTypeDef HAL_TIM_PWM_Start_IT

(TIM_HandleTypeDef * htim, uint32_t Channel)

Mô tả chức năng Bắt đầu tạo tín hiệu PWM ở chế độ ngắt

Trang 37

Thông số - htim: con trỏ tới cấu trúc TIM_HandleTypeDef chứa thông tin cấu

hình cho mô-đun TIM

- Chennal: Chennal TIM được bật Tham số này có thể là một trongnhững giá trị sau:

- TIM_CHANNEL_1: Đã chọn Chennal 1 TIM

- TIM_CHANNEL_2: Đã chọn Chennal 2

- TIM_CHANNEL_3: Đã chọn Chennal 3 TIM

- TIM_CHANNEL_4: Đã chọn Chennal 4 TIM Trả về giá trị HAL: trạng thái

HAL_TIM_SET_COMPARE

Sự miêu tả: Đặt thanh ghi so sánh TIM Capture giá trị trong thời gian chạy mà

không gọi khác chức năng cấu hình thời gian

Thông số: - HANDLE : TIM xử lý

- CHANNEL :: Các chennal TIM sẽ là cấu hình Tham số này

có thể là một trong các giá trị sau:

- TIM_CHANNEL_1: Chennal TIM 1 đã chọn

- TIM_CHANNEL_2: Chennal TIM 2 đã chọn

- TIM_CHANNEL_3: Chennal TIM 3 đã chọn

- TIM_CHANNEL_4: Chennal TIM 4 đã chọn

- COMPARE : chỉ định Chụp So sánh đăng ký giá trị mới Giá trị trả về: không có giá trị trả về

2.8 ADC

Tổng quan ADC

Hầu hết chúng ta, những người đã trải nghiệm MCU 8 bit trước đây đều biết tầmquan trọng của việc chuyển đổi tương tự sang số (ADC) là quan trọng như thế nàotíchhợp sẵn một vi điều khiển. Ngoài các phần mở rộng phần cứng khác không có sẵn trongcác bộ vi điều khiển thời kỳ đầu, nhiều người dùng vi điều khiển 8051 trước đây đãchuyển chủ yếu sang các máy ảo Atmel AVR và Microchip mạnh hơn cho thiết bị ngoại

Trang 38

vi quan trọng này. Tôi không cảm thấy cần phải khôi phục những lợi thế của việc có mộtthiết bị ngoại vi như vậy được nhúng trong một vi mô. Trong các MCU 8 bit truyền thống

đã nói ở trên, khối ADC có phần chưa hoàn chỉnh và người dùng phải tìm ra các phươngpháp khó để giải quyết một số vấn đề nhất định. Khối ADC của STM32 micros là mộttrong những yếu tố tiên tiến và tinh vi nhất để đối phó trong toàn bộ đấu trườngSTM32. Có quá nhiều tùy chọn cho khối này trong micro STM32. Trong vấn đề này,chúng tôi sẽ khám phá khối này

Tính năng ADC của stm32f411ve

- ADC xấp xỉ 12 bit liên tiếp

- Tốc độ chuyển đổi ADC tối đa là 1 MHz và hơn 2 MHz trong một số họSTM32

- Phạm vi chuyển đổi A / D: 0 - 3.6V DC

- Phạm vi hoạt động cung cấp điện ADC: 2.4V - 3.6V DC

Hình 11 Sơ đồ khối của ADC

Trang 39

cấu hình cho ADC được chỉ định

Trả về giá trị - HAL: trạng thái

Thông số - hadc: con trỏ tới cấu trúc ADC_HandleTypeDef chứa thông tin

cấu hình cho ADC được chỉ định

Trả về giá trị - HAL: tình trạng

HAL_ADC_IRQHandler

Tên chức năng void HAL_ADC_IRQHandler (ADC_HandleTypeDef * hadc)

Mô tả chức năng Xử lý yêu cầu ngắt ADC

Thông số - hadc: con trỏ tới cấu trúc ADC_HandleTypeDef chứa thông tin

cấu hình cho ADC được chỉ định

Trả về giá trị Không có giá trị trả về

HAL_ADC_GetValue

Tên chức năng uint32_t HAL_ADC_GetValue (ADC_HandleTypeDef * hadc)

Mô tả chức năng Nhận giá trị chuyển đổi từ thanh ghi dữ liệu của chennal thông

thường

Ngày đăng: 04/04/2019, 22:00

TỪ KHÓA LIÊN QUAN

w