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

Đồ án cuối kỳ đề tài một số giao tiếp với STM32F103

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 (1.36 MB, 34 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO.

ĐỒ ÁN CUỐI KỲ
ĐỀ TÀI: MỘT SỐ GIAO TIẾP VỚI STM32F103

Giảng viên hướng dẫn : Đinh Công Đoan
Môn học: Hệ Thống Nhúng
Sinh viên thực hiện: Trần Việt Tấn

-14110271

Nguyễn Vũ Minh Sang -14110414
Nguyễn Minh Tân

-14110366


Mục lục
I.

Mở đầu............................................................................................................................4
1. Tóm tắt.......................................................................................................................... 4
2. Đặc vấn đề....................................................................................................................4
2.1.

Tóm lược nghiên cứu trong và ngoài nước.............................................................4

2.2.


Một số tài liệu liên quan.........................................................................................4

2.3.

Lý do chọn đề tài....................................................................................................4

2.4.

Mục tiêu.................................................................................................................4

HỆ THỐNG NHÚNG

2.5.

Đối tượng và phạm vi nghiên cứu..........................................................................4

2.5.1 Đối tượng.............................................................................................................4
2.5.2 Phạm vi nghiên cứu..............................................................................................5

II.

2.6.

Phương pháp nghiên cứu........................................................................................5

2.7.

Nội dung đề tài.......................................................................................................5

Chương 1: Giới thiệu về vi xử lý ARM Cortex-M3..................................................5


1. Tổng quan..................................................................................................................... 5
2. Sự tinh vi....................................................................................................................... 8
3. Sự an tồn.....................................................................................................................9
4. Tính bảo mật.................................................................................................................9

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

2


5. Phát triển phần mềm....................................................................................................10
6. Dòng Performance và Access của STM32..................................................................10
7. Bộ xử lý ARM Cortex-M3..........................................................................................11
7.1.

Giới thiệu sơ lược.................................................................................................11

7.2.

Hiệu xuất cao........................................................................................................11

7.3.

Giảm chi phí phát triển và năng lượng tiêu thụ.....................................................12

7.4.

Tích hợp khả năng dò lỗi và theo vết trong lập trình............................................12


8. Vì sao phải dùng Cortex-M3 trong đề tài nghiên cứu.................................................13
III.

Chương 2: Kiến trúc hệ thống của ARM Cortex-M3.............................................14

1. Cấu trúc bộ nhớ cơ bản...............................................................................................15
2. Tối đa hiệu năng..........................................................................................................16
2.1.

Vịng khóa pha (Phase Lock Loop)......................................................................16

Cấu
hình cho bus..................................................................................................18
HỆ2.2.
THỐNG
NHÚNG
2.3.

Flash Buffer..........................................................................................................18

2.4.

Direct Memory Access.........................................................................................19

3. Tập lệnh Thumb-2.......................................................................................................21
4. Đơn vị bảo vệ bộ nhớ (MPU)......................................................................................22
5. Gỡ lỗi (Debug) và theo vết (Trace).............................................................................23
6. Ma trận bus và các giao diện liên kết..........................................................................24
IV.


Chương 3: Giới thiệu về kit STM32F103C8T6.......................................................25

1. Thông số kỹ thuật........................................................................................................25
1.1.

Mạch CPU.........................................................................................................25

1.2.

Thành phần chức năng các linh kiện chính.......................................................26

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CƠNG ĐOAN

3


2. Mạch nguyên lí và mạch layout của đề tài..................................................................27
2.1.

Mạch nguyên lý....................................................................................................27

2.2.

Mạch layout..........................................................................................................27

V. Chương 4: Ứng dụng....................................................................................................28
1. Mô tả ứng dụng...........................................................................................................28
2. Nạp chương trình từ KeilC..........................................................................................28

VI.


2.1

Các bước nạp........................................................................................................28

2.2

Ý nghĩa các hàm...................................................................................................31

Kết luận...................................................................................................................... 32

1. Kết quả đạt được.........................................................................................................32
2. Ưu điểm...................................................................................................................... 32
3. Nhược điểm................................................................................................................. 32
4. THỐNG
HướngNHÚNG
phát triển của đề tài.........................................................................................32
HỆ

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

4


I.

Mở đầu.

1. Tóm tắt



Nghiên cứu và tìm hiểu về ngun lý hoạt động của board STM32F103C8T6



Tìm hiểu được các chức năng từng linh kiện được dùng trong đề tài

2. Đặc vấn đề
2.1.

Tóm lược nghiên cứu trong và ngồi nước
 Trong nước:
Chúng ta còn chưa sử dụng, phát triển thiết bị đo nhiệt độ, độ ẩm rộng
rãi, chỉ ứng dụng trong một vài lĩnh vực trong một phạm vi nhỏ trong cả
nước.
 Ngoài nước:
Đối với các nước phát triển họ đã ứng dụng rộng rãi các thiết bị này vào
nhiều lĩnh vực để thúc đẩy nhu cầu phát triển của đất nước họ

2.2.

Một số tài liệu liên quan

 Đinh Công Đoan, Bài giảng Hệ thống nhúng 2015.Lưu hành nội bộ.
HỆ THỐNG NHÚNG
 ARM VietNam, Kiến trúc cơ bản của STM32_ARM Cortex M3, 2010.

 />

2.3.


Và một số tài liệu khác trên Internet

Lý do chọn đề tài
Với sự biến đổi về thời tiết như hiện nay thì nhu cầu của người dùng về một
thiết bị để có thể theo dõi được nhiệt độ, độ ẩm hiện tại ngày càng phổ biến. Vì
thế nên nhóm em đã chọn đề tài này

2.4.

Mục tiêu



Phục vụ nhu cầu nghiên cứu và tìm hiểu cơng nghệ mới



Phục vụ nhu cầu muốn biết được nhiệt độ và độ ẩm của môi trường xung
quanh

2.5.

Đối tượng và phạm vi nghiên cứu
2.5.1 Đối tượng

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

5



Môi trường xung quanh như nhiệt độ, độ ẩm
2.5.2 Phạm vi nghiên cứu
 Nghiên cứu ở mức độ hiểu và chạy được Board mạch.
 Cách tạo project trên Keil-C và nạp code vào board mạch
 Trong một phạm vi nhỏ
2.6.

Phương pháp nghiên cứu
Phương pháp tiếp xúc trực tiếp với mọi trường

2.7.

Nội dung đề tài
Một số giao tiếp với board STM32F103. Ở đây nhóm em làm mạch ứng dụng
để đo nhiệt độ, độ ẩm.

II.

Chương 1: Giới thiệu về vi xử lý ARM Cortex-M3.

1. Tổng quan.
Dòng ARM Cortex bao gồm 3 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 tinh vi, 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..vv..vv.

HỆ THỐNG NHÚNG

 Cấu hình R dành cho các hệ thống thời gian thực.
 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í. Đẩy tần số hoạt động cao hơn có thể làm tăng hiệu suất
nhưng cũng đi kèm với việc tiêu thụ năng lượng nhiều hơn và việc thiết kế cũng phức
tạp hơn. Nói cách khác, cùng thực hiện những tác vụ đó nhưng bằng cách nâng cao
hiệu quả tính tốn trong khi vẫn hoạt động ở tần số thấp sẽ dẫn đến sự đơn giản hóa
trong việc thiết kế và ít tốn năng lượng hơn.
Trung tâm của bộ vi xử lý Cortex-M3 là một lõi có cấu trúc đường ống tiên tiến 3
tầng, dựa trên kiến trúc Harvard.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

6


Lõi Cortex-M3:
 Lõi trung tâm Cortex-M3 dựa trên kiến trúc Harvard, được đặ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 do đó có các bus
riêng để truy cập. Vì có thể đọc cùng lúc lệnh và dữ liệu từ bộ nhớ, bộ vi
xử lý Cortex-M3 có thể thực hiện nhiều hoạt động song song, tăng tốc thực
thi ứng dụng.

HỆ THỐNG NHÚNG

7

 Lõi Cortex có cấu trúc đường ống gồm 3 tầng: 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 đố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ã.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


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ỳ.
 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.
 Bộ vi xử lý Cortex-M3 hỗ trợ hai chế độ hoạt động (Thread và Handler) và
hai mức truy cập tài nguyên của lõi xử lí (đặc quyền và không đặc quyền),
tạo điều kiện cho việc cài đặt các hệ thống mở và phức tạp nhưng vẫn bảo
mật. Những dịng mã khơng đặc quyền bị giới hạn hoặc không cho phép
truy cập vào một số tài nguyên quan trọng (một số lệnh đặc biệt và các
HỆ THỐNG NHÚNG

vùng nhớ nhất định). 

 Chế độ Thread là chế độ hoạt động tiêu biểu hỗ trợ cả mã đặc quyền và
không đặc quyền. Bộ vi xử lý sẽ vào chế độ Handler khi một ngoại lệ
(exception) xảy ra và tất cả các mã là đặc quyền trong chế độ này.
 Khả năng địa chỉ hóa 2^32=4gb địa chỉ: 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 ngồi. Ngồi ra cịn có một vùng
nhớ đặc biệt dành riêng cho nhà cung cấp.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

8


HỆ THỐNG NHÚNG

9

  NVIC (Nested Vectored Interrupt Controller) là thành phần tích hợp của
bộ vi xử lý Cortex-M3 có khả năng xử lý ngắt rất linh hoạt và nhanh chóng.
Trong cài đặt chuẩn, nó cung cấp một NMI (Non-Maskable Interrupt) và
32 ngắt vật lý đa dụng với 8 mức ưu tiên pre-emption. Nó có thể được cấu
hình từ 1 đến 240 ngắt vật lý với tối đa 256 mức độ ưu tiên.
2. 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, 12C, SPI, CAN, USB và RTC. Tuy nhiên, mỗi ngoại vi trên
đều có rất nhiều đặc điểm thú vị. Ví dụ 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 chế độ chuyển
đổi. Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiên với tính năng

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


input capture và tạo dạng sóng ở ngõ ra với output 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 một mảng các đinh thời tinh vi hơn.
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ệu như yêu cầu.
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.
3. Sự an toàn.
Ngày nay các ứng dụng hiện đại phải hoạt động trong môi trường khắt khe, địi hỏi
tính an tồn cao, cũng như địi hỏi sức mạnh xử lý và càng nhiều thiết bị tinh vi. Để
đáp ứng các yêu cầu khắt khe đó, STM32 cung cấp một số tính năng phần cứ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 áp thấp, một
HỆ THỐNG
NHÚNG
hệ thống
bảo vệ xung clock và hai bộ Watchdogs. Bộ đầu tiên là một Watchdog cửa

sổ (windowed watchdog). Watch này phải được làm tươi trong một khung thời gian
xác định. Nếu nhấn nó q sớm, hoặc q muộn, thì Watchdog sẽ kích hoạt. Bộ thứ
hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngồi tách
biệt với xung nhịp hệ thống chính bên ngồi (thường là thạch anh) và tự động chuyển
sang dùng bộ dao động nội RC 8Mhz.
4. Tính bảo mật.
Một trong những yêu cầu khắt khe khác của thiết kế hiện đại là nhu cầu bảo mật mã
chương trình để ngăn chặn sao chép trái phép phần mềm. Bộ nhớ Flash của STM32
có thể được khóa để chống truy cập đọc Flash thông qua cổ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


GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

10


thực và một khu vực nhỏ dữ liệu trên SRAM được ni 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ên SRAM được nuôi bằng pin.
5. 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ển
cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST
cũng cung cấp một số thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển
USB nhu là một thư viện ANSI C và mã nguồn đó 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 truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối chuẩn
JTAG hoặc giao diện 2 dây (serial wire -2pin), cũng như cung cấp trình điều khiển
chạy gỡ lỗi, hệ thống CoreSight 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 (intrumentation trace).
HỆ6.THỐNG
Dòng NHÚNG
Performance và Access của STM32.

Họ STM32 có hai nhánh đầu tiên riêng biệt: dịng Performance và dòng Access.
Dòng Performance tập hợp đầy đủ các thiết bị ngoại vi và chạy với xung nhịp tối đa
72Mhz. Dòng Access có các thiết bị ngoại vi ít hơn và chạy tối đa 36Mhz. Quan trọng
hơn là cách bố trí chân (pins layout) và các kiểu đóng gói chip (package type) là như
nhau giữa các dòng Access và dòng Performance. Điều này cho phép các phiên bản
khác nhau của STM32 được hốn vị mà khơng cần phải sửa đổi sắp xếp lại footprint

(mơ hình chân của chip trong cơng cụ layout bo mạch) trên PCB (Printed Circuit
Board).
Ngồi 2 dịng Performance và Access đầu tiên, hiện nay ST đã đưa ra thị trường thêm
2 dịng USB Access và Connectivity như hình bên dưới:

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

11


7. Bộ xử lý ARM Cortex-M3.
7.1.

Giới thiệu sơ lược.

Giải pháp 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 thi trường khác nhau bao gồm các ứng dụng doanh nghiệp, các hệ thống ô
HỆ THỐNG
NHÚNG
tơ, mạng
gia đình và cơng nghệ khơng dây.. Dịng vi xử lý ARM Cortex dựa trên 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. Dòng ARM Cortex bao gồm ba cấu hình khác nhau của kiến trúc
ARM7: cấu hình A cho các ứng dụng tinh vi, yêu cầu cao chạy trên các hệ điều hành
mở và phức tạp như Linux, Adroid,…; 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 điều khiển, cần tiết kiệm chi phí.
Bộ xử lý Cortex-M3 là bộ 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 sốt cơng nghiệp và hệ thống không dây.
7.2.

Hiệu xuất cao.

Để đạt được hiệu suất cao hơn, bộ vi xử lý có thể làm việc hơn hoặc làm việc thông
minh hơn. Đẩy tần số hoạt động cao hơn có thể làm tăng hiệu suất nhưng cũng đi kèm

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

12


với tiêu thụ năng lượng nhiều hơn và việc thiết kế cũng phức tạp hơn. Nói cách khác,
cũng thực hiện những tác vụ đó nhưng bằng cách nâng cao hiệu quả tính tốn trong
khi vẫn hoạt động ở tần số thấp sẽ dẫn đến sự đơn giản hóa trong việc thiết kế và ít
tốn năng lượng hơn. Trung tâm của bộ vi xử lý Cortex-M3 là một lõi có cấu trúc
đường ống tiên tiến 3 tầng, dựa trên kiến trúc Harward, kết hợp nhiều tính năng mạnh
mẽ như suy đốn việc rẽ nhánh, phép nhân được thực thi trong một chu kỳ và phép
chia được thực hiện bằng phần cứng tạo nên một hiệu năng vượt trội (điểm Dhrystone
là 1,25 DMIPS/Mhz).
7.3.

Giảm chi phí phát triển và năng lượng tiêu thụ.

Chi phí ln là rào cản lớn nhất cho sự lựa chọn một bộ vi xử lý hiệu suất cao. Bộ vi
xử lý được thiết kế trên một diện tích nhỏ sẽ giảm chi phí đáng kể. Bộ vi xử lí Cortex
–M3 thực hiện điều này bằng cách cài đặt các lõi ARM nhỏ nhất từ trước đến nay, chỉ
với 33000 cổng (cổng có thể là NAND hoặc NOR tùy vào công nghệ sản xuất) trong
lõi trung tâm (0.18um G) và bằng cách kết hợp hiệu quả nhất, chặt chẽ các thành phần

trong hệ thống vi xử lý. Tập lệnh Thumb-2 tiết kiệm bộ nhớ hơn 25% so với tập lệnh
HỆ THỐNG
ARM.NHÚNG
Để đáp ứng nhu cầu ngày càng tăng trong việc tiết kiệm năng lượng ở các ứng

dụng mạng không dây,.., bộ vi xử lý Cortex-M3 hỗ trợ mở rộng xung nhịp cho các
cổng (có thể ngừng cung cấp xung nhịp cho các cổng để tiết kiệm năng lượng) và tích
hợp chế độ ngủ.
7.4.

Tích hợp khả năng dị lỗi và theo vết trong lập trình.

Hệ thống nhúng thường khơng có giao diện người dùng đồ họa (GUI) làm cho việc
gỡ lỗi chương trình trở thành một thách thức thật sự đối với các lập trình viên. Ban
đầu, bộ ICE (In-circuit Emulator) đã được sử dụng để tạo một cửa sổ theo dõi hệ
thống thông qua một giao diện quen thuộc như trên PC. Tuy nhiên khi hệ thống ngày
càng nhỏ và phức tạp hơn, phương pháp này khơng cịn khả thi nữa. Cơng nghệ gỡ lỗi
của bộ vi xử lí Cortex-M3 được cài đặt trong chính phần cứng của nó (kết hợp với
một vài thành phần khác) giúp gỡ lỗi nhanh hơn với các tính năng trace & profiling,
breakpoints, watchpoints và bản vá lỗi giúp rút ngắn thời gian phát triển ứng dụng.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

13


8. Vì sao phải dùng Cortex-M3 trong đề tài nghiên cứu.
Trong gần một thập kỷ qua, dòng vi xử lý ARM7 đã được sử dụng rộng rãi. Bộ vi xử
lý Cortex-M3 được xây dựng trên nền tảng này nên việc nâng cấp từ dòng ARM7 lên
Cortex-M3 là hợp lý là dễ dàng. Lõi trung tâm làm việc hiệu quả hơn, mơ hình lập

trình đơn giản, cách xử lý ngắt nhất định (deterministic interrupt behaviour), việc tích
hợp các thiết bị ngoại vi giúp nâng cao hiệu năng làm việc mà vẫn giữ được chi phí
thấp.

Hình : So sánh ARM7TDMI-S và Cortex –M3
HỆ THỐNG NHÚNG

14

Hình : So sánh hiệu suất giữa ARM7TDMI-S (ARM) và Cortex-M3 (Thumb-2)

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


Hình : So sánh hiệu suất giữa ARM7TDMI-S (ARM) và Cortex –M3 (Thumb-2)
III.

Chương 2: Kiến trúc hệ thống của ARM Cortex-M3.
ARM Cortex STM32 gồm nhân Cortex kết nối với bộ nhớ FLASH thông qua
đường bus lệnh chuyên biệt. Các bus dữ liệu (Cortex Data busses) và hệ thống
(Cortex System busses) được kết nối tới ma trận busses tốc độ cao (ARM
Advanced High Speed Busses –AHB). SRAM nội kết nối với AHB và đóng vai
trị là bộ DMA. Các thiết bị ngoại vi dược kết nối bằng 2 hệ thống bus ngoại vi tốc

HỆ THỐNG NHÚNG

độ cao (APB –ARM Advanced Peripheral Busses). Các bus APBs thông qua các
bus cầu nối AHB-APBs kết nối vào hệ thống AHB. Ma trận bus AHB sử dụng
xung nhịp đồng hồ bằng với xung nhịp của nhân Cortex. Tuy nhiên thông qua bộ
chia tần số AHB có thể hoạt động ở tần số thấp hơn nhằm tiết kiệm năng lượng.


GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

15


Cấu trúc bus nội cung cấp đường truyền chuyên biệt dành cho tập lệnh thực thi và ma trận bus
đường dữ liệu cho nhân Cortex và bộ điều khiển DMA truy cập tài nguyên trên vi xử lý.
1. Cấu trúc bộ nhớ cơ bản.
Bên cạnh hệ thống bus nội đa dạng STM32 cịn cung cấp 4Gbyte khơng gian bộ nhớ
liên tục dành cho lập trình. Bộ nhớ được bắt đầu từ địa chỉ 0x00000000. On-chip
SRAM bắt đầu từ địa chỉ 0x20000000 và tất cả SRAM nội đều được bố trí ở điểm bắt
đầu cùng bit band. Vùng nhớ thiết bị ngoại vi được ánh xạ từ địa chỉ 0x40000000 và
ở vùng bit band. Các thanh ghi điều khiển của nhân Cortex được ánh xạ từ địa chỉ
0xE0000000.

HỆ THỐNG NHÚNG

16

Hình : Hệ thống bộ nhớ
Vùng nhớ dành cho flash được chia nhỏ thành 3 vùng. Vùng thứ nhất gọi là User Flash bắt
đầu từ địa chỉ 0x00000000. Kế tiếp là System Memory hay cịn gọi là vùng nhớ lớn. Vùng
này có độ lớn 4Gbytes thông thường sẽ được nhà sản xuất cài đặt bootloader. Cuối cùng là
vùng nhớ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thơng tin cấu hình dành cho STM32.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


Bootloader thường được dùng để tải chương trình thơng qua USART1 và chứa ở vùng User

Flash.
2. Tối đa hiệu năng.
Ngoài việc hỗ trợ 2 bộ tạo xung nhịp ngoại STM32 cung cấp thêm 2 bộ tạo xung nhịp
nội. Sau khi reset đồng hồ tạo xung của nhân Cortex, bộ tạo xung nhịp tốc độ cao
(High Speed Internal Oscillator) hoạt động ở mức thấp 8Mhz. Bộ tạo xung nội còn lại
là Low Speed Internal Oscillator) hoạt động ở mức thấp 8Mhz. Bộ tạo xung nội còn
lại là Slow Speed Internal Oscillator hoạt động ở mức 32768Khz. Bộ xung nhịp tốc
độ thấp này thường được dùng cho đồng hồ thời gian thực và watchdog.

HỆ THỐNG NHÚNG

17

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


Hình : STM32 bao gồm 2 bộ tạo xung nhịp nội và 2 bộ tạo xung nhịp ngoại thêm vào
đó là bộ vịng khóa pha (Phase Lock Loop-PLL).
Nhân Cortex có thể được cáp xung nhịp từ bộ tạo dao động nội và ngoại, đồng thời từ
PLL nội. Như trên hình 1.36, PLL có thể lấy dao động từ bộ tạo dao động nội có tốc
độ cao xung nhịp khơng hoạt động chính xác ở 8Mhz do đó khi sử dụng các thiết bị
ngoại vi như: giao tiếp serial hay sử dụng định thời thời gian thực thì nên dùng bộ tạo
dao động ngoại tốc độ cao. Tuy vậy, cho dù sử dụng bộ dao động nào đi nữa thì nhân
Cortex luôn phải sử dụng xung nhịp tạo ra từ bộ PLL. Tất cả thanh ghi điều khiển
PLL và cấu hình bus đều được bố trí ở nhóm RCC (Reset and Clock Control).
2.1.

Vịng khóa pha (Phase Lock Loop).

Sau khi hệ thống reset STM32 nhận xung nhịp từ bộ tạo dao động HIS. Tại thời điểm

đó các bộ tạo dao động ngoại sẽ bị tắt. Bước đầu tiên để STM32 hoạt động ở mức
xung nhịp cao nhất là bật bộ dao động HSE và chờ cho đến khi đi vào hoạt động ổn
định.
HỆ THỐNG NHÚNG

18

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


Đoạn mã sau mơ tả cách cấu hình để CPU của STM32 hoạt động ở mức xung nhịp
cao nhất.

Bộ tạo dao động ngoại có thể được kích hoạt thơng qua các thanh ghi điều khiển
RCC_Control. Sẽ có 1 bit trang thái được bật khi chúng đi vào hoạt động ổn định.
Một khi bộ tạo dao động ngoại hoạt động ổn định, nó có thể được chọn là đầu vào
cho bộ PLL. Xung nhịp ra được tạo bởi PLL được xác định bằng cách thiết lặp các
bội số nguyên trong thanh ghi cấu hình RCC_PLL. Trong trường hợp xung nhịp đầu
vào của PLL là 8Mhz khi đó cần cấu hình bộ số nhân cho PLL là 9 để tạo xung nhịp
72Mhz ở đầu ra. Khi bộ tạo dao động ngoại và PLL hoạt động ổn định, bit điều khiển
trạng thái sẽ bật lên, khi đó dao động ngoại và PLL hoạt động ổn định, bit điều khiển
trạng thái sẽ bật lên, khi đó dao động được tạo bởi PLL sẽ được cấp cho nhân CPU
Cortex của STM32.
HỆ THỐNG NHÚNG

19

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN



Đoạn mã cấu hình STM32 sử dụng dao động PLL
HỆ THỐNG
2.2. NHÚNG
Cấu hình cho bus.

Khi PLL đã được chọn là toàn bộ dao động cho hệ thống, Cortex CPU sẽ hoạt động ở
mức 72Mhz. để cho toàn bộ các phần còn lại của hệ thống hoạt động ở mức tối ưu
người dùng cần phải cấu hình AHB và APB thơng qua các thah ghi cầu nối.
2.3.

Flash Buffer.

Khi xem xét kiến trúc hệ thống của STM32 chúng ta có thể thấy nhân Cortex kết nối
Flash thông qua đưởng truyền dữ liệu chuyên biệt I-Bus. Bus dữ liệu này hoạt động
cùng tần số với CPU do vậy CPU lấy dao động từ PLL thì bus dữ liệu sẽ hoạt động ở
mức xung nhịp cao nhất 72Mhz. Cortex CPU sẽ truy cập Flash khơng đáng kể. Tuy
nhiên khi PLL được kích hoạt và sử dụng để tạo dao động cho CPU, thời gian truy
cập vào Flash được trang bị bộ 2 nhớ đệm 64-bit. Hai bộ nhớ đệm này có thể thực thi
các lệnh đọc ghi dữ liệu 64-bit trên Flash và chuyển các lệnh 16 và 32bit cho nhân
Cortex để thực thi. Kỹ thuật này hoạt động tốt đối với các lệnh thuộc tập lệnh Thumb-

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

20


2 và các lệnh có khả năng dự báo chỉ dẫn (Branch Prediction) của Cortex pipeline. Hệ
thống bộ đệm Flash được quản lý bởi các thanh ghi cấu hình Flag.Cùng với việc kích
hoạt bộ đệm tiền xử ký, chúng ta phải điều chỉnh số trạng thái chờ khi Flash đọc
8bytes lệnh từ bộ nhớ Flash. Độ trễ được thiết lập như sau:

0< SYSCLK <24MHz o waitstate
25< SYSCLK< 48Mhz 1 waitstate
48Thời gian trạng thái chờ này giữa bộ đệm tiền xử lý với bộ nhó Flash khơng tác động
đến nhân Cortex CPU. Khi CPU đang thực thi các lệnh ở nữa đầu của bộ đệm thì các
lệnh ở nửa sau của bộ đệm sẽ được tiền xử lý và tải lên nhân để sử lý ngay tiếp theo ,
điều này làm tối ưu hóa hiệu năng xử lý của Cortex CPU.
2.4.

Direct Memory Access.

STM32 có 7 kênh DMA độc lập dùng để chuyển dữ liệu từ: bộ nhớ sang bộ nhớ,
ngoại vi tới bộ nhớ, bộ nhớ tới ngoại vi và ngoại vi tới ngoại vi. Trong trường hợp
trao đổi dữ liệu bộ nhớ và bộ nhớ, tốc độ dữ liệu phụ thuộc tốc độ của kênh DMA
HỆ THỐNG
NHÚNG
quản lý
nó. Cịn với giao tiếp dữ liệu ngoại vi, thì tốc độ phụ thuộc vào bộ điều khiển

của ngoại vi đó và hướng dữ liệu di chuyển. Cùng với chuyển dữ liệu theo luồng, bộ
DMA của STM32 còn hỗ trợ bộ đệm vòng. Vì hầu hết các ngoại vi hiện nay khơng có
bộ nhớ FIFO, mỗi bộ DMA sẽ lưu dữ liệu vào trong bộ nhớ SRAM. Bộ DMA của
STM32 được thiết kế dành cho truyền các loại dữ liệu tốc độ nhỏ và cao.

Mỗi thao tác bộ nhớ DMA bao gồm 4 giai đoạn

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

21



Quá trình tryền dữ liệu gồm 4 giai đoạn: lấy mẫu và phân tích, tính tốn địa chỉ, truy
cập đường truyền, và cuối cùng là hoàn tất. Mỗi giai đoạn thực hiện tring một chu kỳ
lệnh, riêng truy cập đường truyền mất 5 chu kỳ lệnh. Ở giai đoạn truy cập đường
truyền thực chất là giai đoạn dữu liệu được truyền, mỗi word sẽ mất 3 chu kỳ lệnh.
Bộ DMA và CPU được thiết để cùng lúc có thẻ hoạt động mà không tranh chấp tài
nguyên lẫn nhau. Giữa 2 kênh DMA khác nhau, sẽ có sự ưu tiên mức hoạt động, dựa
trên đó bộ phân tích sẽ quyết định kênh DMA có mức ưu tiện cao hơn sẽ lấy được tài
nguyên trước. Nếu 2 kênh DMA có cùng mức ưu tiên, lại đang ở trạng thái chờ để
truy cập tài ngun, thì kênh DMA có số thứ tự nhỏ hơn sẽ được sử dụng tài nguyên
trước.

HỆ THỐNG NHÚNG

22

Bộ DMA được thiết kế cho truyền dữu liệu tốc độ và kích thước nhỏ. Bộ DMA chỉ sử
dụng bus dữ liệu khi ở giai đoạn truy cập đường truyền.
Bộ DMA có thể thực hiện phân tích tài ngun và tính tốn địa chỉ trong khi bộ DMA
khác đang ở giai đoạn truy cập đường truyền như mơ ta ở hình trên. Ngay khi bộ
DMA thứ nhất kết thúc việc truy cập đường truyền, bộ DMA 2 có thể ngay lập tức sử
dụng đường truyền dữ liệu. Điều này vừa làm tăng tốc độ truyền dữ liệu, tối đa hóa
việc sử dụng tài nguyên.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


Ở giai đoạn này Bus Access CPU sẽ có 3 chu kỳ rảnh. Khi chuyển dữ liệu từ vùng
nhớ sang vùng nhớ điều này đảm bảo nhân Cortex – M3 sử dụng 60% dung lượng
của đường truyền dữ liệu cho dù bộ nhớ DMA vẫn hoạt động liện tục.

Trong trường hợp trao đổi dữ liệu từ vùng nhớ sang vùng nhớ mỗi kênh DMA chỉ sử
dụng đường truyễn dữ liệu ở giai đoạn Bus Access và 5 chu kỳ CPU để chuyển 2 byte
HỆ THỐNG NHÚNG

dữ liệu. Trong đó 1 chu kỳ để đọc và 1 chu kỳ để ghi, 3 chu kỳ cịn lại được bố trí xen
kẽ nhằm giải phịng đường dữ liệu cho nhân Cortex.
Điều đó có nghĩa là bộ DMA chỉ sử dụng tối đa 40% băng thơng của đưỡng dữ liệu.
Ví dụ để chuyển dữu liệu từu bus SPI tới SRAM chúng ta sẽ sử dụng:
SPI đến SRAM sử dụng DMA = SPI transfer(APB) +SRAM transfer(AHB) + free
cycle (AHB)= (2 APB cycles +2 AHB cycles) + (2 AHB cycles) + (1 AHB cycle)= (2
APB cycles) +(5 AHB cycles).

3. Tập lệnh Thumb-2.
ARMv7-M là cấu hình vi điều khiển của kiến trúc ARMV7 và khác với các kiến trúc
ARM trước đó ở chỗ nó chỉ hỗ trợ tập lệnh Thumb-2. Tập lệnh Thumb-2 là sự pha
trộn giữa tập lệnh 16 và 32 bit, đạt được hiệu suất của các lệnh ARM 32 bit, đồng thời
phù hợp với mật độ mã cũng như tương thích ngược với tập lệnh gốc Thumb 16 bit.

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

23


Trong một hệ thống dựa trên bộ vi xử lý ARM7, việc chuyển đổi nhân xử lý giữa chế
độ Thumb (có lợi về mật độ mã) và ARM (có lợi về mặt hiệu suất) là cần thiết cho
một số ứng dụng. Cịn bộ vi xử lý Cortex-M3 có các lệnh 16 bit và 32 bit tồn tại trong
cùng một chế độ, cho phép mật độ mã cũng như hiệu suất đều cao hơn mà không cần
phải chuyển đổi phức tạp. Vì tập lệnh Thumb-2 là tập bao hàm của tập lệnh Thumb
16 bit nên bộ vi xử lý Cortex-M3 có thể thực thi các đoạn mã trước đây viết cho
Thumb 16 bit. Do được cài đặt tập lệnh Thumb-2 nên bộ vi xử lý Cortex-M3 có khả

năng tương thích với các thành viên khác của dòng ARM Cortex.
4. Đơn vị bảo vệ bộ nhớ (MPU).
MPU là một thành phần tùy chọn của bộ vi xử lý Cortex-M3, có thể nâng cao độ tin
cậy của hệ thống nhúng bằng cách bảo vệ các dữ liệu quan trọng được hệ điều hành
sử dụng khỏi các ứng dụng khác, tách biệt độc lập các tác vụ đang thực thi bằng cách
không cho phép truy cập vào dữ liệu của nhau, vơ hiệu hố quyền truy cập vào một số
vùng nhớ, cho phép các vùng nhớ được định nghĩa là chỉ đọc (read only) và phát hiện
các truy cập bộ nhớ có thể phá vỡ hệ thống.
HỆ THỐNG
MPU NHÚNG
cho phép một ứng dụng được chia nhỏ thành các tiến trình. Mỗi tiến trình sẽ có

bộ nhớ (code, dữ liệu, ngăn xếp, heap) và thiết bị riêng, cũng như có quyền truy cập
vào bộ nhớ và các thiết bị được chia sẻ. MPU cũng có các quy tắc (rule) truy cập của
người dùng và đặc quyền bao gồm việc thực thi mã tại mức đặc quyền thích hợp cũng
như quyền sở hữu bộ nhớ và các thiết bị của mã đặc quyền và mã người dùng.
MPU chia bộ nhớ thành các vùng riêng biệt và thực hiện việc bảo vệ bằng cách ngăn
các truy cập trái phép. MPU có thể chia bộ nhớ thành tối đa 8 vùng trong đó mỗi
vùng có thể được chia thành 8 vùng con. Kích thước vùng có thể bắt đầu từ 32 byte
và tăng gấp đôi dần cho đến  tối đa 4 gigabyte. Các vùng được đánh số thứ tự bắt đầu
từ 0. Có thể xác định một bản đồ bộ nhớ (memory map) nền mặc định để truy cập đặc
quyền. Việc truy cập đến các địa chỉ bộ nhớ không được xác định trong vùng MPU
hoặc không được phép sẽ tạo ra ngoại lệ lỗi về quản lí bộ nhớ (Memory Management
Fault Exception).

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN

24



5. Gỡ lỗi (Debug) và theo vết (Trace).
Việc gỡ lỗi hệ thống dựa trên bộ vi xử lý Cortex-M3 được thực hiện thơng qua DAP
(Debug Access Port), có thể là một cổng SWD (Serial Wire Debug) sử dụng 2 đường
tín hiệu hoặc một cổng SWJ-D (Serial Wire JTAG Debug) sử dụng giao thức JTAG
hoặc SW. Các SWJ-DP mặc định để chế độ JTAG khi reset và có thể chuyển giao
thức với một chuỗi điều khiển cụ thể được cung cấp bởi phần cứng gỡ lỗi bên ngồi.
Hành động debug có thể được kích hoạt bởi các sự kiện khác nhau như breakpoints,
watchpoints, điều kiện lỗi hoặc yêu cầu debug từ bên ngoài. Chế độ này cũng hỗ trợ
chạy từng bước.
Bộ FPB (Patch Flash and Breakpoint ) có 6 breakpoint trong chương trình và 2
breakpoint nạp dữ liệu, hoặc chuyển lệnh/dữ liệu từ bộ nhớ mã đến bộ nhớ hệ thống.
Bộ FPB này có sáu comparator để so sánh các lệnh được lấy từ bộ nhớ mã. Mỗi
comparator có thể được kích hoạt để định vị lại mã chương trình đến một vùng trong
bộ nhớ hệ thống, hoặc thực hiện một breakpoint phần cứng bằng cách trả về một lệnh
breakpoint cho bộ vi xử lý. Nó cũng có hai comparator với nhiệm vụ tương tự cho dữ
HỆ THỐNG
liệu. NHÚNG

25

Bộ DWT (Data Watchpoint and Trace) có bốn comparator có thể được cấu hình thành
watchpoint phần cứng. Khi được sử dụng trong cấu hình này, comparator có thể được
lập trình để so sánh địa chỉ truy cập dữ liệu hoặc bộ đếm chương trình. Các DWT
comparator cũng có thể được cấu hình để kích hoạt các sự kiện lấy mẫu PC, sự kiện
lấy mẫu địa chỉ dữ liệu và làm cho ETM (Embedded Trace Macrocell) phát ra các gói
kích hoạt trong dịng lệnh đang được truy vết.
ETM là một thành phần tùy chọn để hỗ trợ việc theo vết lệnh để đảm bảo rằng có thể
tái cấu trúc lại việc thực hiện chương trình mà chỉ ảnh hưởng một cách tối thiểu đến
bộ nhớ. ETM cho phép truy vết theo thời gian thực về việc thực thi lệnh và truyền dữ
liệu bằng cách nén thông tin truy vết từ nhân bộ xử lý để giảm thiểu yêu cầu băng

thông

GIẢNG VIÊN HƯỚNG DẪN: ĐINH CÔNG ĐOAN


×