Tải bản đầy đủ (.pdf) (66 trang)

xây dựng các bài thí nghiệm trên hệ thống nhúng arm cortex

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 (7.05 MB, 66 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO TỔNG KẾT
ĐỀ TÀI KH&CN CẤP TRƯỜNG

XÂY DỰNG CÁC BÀI THÍ NGHIỆM
TRÊN HỆ THỐNG NHÚNG ARM CORTEX
S

K

C

0

0

3

9

5

9

MÃ SỐ: T2011 - 11

S KC 0 0 3 6 1 9


Tp. Hồ Chí Minh, 2011


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO TỔNG KẾT

ĐỀ TÀI KH&CN CẤP TRƯỜNG

XÂY DỰNG CÁC BÀI THÍ NGHIỆM TRÊN HỆ
THỐNG NHÚNG ARM CORTEX
MÃ SỐ : T2011-11

CHỦ NHIỆM ĐỀ TÀI

: KS. LÊ MINH

THÀNH VIÊN ĐỀ TÀI

: KS. PHẠM VĂN KHOA

Tp.HCM,THÁNG 2 NĂM 2012


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

NGƯỜI THAM GIA ĐỀ TÀI


Chủ nhiệm đề tài: Lê Minh
Học vị, chức danh khoa học: Kỹ sư, Giảng viên.
Thành viên: Phạm Văn Khoa
Học vị, chức danh khoa học: Kỹ sư, Trợ Giảng.
Đơn vị phối hợp: Khoa Điện – Điện Tử, trường ĐH Sư Phạm Kỹ Thuật TPHCM

Trang i


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

MỤC LỤC
NGƯỜI THAM GIA ĐỀ TÀI.............................................................................................................. i
DANH SÁCH HÌNH ......................................................................................................................... iv
DANH SÁCH BẢNG ........................................................................................................................ vi
THÔNG TIN KẾT QUẢ NGHIÊN CỨU......................................................................................... vii
Chương 1............................................................................................................................................. 1
GIỚI THIỆU ....................................................................................................................................... 1
1.1

Tình Hình Nghiên Cứu........................................................................................................ 1

1.2

Tính Cấp Thiết Của Đề Tài ................................................................................................. 2

1.3

Mục Tiêu Nghiên cứu......................................................................................................... 2


Chương 2............................................................................................................................................. 3
VI ĐIỀU KHIỂN ARM CORTEX M3 ............................................................................................... 3
2.1

Giới Thiệu Về Vi Điều Khiển ARM Cortex – M3 .............................................................. 3

2.2

Kiến Trúc Vi Điều Khiển ARM Cortex – M3 .................................................................... 4

2.2.1

Lõi Cortex – M3.......................................................................................................... 4

2.2..2

Bộ điều khiển vector ngắt lồng nhau (NVIC) ............................................................. 9

2.2.3

Các nhánh của bộ xử lý Cortex ................................................................................. 10

2.2.4

Ngoại vi của STM32 – Cortex – M3......................................................................... 11

Chương 3........................................................................................................................................... 18
KIT OPENCMX – STM3210D ........................................................................................................ 18
3.1


Đặc Tả Phần Cứng Board KIT .......................................................................................... 18

3.2

Đặc Tính Kỹ Thuật Của MCU STM32F103RTD6........................................................... 19

3.3

Sơ Đồ Thiết Kế Phần Cứng Từng Khối Chức Năng Của Board....................................... 25

Chương 4........................................................................................................................................... 29
XÂY DỰNG BÀI THÍ NGHIỆM TRÊN BOARD STM32.............................................................. 29
4.1

Giới Thiệu Về CMSIS....................................................................................................... 29

4.2

Các Bài Thí Nghiệm.......................................................................................................... 31

4.2.1

Giao Tiếp Led Đơn GPIO ......................................................................................... 31
Trang ii


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
4.2.2

Cách Cấu Hình Cho Công Cụ KeilC Biên Dịch Và Nạp Chương Trình................... 36


4.2.3

Giao Tiếp LCD Chế Độ 4bit ..................................................................................... 38

4.2.3

Lập trình External Interrupt với STM32 ................................................................... 42

4.2.4

Lập trình USART với STM32 .................................................................................. 44

4.2.5

Lập trình ADC với STM32 ....................................................................................... 46

4.2.6

Thiết kế phần mềm giao tiếp với KIT ....................................................................... 49

Chương 5........................................................................................................................................... 55
KẾT LUẬN....................................................................................................................................... 55
5.1

Tổng kết nhận xét.............................................................................................................. 55

5.2

Tồn tại và hướng phát triển của đề tài............................................................................... 55


5.2.1 Tồn tại .............................................................................................................................. 55
5.2.2 Hướng phát triển của đề tài .............................................................................................. 55

Trang iii


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

DANH SÁCH HÌNH
Hình 2.1 Kiến trúc hệ thống................................................................................................................ 4
Hình 2.2 Cấu trúc của VĐK Cortex-M3 ............................................................................................ 6
Hình 2.3 Bản đồ bộ nhớ ...................................................................................................................... 7
Hình 2.4 Mô tả bit-banding trong Cortex-M3..................................................................................... 8
Hình 2.5 Kiến trúc ngoại vi Cortex-M3 ............................................................................................ 11
Hình 2.6 Cấu trúc của SPI................................................................................................................. 13
Hình 2.7 Cấu trúc của USART ....................................................................................................... 14
Hình 2.8 Hỗ trợ giao tiếp ở chế độ hafl-duplex ................................................................................ 14
Hình 2.9 Giao tiếp với smartcard và hồng ngoại ............................................................................. 15
Hình 2.10 Hỗ trợ giao tiếp đồng bộ SPI........................................................................................... 15
Hình 2.11 Sơ đồ khối của DAC ........................................................................................................ 17
Hình 3.1 Hình ảnh thực tế của board ................................................................................................ 18
Hình 3.2 Khối VDK STM32F103RD ............................................................................................... 25
Hình 3.3 Khối giao tiếp nối tiếp bất đồng bộ UART ........................................................................ 26
Hình 3.4 Khối chuyển đổi tương tự-số và điều rộng xung................................................................ 26
Hình 3.5 Khối cảm biến nhiệt độ ...................................................................................................... 27
Hình 3.6 Khối giao tiếp led đơn GPIO.............................................................................................. 27
Hình 3.7 Khối giao tiếp LCD, CAN, PS2 ......................................................................................... 28
Hình 4.1 Kiến trúc các lớp trừu tượng hoá của CMSIS .................................................................... 30
Hình 4.2 Kết nối phần cứng cho led đơn ......................................................................................... 32

Hình 4.3 Thanh ghi GPIOx_CRL ..................................................................................................... 33
Hình 4.4 Thiết lập thiết bị VDK STM32F103RD để biên dịch ........................................................ 36
Hình 4.5 Cấu hình file nạp cho VDK................................................................................................ 37
Hình 4.6 Thiết lập cấu hình cho thiết bị nạp ULINK........................................................................ 38
Hình 4.7 Giao tiếp LCD chế độ 4bit ................................................................................................. 38
Hình 4.8 Giao tiếp với nút nhấn ngắt ngoài ...................................................................................... 42
Hình 4.9 Khối giao tiếp UART ......................................................................................................... 44

Trang iv


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
Hình 4.10 Giao tiếp với biến trở điều chỉnh ADC ............................................................................ 47
Hình 4.11 Tab “Config”.................................................................................................................... 50
Hình 4.12 Tab “File mode” ............................................................................................................... 51
Hình 4.13 Tab “DAC mode”............................................................................................................. 52
Hình 4.14 Tab “ADC mode”............................................................................................................. 53
Hình 4.15 Tab “LED mode” ............................................................................................................. 54

Trang v


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

DANH SÁCH BẢNG
Bảng 3.1 So sánh chức năng các Timer ............................................................................................ 23
Bảng 4.1 Chọn chế độ hoạt động cho kit.......................................................................................... 49

Trang vi



Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

THÔNG TIN KẾT QUẢ NGHIÊN CỨU
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƯỜNG

1.Thông tin chung:
Tên đề tài: Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex – M3
Mã số: T2011-11
Chủ nhiệm đề tài: Ks. Lê Minh

Tel.: 0978446916

E-mail:

Cơ quan chủ trì đề tài: Trường Đại học Sư Phạm Kỹ Thuật, TP HCM
Cơ quan và cá nhân phối hợp thực hiện: KS. Phạm Văn Khoa
Thời gian thực hiện: Từ 15/05/2011 đến 25/02/2012
2. Mục tiêu: Xây dựng các bài thí nghiệm trên KIT thí nghiệm sử dụng vi điều
khiển ARM Cortex – M3
3. Nội dung chính: Nghiên cứu về họ vi điều khiển ARM Cortex – M3, KIT thí
nghiệm OPENCMX – STM3210D, xây dựng các bài thí nghiệm trên KIT này
4. Kết quả chính đạt được (khoa học, ứng dụng, đào tạo, kinh tế – xã hội, v.v…)
-

Khoa học: tìm hiểu và khai thác được một họ vi điều khiển 32 bit lõi ARM
và xây dựng được các bài thí nghiệm trên KIT sử dụng vi điều khiển này.

-


Ứng dụng: Tạo cơ sở khoa học cho việc tiếp cận dòng vi điều khiển mới
nhanh, ứng dụng trong nhiều lãnh vực.

-

Đào tạo: Có thể sử dụng làm tài liệu nghiên cứu cho sinh viên và tài liệu
tham khảo thêm cho giảng viên.
Trang vii


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
5. Điểm mới
-

Đây là họ vi điều khiển tương đối mới ở thị trường Việt nam.

-

Chưa được sử dụng rộng rãi trong việc giảng dạy ở các trường Đại học.

6. Địa chỉ ứng dụng
Kết quả của đề tài có thể được ứng dụng cho:
- Sinh viên trường ĐH SPKT TPHCM.
- Các sinh viên, kỹ sư điện tử, điện tử viễn thông, kỹ thuật máy tính khác có quan
tâm.
Trưởng Đơn vị
(ký, họ và tên, đóng dấu)

Chủ nhiệm đề tài
(ký, họ và tên)


Lê Minh

Trang viii


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

Chương 1.
GIỚI THIỆU
1.1

Tình Hình Nghiên Cứu

Ngày nay, với sự phát triển của khoa học kỹ thuât đã mang lại cho chúng ta rất nhiều
tiện ích. Trong cuộc sống hằng ngày sự phát triền của khoa học kỹ thuật đã giúp cho
chúng ta có một cuộc sống tiện nghi với những thiết bị hiện đại như máy lạnh, máy
giặt, tivi, LCD, mp3 player. Trong lĩnh vực sản xuất, với sự phát triển của khoa học
kỹ thuật đã giúp giải phóng sức người và cho năng xuất lao động rất cao, đồng thời
nó cho ra những sản phẩm tinh vi mà chỉ máy móc mới có thể làm được. tất cả
những hoạt động này được điều khiển bởi con chip vi xử lý.
Để có được sự phát triển như ngày nay thì thì chúng ta đã trải qua rất nhiều các cuộc
cách mạng khoa học kỹ thuật. các thiết bị máy móc ngày càng hiện đại, sự hiện đại
ấy được chúng ta đánh giá thông qua tốc độ xử lý thông tin, khả năng làm đồng thời
nhiều việc cùng một lúc, tốn ít năng lượng, bộ nhớ lớn để chứa được nhiều chương
trình xử lý khác nhau. Có nhiều khối giao tiếp với bên ngoài. Tất cả các yếu tố đặc
trưng kể trên nó được tích hợp trong con chip vi xử lý, vì vậy con chip vi xử lý
chính là bộ não chỉ huy hoạt động của máy móc.
Theo thời gian khả năng làm việc và tốc độ xử lý thông tin của các loại chip cũng
được nâng lên. Từ những con chip sơ với khai tốc độ xử lý dữ liệu chỉ bằng khoảng

một ngàn người tính toán thì ngày nay những con chip đã có khả năng tính toán
bằng cả tỉ người cộng lại.
Hiện nay các chip vi xử lý 32 bit và 64 bit đã được sử dụng rộng rãi thay cho các
chip 8 bit và 16 bit trước đó. Các chip 32 bit này có ưu điểm là khả năng xử lý tốc
độ cao, tiêu tốn ít năng lượng, bộ nhớ lớn và đặc biệt một số chip được thiết kế để

Trang 1


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
phù hợp với các ứng dụng nhùng. ARM Cortex M3 là một vi điều khiển 32 bit thuộc
dòng này đang được sử dụng dần rộng rãi nhờ hiệu quả cao với giá thành phù hợp.
Tại Việt nam, vi điều khiển ARM Cortex M3 vẫn còn sử dụng rất hạn chế, sách
hướng dẫn và tài liệu nghiên cứu chưa nhiều. Khả năng tiếp cận của sinh viên với vi
điều khiển này có phần bị hạn chế.
Chính vì thế, tác giả quyết định nghiên cứu thiết kế các bài thí nghiệm trên KIT sẵn
có trên thị trường của vi điều khiển ARM Cortex M3 để phục vụ cho việc giảng dạy
của giáo viên và học tập nghiên cứu của sinh viên.
1.2

Tính Cấp Thiết Của Đề Tài

Hiện tại các yêu cầu ứng dụng thực tế đều cần các chip xử lý với tốc độ nhanh, khả
năng lập trình linh động và đặc biệt là có thể chạy được hệ điều hành. Do vậy,
thường các vi xử lý và vi điều khiển 8 bit hoặc 16 khó có thể đáp ứng được các yêu
cầu này. Để giải đáp ứng các yêu cầu này, hầu hết các lập trình viên đều sử dụng các
vi xử lý, vi điều khiển 32 bit. Trong khi sinh viên đó, hầu hết các sinh viên vẫn đang
học tập và thí nghiệm trên các dòng vi điều khiển 8bit, 16 bit. Khi sinh viên ra
trường thường khó ứng dụng vào các yêu cầu thực tế hoặc khó đáp được yêu cầu
của các nhà tuyển dụng. Khi đó, sinh vien lại phải mất thời gian đi học tập để tiếp

cận với công nghệ mới trước khi làm việc.
Nhằm nâng cao kiến thức cho người nghiên cứu, và triển khai tài liệu học tập đến
sinh viên, giúp sinh viên tiếp cận với một họ vi điều khiển 32 bit mới: người nghiên
cứu tiến hành thực hiện đề tài : Xây dựng các bài thí nghiệm trên hệ thống nhúng
ARM Cortex M3.
1.3

Mục Tiêu Nghiên cứu

Xây dựng các bài thí nghiệm mẫu trên KIT OPENCMX – STM3210D sử dụng vi
điều khiển ARM Cortex M3.

Trang 2


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

Chương 2.
VI ĐIỀU KHIỂN ARM CORTEX M3
2.1

Giới Thiệu Về Vi Điều Khiển ARM Cortex – M3

Cấu trúc ARM (Acorn RISC Machine) là một loại cấu trúc vi xử lý 32-bit kiểu RISC
(Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa) được sử
dụng rộng rãi trong các thiết kế nhúng. Do có đặc điểm tiết kiệm nă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ọng hàng đầu.
Giải pháp thiết kế SoC (System-On-Chip) dựa trên bộ vi xử lý nhúng ARM được
ứng dụng vào rất nhiều thị trường khác nhau bao gồm các ứng dụng doanh nghiệp,

các hệ thống ô tô, mạng gia đình và công nghệ mạng không dây... Dòng vi xử lý
ARM Cortex dựa trên một kiến trúc chuẩn đủ để đáp ứng hầu hết các yêu cầu về
hiệu năng làm việc trong tất cả các lĩnh vực trên. ARM Cortex được chia làm ba cấu
hình khác nhau của kiến trúc ARMv7: cấu hình A cho các ứng dụng yêu cầu cao
chạy trên các hệ điều hành mở và phức tạp như Linux, Android…; cấu hình R dành
cho các hệ thống thời gian thực và cấu hình M được tối ưu cho các ứng dụng vi điều
khiển, cần tiết kiệm chi phí. Bộ vi xử lý Cortex-M3 là bộ vi xử lý ARM đầu tiên dựa
trên kiến trúc ARMv7-M và được thiết kế đặc biệt để đạt được hiệu suất cao trong
các ứng dụng nhúng cần tiết kiệm năng lượng và chi phí, chẳng hạn như các vi điều
khiển, hệ thống cơ ô tô, hệ thống kiểm soát công nghiệp và hệ thống mạng không
dây. Thêm vào đó là việc lập trình được đơn giản hóa đáng kể giúp kiến trúc ARM
trở thành một lựa chọn tốt cho ngay cả những ứng dụng đơn giản nhất. Ngày nay,
hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARM trở thành cấu
trúc 32-bit được sản xuất nhiều nhất trên thế giới. CPU ARM được tìm thấy khắp
nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay như: PDA, điện thoại

Trang 3


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
di động, máy đa phương tiện, máy trò chơi cầm tay, và máy tính cầm tay, cho đến
các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến để bàn.)
Tóm lại, Vi điều khiển Cortex-M3 được thiết kế đặc biệt để nâng cao hiệu suất hệ
thống, kết hợp với tiêu thụ năng lượng thấp, Cortex-M3 được thiết kế trên nền kiến
trúc mới, do đó chi phí sản xuất đủ thấp để cạnh tranh với các dòng vi điều khiển 8
và 16-bit truyền thống trước đây như PIC16F, AVR32…
2.2

Kiến Trúc Vi Điều Khiển ARM Cortex – M3


2.2.1

Lõi Cortex – M3

Các chip ARM7 được các nhà sản xuất bán dẫn thiết kế với giải pháp riêng của
mình, đặc biệt là phần xử lí các các ngắt đặc biệt (exception) và các ngắt thông
thường (interrupt). Là một nhánh trong kiến trúc ARMv7, Cortex-M3 đưa ra một lõi
vi điều khiển chuẩn nhằm cung cấp phần tổng quát, quan trọng nhất của một vi điều
khiển, bao gồm hệ thống ngắt (interrupt system), SysTick timer (được thiết kế cho
hệ điều hành thời gian thực), hệ thống kiểm và sửa lỗi (debug system) và bản đồ
vùng nhớ (memory map).

Hình 2.1 Kiến trúc hệ thống
Khối trung tâm của VĐK STM32 dùng trong đề tài là bộ xử lí Cortex-M3. Bộ xử lí
Cortex-M3 là một vi điều khiển được tiêu chuẩn hoá gồm một CPU 32bit, cấu trúc
bus (bus structure), đơn vị xử lí ngắt có hỗ trợ tính năng lồng ngắt vào nhau (nested
interrupt unit), hệ thống kiểm lỗi (debug system) và tiêu chuẩn bố trí bộ nhớ
(standard memory layout). Lõi Cortex có cấu trúc đường ống gồm 3 tầng:
Trang 4


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
Instruction Fetch, Instruction Decode và Instruction Execute. Khi gặp một lệnh
nhánh, tầng decode chứa một chỉ thị nạp lệnh suy đoán có thể dẫn đến việc thực thi
nhanh hơn. Bộ xử lý nạp lệnh dự định rẽ nhánh trong giai đoạn giải mã. Sau đó,
trong giai đoạn thực thi, việc rẽ nhánh được giải quyết và bộ vi xử lý sẽ phân tích
xem đâu là lệnh thực thi kế tiếp. Nếu việc rẽ nhánh không được chọn thì lệnh tiếp
theo đã sẵn sàng. Còn nếu việc rẽ nhánh được chọn thì lệnh rẽ nhánh đó cũng đã sẵn
sàng ngay lập tức, hạn chế thời gian rỗi chỉ còn một chu kỳ. Lõi Cortex-M3 chứa
một bộ giải mã cho tập lệnh Thumb truyền thống và Thumb-2 mới, một ALU tiên

tiến hỗ trợ nhân chia phần cứng, điều khiển logic, và các giao tiếp với các thành
phần khác của bộ xử lý. Bộ vi xử lý Cortex-M3 là một bộ vi xử lý 32-bit, với độ
rộng của đường dẫn dữ liệu 32 bit, các dải thanh ghi và giao tiếp bộ nhớ. Có 13
thanh ghi đa dụng, hai con trỏ ngăn xếp, một thanh ghi liên kết, một bộ đếm chương
trình và một số thanh ghi đặc biệt trong đó có một thanh ghi trạng thái chương trình.

Trang 5


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

Hình 2.2 Cấu trúc của VĐK Cortex-M3

Bộ vi xử lý Cortex-M3 là một hệ thống ánh xạ bộ nhớ đơn giản, quản lí vùng nhớ cố
định lên tới 4-gigabyte với các địa chỉ định nghĩa sẵn, dành riêng cho mã lệnh (vùng
mã lệnh), SRAM (vùng nhớ), bộ nhớ/thiết bị bên ngoài, thiết bị ngoại vi bên trong
và bên ngoài. Ngoài ra còn có một vùng nhớ đặc biệt dành riêng cho nhà cung cấp.
Không gian địa chỉ 4Gbyte của Cortex-M3 được chia thành các vùng cho mã
chương trình, SRAM, ngoại vi và ngoại vi hệ thống. Một điểm riêng không giống
với ARM7 được thiết kế theo kiến trúc Von Neumann (bộ nhớ chương trình và bộ
nhớ dữ liệu chung với nhau), Cortex-M3 được thiết kế dựa theo kiến trúc Harvard
(bộ nhớ chương trình và bộ nhớ dữ liệu tách biệt với nhau), và có nhiều bus cho
Trang 6


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
phép thực hiện các thao tác song song với nhau, do đó làm tăng hiệu suất của chip.
Ngoài ra dòng Cortex cho phép truy cập dữ liệu không xếp hàng (unaligned data, vì
chip ARM là kiến trúc 32bit, do đó tất cả các dữ liệu hoặc mã chương trình đều
được sắp xếp khít với vùng bộ nhớ là bội số của 4byte). Đặc điểm này cho phép sử

dụng hiệu quả SRAM nội.

Hình 2.3 Bản đồ bộ nhớ

Bộ vi xử lý Cortex-M3 cho phép truy cập trực tiếp đến từng bit dữ liệu trong các hệ
thống đơn giản bằng cách thực thi một kỹ thuật được gọi là bit-banding. Đặc điểm
này cho phép truy cập hiệu quả tới các thanh ghi ngoại vi và các cờ được dùng trên
bộ nhớ SRAM mà không cần một bộ xử lí luận lí (Boolean processor). Bộ nhớ bao
Trang 7


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
gồm hai vùng bit-band (mỗi vùng 1MB) trong SRAM và vùng bí danh 32MB của
vùng không gian ngoại vi (Mỗi byte trong vùng bí danh sẽ tương ứng với một bit
trong vùng bit-band). Mỗi hoạt động nạp/lưu tại một địa chỉ trong khu vực bí danh
(alias region) sẽ trực tiếp tương ứng với hoạt động trên bit được đại diện bởi bí danh
đó. Cụ thể, khi ghi giá trị 0x01 vào một địa chỉ trên vùng bí danh thì có nghĩa là xác
định bit tương ứng sẽ có giá trị là 1, tương tự giá trị 0x00 sẽ xác định bit tương ứng
có giá trị 0. Còn đọc giá trị tại một địa chỉ vùng bí danh có nghĩa là đọc được giá trị
của bit tương ứng. Một vấn đề cần chú ý nữa là hoạt động này mang tính nguyên tử
(không chia nhỏ được nữa), không thể bị gián đoạn bởi các hoạt động khác trên bus.

Hình 2.4 Mô tả bit-banding trong Cortex-M3
Các hệ thống cũ dựa trên ARM7 chỉ hỗ trợ truy xuất dữ liệu thẳng hàng, chỉ cho
phép lưu trữ và truy xuất dữ liệu của một khối bộ nhớ mà mỗi phần tử có đơn vị là
một word. Bộ vi xử lý Cortex-M3 hỗ trợ truy xuất dữ liệu không thẳng hàng, cho
phép chuyển dữ liệu không thẳng hàng trong một truy xuất đơn. Thực tế, việc
chuyển dữ liệu không thẳng hàng được biến thành việc chuyển nhiều lần dữ liệu
thẳng hàng và có tính trong suốt đối với lập trình viên (nghĩa là lập trình viên hoàn
toàn không cần quan tâm đến điều này). Ngoài ra bộ vi xử lý Cortex-M3 cũng hỗ trợ

phép nhân 32-bit hoạt động trong một chu trình đơn và các phép chia có dấu, không
dấu với các lệnh SDIV và UDIV, mất từ 2 đến 12 chu kỳ phụ thuộc vào kích thước
Trang 8


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
của toán hạng. Phép chia được thực thi nhanh hơn nếu số chia và số bị chia có kích
thước tương tự nhau. Những cải tiến trong khả năng toán học giúp Cortex-M3 trở
thành bộ vi xử lý lý tưởng cho các ứng dụng thiên về tính toán như đọc cảm biến
hoặc các hệ thống mô phỏng.
2.2..2

Bộ điều khiển vector ngắt lồng nhau (NVIC)

Một trong những thành phần chính của lõi Cortex-M3 là NVIC (Nested Vector
Interrupt Controller). NVIC cung cấp một cấu trúc ngắt chuẩn cho tất cả các vi điều
khiển được thiết kế dựa trên lõi Cortex và cách xử lí các ngắt đặc biệt (exceptional
interrupt). NVIC cung cấp các vector ngắt chuyên dụng lên tới 240 nguồn ngắt từ
ngoại vi, mỗi nguồn ngắt đó có thể được ưu tiên hoá với các mức riêng biệt. NVIC
được thiết kế để xử lí các ngắt đòi hỏi thời gian đáp ứng cực kì nhanh (extremely
fast interrupt). Thời gian từ lúc nhận một tín hiệu ngắt cho tới khi thực thi dòng lệnh
đầu tiên trong trình phục vụ ngắt chỉ là 12 chu kì xung nhịp hệ thống. Công việc này
được thực hiện tự động bởi một vi chương trình (microcode) được cài sẵn trong
CPU. Trong trường hợp xuất hiện các interrupt lồng nhau (tức là xảy ra ngắt khi
đang xử lí ngắt trước đó), NVIC sử dụng một phương thức gọi là “tail chain” cho
phép ngắt liên tiếp được phục vụ với độ trễ chỉ có 6 chu kì xung nhịp. Trong suốt
giai đoạn lưu trữ dữ liệu lên vùng nhớ stack để bắt đầu thực thi chương trình phục
vụ ngắt, một ngắt có mức ưu tiên cao hơn ngắt hiện tại có thể cạnh tranh với (preempt) ngắt hiện tại mà không chịu bất kì trì hoãn nào. Cấu trúc ngắt cũng đi kèm với
chế độ tiết kiệm năng lượng của trong lõi Cortex-M3. CPU có thể được cấu hình tự
động vào chế độ tiết kiệm năng lượng (standby) sau khi thoát khỏi ngắt. Sau đó lõi

tiếp tục standby cho đến khi một exception (ngắt đặc biệt) xuất hiện.
Mặc dù Cortex-M3 được thiết kế như là một lõi chi phí thấp (low cost core), nhưng
nó vẫn là một CPU 32-bit và vẫn hỗ trợ hai chế độ hoạt động: Thread và Handler,
mỗi chế độ có thể được cấu hình với mỗi vùng stack riêng biệt của nó, điều này cho
phép thiết kế các phần mềm phức tạp và hỗ trợ các hệ điều hành thời gian thực. Lõi
Cortex có hỗ trợ một timer 24-bit tự động nạp lại giá trị, nó sẽ cung cấp một ngắt
Trang 9


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
timer đều đặn cho một nhận RTOS (Real Time Operating System). Các chip ARM7
vả ARM9 có hai tập lệnh (tập lệnh ARM 32-bit và tập lệnh Thumb 16-bit), trong khi
đó dòng Cortex được thiết kế hỗ trợ tập lệnh ARM Thumb-2, tập lệnh này được pha
trộn giữa tập lệnh 16 và 32-bit, nhằm đạt được hiệu suất cao của của tập lệnh ARM
32-bit với mật độ mã chương trình tối ưu của tập lệnh Thumb 16-bit. Tập lệnh
Thumb-2 được thiết kế đặc biệt dành cho trình biên dịch C/C++, tức là các ứng dụng
dựa trên nền Cortex hoàn toàn có thể được viết bằng ngôn ngữ C mà không cần đến
chương trình khởi động viết bằng assembler như ARM7 và ARM9.
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ố 72MHz và dòng tiêu thụ chỉ có 36mA với tất
cả các khố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ăng lượng của Cortex, STM32 chỉ tiêu thụ 2µA khi ở chế độ standby. Một bộ
dao động nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm
năng lượng trong khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và
thoát khỏi các chế độ tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng
tổng thể.
2.2.3

Các nhánh của bộ xử lý Cortex


Bộ xử lí Cortex (Cortex processor) và đơn vị xử lí trung tâm Cortex (Cortex CPU)
sẽ được sử dụng để phân biệt giữa lõi Cortex được nhúng hoàn chỉnh và bộ xử lí
trung tâm RISC nội (internal RISC CPU). Bộ xử lý Cortex là thế hệ lõi nhúng kế
tiếp từ ARM. Cortex thừa kế các ưu điểm từ các bộ xử lí ARM trước đó, nó là một
lõi xử lý hoàn chỉnh, bao gồm bộ xử lí trung tâm Cortex và một hệ thống các thiết bị
ngoại vi xung quanh, tạo thành “trái tim” của một hệ thống nhúng. Bộ xử lý Cortex
gồm có 3 nhánh, được biểu hiện bằng các ký tự sau tên Cortex như sau:
 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 tạp. Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2.

Trang 10


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
 Cortex-R, bộ xử lí dành cho các hệ thống đòi hỏi khắc khe về tính thời gian
thực. Hỗ trợ các tập lệnh ARM, Thumb, và Thumb-2.
 Cortex-M, bộ xử lí dành cho dòng vi điều khiển, được tối ưu hóa cho các
ứng dụng nhạy cảm về chi phí. Chỉ hỗ trợ tập lệnh Thumb-2.
Con số nằm cuối tên Cortex cho biết mức độ hiệu suất tương đối, với 1 là thấp nhất
và 8 là cao nhất. Hiện nay dòng Cortex-M có mức hiệu suất cao nhất là mức 3.
STM32 dựa trên bộ xử lý Cortex-M3.
2.2.4

Ngoại vi của STM32 – Cortex – M3

Hình 2.5 Kiến trúc ngoại vi Cortex-M3

STM32 có hai bộ chuyển đổi ADC, Timer, I2C, SPI, CAN, USB và RTC. Tuy nhiên
mỗi ngoại vi trên đều có rất nhiều đặc điểm mới như:
 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 mode chuyển đổi.
Trang 11


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
 Mỗi bộ timer có 4 khối Capture Compare, mỗi khối Timer có thể liên kết
với các khối timer khác để tạo ra một mảng các timer tinh vi. Một timer cao
cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time lập
trình được và một đường break input sẽ buộc tín hiệu PWM sang một trạng
thá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ằng phầ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 7 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ệu như 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ểu hoá sự
tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và
các kê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.
Trong đó:
Giao tiếp SPI
Hỗ trợ giao tiếp tốc độ cao 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.


Trang 12


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

Hình 2.6 Cấu trúc của SPI

Để 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.
Giao tiếp USART
Mặc dù các giao diện trao đổi dữ liệu dạng nối tiếp dần dần không còn được hỗtrợ
trên máy tính, chúng vẫn còn được sử dụng rất nhiều trong lĩnh vực nhúng bởi sự
tiện ích và tính đơn giản. STM32 có đến 3 khối USART, mỗi khối có khả năng hoạt
động đến tốc độ 4.5Mbps. Một khối USART nằm trên APB1 với xung nhịp hoạt
động 72MHz, các khối còn lại nằm trên APB2 hoạt động ởxung nhịp 36MHz.

Trang 13


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex

Hình 2.7 Cấu trúc của USART

Với mạch tích hợp cho phép chia nhỏ tốc độ BAUD chuẩn thành nhiều tốc độ khác
nhau thích hợp với nhiều kiểu trao đổi dữ liệu khác nhau. Mỗi khối USART có hai
kênh DMA dành cho truyền và nhận dữ liệu. Khi hỗ trợ giaotiếp dạng UART,
USART cung cấp nhiều chế độ giao tiếp. Có thể trao đổi dữ liệu theo kiểu chế độ
hafl-duplex trên đường truyền Tx. Khi hỗ trợ giao tiếp modem và giao tiếp có sử

dụng điều khiển luồng (hardware flow control) USART cung cấp thêm các tín hiệu
điều khiển CTS và RTS.

Hình 2.8 Hỗ trợ giao tiếp ở chế độ hafl-duplex

Trang 14


Xây dựng các bài thí nghiệm trên hệ thống nhúng ARM Cortex
Ngoài ra USART còn có thể dùng để tạo các giao tiếp nội (local interconnect bus).
Đây là mô hình cho phép nhiều vi xử lý trao đổi dữ liệu lẫn nhau. USART còn có
khối encoder/decoder dùng cho giao tiếp hồng ngoại với tốc độ hỗ trợ có thể đạt đến
1115200bps, hoạt động ở chế độ hafl-duplex NRZ khi xung nhịp hoạt động khoảng
từ 1.4MHz cho đến 2.12Mhz. Để thực hiện giao tiếp với smartcard, USART còn hỗ
trợ chuẩn ISO 7618-3.

Hình 2.9 Giao tiếp với smartcard và hồng ngoại
Người dùng có thể cấu hình khối USART cho các giao tiếp đồng bộ tốc độ cao dựa
trên 3 đường tín hiệu riêng biệt như SPI. Khi hoạt động ở chế độ này, khối USART
sẽ đóng vai trò là SPI master và có khả năng cấu hình Clock Polarity/Phase nên
hoàn toàn có thể giao tiếp với các SPI slave khác.

Hình 2.10 Hỗ trợ giao tiếp đồng bộ SPI

Trang 15


×