Ngành điện tử và ứng dụng điện tử đã tạo chỗ đứng và khẳng định được tầm quan trọng của mình đối với nhu cầu của con người.Với những ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ
Trang 1TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
KHOA CÔNG NGHỆ ĐIỆN TỬ - THÔNG TIN
Viện Nghiên cứu Điện tử - Tin học – Tự động hóa
Giảng viên hướng dẫn : ThS.NGUYỄN MẠNH HÙNG
Sinh viên thực hiện : NGUYỄN KHẮC HIỂN
Lớp : K20A
Khóa : 2017-2021
Hệ : CHÍNH QUY
Hà Nội, tháng 02/2021
Trang 21/ Tên đề tài TTTN:
Tìm hiểu về vi điều khiển ARM và thực hành lập trình trên KIT Phát triển
STM32F103C8T6
2/ Nội dung chính:
1/ Tìm hiểu về họ của vi điều khiển ARM STM32
2/ Tìm hiểu về dòng STM32F1 dựa trên kít STM32F103C8T6
3/ Thực hành viết các chương trình điều khiển thiết bị ngoại vi trên kít
3/ Cơ sở dữ liệu ban đầu
Kiến thức cơ bản về các môn kỹ thuật số và mạch logic, kỹ thuật mạch, kỹ thuật vi xử
lý, ngôn ngữ lập trình C Giáo trình vi điều khiển 8051; Giáo trình thực hành vi điều khiểnPIC; Đồ án môn học 1 – Thiết kế mạch tương tự ; Đồ án môn học 2 – Thiết kế mạch số
4/ Ngày giao : ……….
5/ Ngày nộp: ………
(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)
Trang 3MỞ ĐẦU
Ngày nay với sự phát triển của ngành điện tử và ứng dụng điện tử đã giúp sựsáng tạo của con người trở thành hiện thực Các lĩnh vực của cuộc sống đều áp dụngnhững thiết bị điện tử và dường như nhìn đâu trong gia đình chúng ta cũng có thiết bịđiện tử Ngành điện tử và ứng dụng điện tử đã tạo chỗ đứng và khẳng định được tầmquan trọng của mình đối với nhu cầu của con người
Với những ứng dụng cho các hệ thống nhúng ngày càng trở nên phổ biến: từnhững ứng dụng đơn giản như điều khiển một chốt đèn giao thông định thời, đếm sảnphẩm trong một dây chuyền sản xuất, điều khiển tốc độ động cơ điện một chiều, thiết
kế một biển quảng cáo dùng Led ma trận, một đồng hồ thời gian thực Đến các ứngdụng phức tạp như hệ thống điều khiển robot, bộ kiểm soát trong nhà máy hoặc hệthống kiểm soát các máy năng lượng hạt nhân Các hệ thống tự động trước đây sửdụng nhiều công nghệ khác nhau như các hệ thống tự động hoạt động bằng nguyên lýkhí nén, thủy lực, rơle cơ điện, mạch điện tử số, các thiết bị máy móc tự động bằng cáccam chốt cơ khí Các thiết bị, hệ thống này có chức năng xử lý và mức độ tự động thấp
so với các hệ thống tự động hiện đại được xây dựng trên nền tảng của các hệ thốngnhúng
Trong nhiều năm trước, các dòng vi điều khiển 8051 được sinh viên dùng nhiềuvới tính năng đơn giản, dễ sử dụng; AVR được sử dụng nhiều trong các cuộc thiRobocon nhờ tốc độ sử lý khá cao, ổn định; PIC với ưu thế tốc độ cao, chi phí thấphơn cũng được nghiên cứu, sử dụng nhiều, đặc biệt trong các cuộc thi lập trình taynghề khu vực và thế giới Nhưng trong một vài năm trở lại đây, có một dòng vi điềukhiển mới, càng ngày càng nắm vị trí quan trọng trong các lĩnh vực đòi hỏi tốc độ xử
lý cao như điện tử viễn thông, sản xuất các dòng diện thoại di động smartphone, giámsát, an ninh Đó là họ vi điều khiển ARM Với rất nhiều thế hệ ra đời, với nhiều tínhnăng , công dụng khác nhau
Với nhiều tính năng vượt trội của ARM và xu thế lựa chọn dòng vi điều khiểnmới ở Việt Nam nên trong đề tài thực tập tốt nghiệp này, dưới sự giúp đỡ của Thầy
Nguyễn Mạnh Hùng, em thực hiện đề tài “ Tìm hiểu về vi điều khiển ARM và thực hành lập trình trên KIT Phát triển STM32F103C8T6 ”.
Trang 4nghiệp khi bước vào nghề.
Đặc biệt, em xin trân trọng cảm ơn giáo viên hướng dẫn – thầy Nguyễn MạnhHùng và chú Lê Mạnh Hùng – trưởng phòng đo lường chất lượng Viện nghiên cứuĐiện tử, Tin Học, Tự động hóa đã hết lòng giúp đỡ, hướng dẫn để em hoàn thành báocáo thực tập đúng thời gian qui định
Mặc dù trải qua và giải quyết những khó khăn và thử thách nhưng do kiến thứccòn hạn chế nên trong đồ án này chúng em còn nhiều thiếu sót Em hy vọng quý Thầy
Cô thông cảm và tận tình đóng góp ý kiến quý báu để em có thể tiến hành cải tiếnnhững mô hình về sau sao cho toàn diện nhất
Một lần nữa em xin chân thành cảm ơn!
Hà Nội, ngày tháng năm 2021
SINH VIÊN THỰC HIỆN
Nguyễn Khắc Hiển
Trang 5NHẬN XÉT CỦA CƠ QUAN THỰC TẬP
ĐỀ TÀI: TÌM HIỂU VỀ VI ĐIỀU KHIỂN ARM STM32 VÀ VIẾT CÁC BÀI TẬP THỰC HÀNH
ĐƠN VỊ THỰC TẬP: VIỆN NGHIÊN CỨU ĐIỆN TỬ, TIN HỌC, TỰ ĐỘNG HÓA GIÁO VIÊN HƯỚNG DẪN : ThS.NGUYỄN MẠNH HÙNG
SINH VIÊN THỰC HIỆN : NGUYỄN KHẮC HIỂN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Hà Nội, ngày tháng năm 2021
CÁN BỘ HƯỚNG DẪN
Trang 6………
………
………
………
………
………
………
………
………
………
………
………
………
………
Hà Nội, ngày tháng năm 2021
GIÁO VIÊN HƯỚNG DẪN
Trang 7MỤC LỤC
GIỚI THIỆU 10
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32 11
1.1 Giới Thiệu Về Vi Điều Khiển ARM 11
1.1.1 Lịch sử phát triển của ARM 11
1.1.2 Giới thiệu chung vể ARM Cortex 12
1.1.3 Giới thiệu ARM Cortex M3 12
1.2 Tìm hiểu chung về STM32 13
1.2.1 Kiến trúc hệ thống 16
1.2.2 Các ngoại vi 18
1.2.3 Kết nối với các giao tiếp khác 27
1.2.4 Các chế độ sử dụng công suất tiêu thụ thấp 33
1.2.5 Sự tiêu thụ công suât của nguồn dự phòng 35
1.2.6 Hỗ trợ Debug 35
1.3 Tính an toàn 36
1.3.1 Reset Control 36
1.3.2 Kiểm tra điện áp nguồn 36
1.3.3 Hệ thống an toàn xung nhịp 37
1.4 Flash 39
1.4.1 Lập trình và đảm bảo an toàn cho FLASH nội 39
1.4.2 Hoạt động xóa và ghi 39
1.4.3 Các byte Opiton 40
CHƯƠNG 2: TÌM HIỂU CÁC HỌ CỦASTM32 41
2.1 STM32L5 41
2.2 STM32H7 41
2.3 STM32F7 42
2.4 STM32F3 42
2.5 STM32F4 42
2.6 STM32G4 : 43
2.7 STM32L4: 44
2.8 STM32L4+: 44
2.9 STM32F1: 45
2.10 STM32F2: 45
2.11 STM32L1: 46
2.12 STM32G0: 47
2.13 STM32L0: 47
2.14 STM32F0: 48
CHƯƠNG 3 :THỰC HÀNH LẬP TRÌNH TRÊN KIT STM32F103C8T6 49
Trang 8DANH MỤC TÀI LIỆU THAM KHẢO 75
Trang 9DANH MỤC HÌNH VẼ
Hình 1.1 Một số ứng dụng của ARM 11
Hình 1.2: Kiến trúc vi xử lí ARM Cortex-M3 13
Hình 1.3: Kiến trúc của STM32 nhánh Performance và Access 14
Hình 1.4 Cấu trúc Bus 16
Hình 1.5 Vùng nhớ Flash trên STM32 17
Hình 1.6 STM32 bao gồm 2 bộ tạo xung nhịp nội và 2 bộ tạo xung nhịp ngoại 17
Hình 1.7 Mô tả ngắt ngoài 20
Hình 1.8 Bộ ADC STM32 21
Hình 1.9 Các mức thời gian chuyển đổi ADC 21
Hình 1.10 4 khối định thời với các thanh ghi 16-bit Prescaler 16-bit Counter và Auto-reload Xung nhịp hoạt động có thể lấy từ đồng hồ hệ thống, tín hiệu ngoại và các khối định thời khác .22
Hình 1.11 Mỗi một kênh Capture/Compare đều có một thanh ghi đơn cấu hình chế độ hoạt động Bit Capture Compare Selection dùng để chọn chế độ 23
Hình 1.12 4 kênh vào của khối Capture có các bộ lọc dữ liệu và phát hiện xung cạnh riêng Khi sự kiện capture được nó có thể được dùng để kích hoạt một sự kiện DMA khác 23
Hình 1.13 Ngõ vào Capture và xung PWM 24
Hình 1.14 Mỗi khối Timer đều có khả năng tạo ra các xung PWM 24
Hình 1.15 Chế độ One Pulse 25
Hình 1.16 Mỗi khối Timer có đầu vào là các xung sự kiện 25
Hình 1.17 Cấu hình các khối Timer kết hợp lại tạo thành mảng các Timer 26
Hình 1.18 Khối RTC có thể lấy nguồn xung nhịp từ LSI, LSE và HSE 27
Hình 1.19 Giao tiếp SPI 28
Hình 1.20 giao tiếp SPI với SD card 28
Hình 1.21 Giao tiếp I2C 29
Hình 1.22 Kiểm tra lỗi trên I2C 29
Hình 1.23 Giao diện USART có khả năng hỗ trợ giao tiếp không đồng bộ 30
Hình 1.24 Hỗ trợ giao tiếp ở chế độ hafl-duplex dựa trên một đường truyền 30
Hình 1.25 Giao tiếp smartcard và hồng ngoại 31
Hình 1.26 Hỗ trợ giao tiếp đồng bộ SPI 31
Hình 1.27 khối điều khiên CAN 31
Hình 1.28 Khối CAN có 3 mailbox cho truyền dữ liệu với đánh nhãn thời gian 32
Hình 1.29 Giao tiếp USB 2.0 33
Hình 1.30 Thời gian đánh thức trong chế độ Stop dài nhất là 5,5 us với bộ điều áp chạy bình thường và 7,3 us với bộ điều áp trong chế độ công suất thấp 34
Hình 1.31 Trong chế độ Standby tiêu thụ điện năng là 2uA với thời gian đánh 35
Hình 1.32 STM32 có thể có nhiều tín hiệu điều khiển để đưa hệ thống về trạng 36
Trang 10Hình 3.5 Tạo 1 mới project trong CubeMX 55
Hình 3.6 Thiết lập dao động RCC 56
Hình 3.7 Cấu hình chip trên STM32CubeMx 56
Hình 3.8 Tạo code trên STM32CubeMX 57
Hình 3.9 Cấu hình chip trên STM32CubeMx 58
Hình 3.10 Cấu hình chip trên STM32CubeMx 64
Hình 3.11 khối hiển thị LCD 16x2 66
Hình 3.12 Cấu hình chip trên STM32CubeMx 67
Hình 3.13 Kết quả sau khi chạy chương trình lcd 70
Hình 3.14 Khối Led 7 thanh 71
Hình 3.15 Cấu hình chip trên STM32 CubeMX 72
Trang 11BÁO CÁO THỰC TẬP GIỚI THIỆU
GIỚI THIỆU Đặt vấn đề
Trong vài năm trở lại đây, một trong những xu hướng chủ yếu trong các thiết kế với viđiều khiển là sử dụng các chip lõi ARM như một vi điều khiển đa dụng Ngày nay cácnhà sản xuất IC đựa ra thị trường rất nhiều dòng vi điều khiển sử dụng lõi ARM Tậpđoàn ST Microelectronic đã cho ra mắt dòng STM32, vi điều khiển đầu tiên dựa trênnền lõi ARM Cortex-M3 thế hệ mới do hãng ARM thiết kế, lõi ARM Cortex-M3 là sựcải tiến của lõi ARM7 truyền thống, từng mang lại sự thành công vang dội cho công tyARM Dòng STM32 thiết lập các tiêu chuẩn mới về hiệu suất, chi phí, cũng như khảnăng đáp ứng các ứng dụng tiêu thụ năng lượng thấp và tính điều khiển thời gian thựckhắt khe Với ứng dụng rộng rãi: từ điện tử dân dụng, xe hơi đời mới, game, mobile ,laptop, chỗ nào ARM cũng có mặt Dòng STM32 tiêu thụ năng lượng cực thấp trongkhi đó hiệu suất cực cao và việc lập trình cũng rất dễ dàng Với sự đồ sộ về ngoại vi(GPIO, I2C, SPI, ADC, USB, Ethernet, CAN ), ST cung cấp cho chúng ta các thưviện
trực tiếp cho mỗi dòng ARM (gọi là CMSIS - Cortex Microcontroller SoftwareInterface
Standard), nhiệm vụ của chúng ta không thể dễ dàng hơn: khai báo và sử dụng màthôi
Mà giá thành cũng khá rẻ so với các dòng chip hiện có trên thị trường
Mục tiêu nghiên cứu
Tìm hiểu về dòng chip STM32 cùng các ngoại vi giao tiếp
Nội dung nghiên cứu
- Tìm hiểu về dòng chip STM32
- Tìm hiêu về chip STM32F103C8T6
- Tìm hiểu các giao tiếp của chip STM32F103C8T6 như: GPIO, I2C, SPI, ADC,
USB, Ethernet, CAN
Bố cục
Chương 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Chương 2: TÌM HIỂU CÁC HỌ CỦA STM32
Chương 3: THỰC HÀNH LẬP TRÌNH TRÊN KIT STM32F103C8T6
Trang 12Hình 1.1 Một số ứng dụng của ARM
1.1.1 Lịch sử phát triển của ARM
Việc thiết kế ARM được bắt đầu từ năm 1983 trong một dự án phát triển của công tymáy tính Acorn
Kiến trúc Số bit Tên lõi
ARMv7EM
ARMv7-R
32 ARM-Cortex-M4
ARM-Cortex-R4, ARM-Cortex-R5, ARM-Cortex-R7
Trang 13BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
ARMv7-A 32 A5, A7,
ARM-Cortex-A8,ARM- Cortex-A9, ARM-Cortex-A12, ARM-Cortex:A15 và A17
ARMv8A 64/32 ARM-Cortex-A53, ARM-Cortex-A57
Bảng 1.1 Các dòng phát triển của ARM
1.1.2 Giới thiệu chung vể ARM Cortex
Dòng ARM Cortex là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn chonhu cầu đa dạng về công nghệ Không giống như các chip ARM khác, dòng Cortexk làmột lõi xử lí hoàn thiện, đưa ra một chuẩn CPU và kiến trúc hệ thống chung Để phùhợp với nhu cầu sử dụng, ARM Cortex được chia làm 3 dòng chính:
Cortex-A: Bộ xử lý dành cho hệ điều hành và các ứng dụng phức tạp Hỗ trợtập lệnh ARM, thumb, và thumb-2
Cortex-R: Bộ xử lý dành cho hệ thống đòi hỏi khắc khe về đáp ứng thời gianthực Hỗ trợ tập lệnh ARM, thumb, và thumb-2
Cortex-M: Bộ xử lý dành cho dòng vi điều khiển, tối ưu về giá thành Hỗ trợtập lệnh Thumb-2 Dòng ARM STM32 có lõi Cortex-M
1.1.3 Giới thiệu ARM Cortex M3
Một số đặc điểm của ARM Cotex–M3:
ARM Cortex–M3 được xây dựng dựa trên kiến trúc ARMv7–M 32 bit
Kiến trúc Harvard tách biệt Bus dữ liệu và lệnh
Đơn vị bảo vệ bộ nhớ (MPU–Memory Protection Unit): Hỗ trợ bảo vệ
bộ nhớ thông qua việc phân quyền thực thi và truy xuất
Bộ vi xử lý Cortex-M3 hỗ trợ kiến trúc tập lệnh Thumb–2
Hỗ trợ kỹ thuật Bit Band giúp cho phép truy xuất dữ liệu theo bit đồngthời giảm thời gian truy xuất
Cho phép truy cập dữ liệu không xếp hàng (unaligned data accesses) đặcđiểm này cho phép sử dụng hiệu quả SRAM nội
SysTick timer 24 bit hỗ trợ cho việc chạy hệ điều hành thời gian thực
Hỗ trợ lập trình và gỡ rối qua cổng JTAG truyền thống cũng như chuẩn 2dây nhỏ gọn SWD (Serial Wire Debug)
Khối quản lý vector ngắt lồng nhau (NVIC–Nested Vectored InterruptController) cho phép rút ngắt thời gian đáp ứng yêu cầu ngắt
Trang 14Hình 1.2: Kiến trúc vi xử lí ARM Cortex-M3
1.2 Tìm hiểu chung về STM32
STM32 là vi điều khiển dựa trên nền tảng lõi ARM Cortex-M3 thế hệ mới dohãng ARM thiết kế Lõi ARM Cortex-M3 là sự cải tiến từ lõi ARM7 truyền thốngtừng mang lại thành công vang dội cho công ty ARM
Một vài đặc điểm nổi bật của STM32
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ác nhau, được phân thành hai dòng: dòng Performance có tần số hoạt động của CPUlên tới 72Mhz và dòng Access có tần số hoạt động lên tới 36Mhz Các biến thể STM32trong hai 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ời kích thước bộ nhớ FLASH ROM có thể lên tới 512K và 64K SRAM
Trang 15BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Hình 1.3: Kiến trúc của STM32 nhánh Performance và Access
Nhánh Performance hoạt động với xung nhịp lên đến 72Mhz và có đầy đủ cácngoại vi, nhánh Access hoạt động với xung nhịp tối đa 36Mhz và có ít ngoại vi hơn sovới nhánh Performance
a Sự tinh vi
Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiểnkhác, như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC Tuy nhiênmỗ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íchhợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiềuchế độ chuyển đổi Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiệnvới tính năng 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 ra một mảng các định thờitinh 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 raPWM với dead time (khoảng thời gian được chèn vào giữa hai đầu tí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 đường break input (khiphá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ạ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ứngcho 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ỗikênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanhghi 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ửihoặ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 độnglinh 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ố 72MHz và dòng tiêu thụ chỉ có 36mA với
Trang 16ngoại vi tinh vi Để đáp ứng các yêu cầu khắc khe đó, STM32 cung cấp một số tínhnă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áthiện điện áp thấp, một 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) Watchdog này phải được làm tươitrong một khung thời gian xác định Nếu nhấn nó quá sớm, hoặc quá 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 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ện lỗ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
c Tính bảo mật
Một trong những yêu cầu khắc khe khác của thiết kế hiện đại là nhu cầu bảomậ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ủaSTM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug Khi tínhnăng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngănchặ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ờigian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin Khu vựcnà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ệnngắ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
d 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áttriển cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex Ngoài ra STcũng cung 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ểnUSB như là một thư viện ANSI C và mã nguồn đó là tương thích với các thư việntrước đó được công bố cho vi điều khiển STR7 và STR9 Có rất nhiều RTOS mãnguồn mở và thương mại và middleware (TCP/IP, hệ thống tập tin, v.v.) hỗ trợ cho họCortex 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 (DebugAccess Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2 dây (serial wire-2
Trang 17BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thống CoreSight trên STM32cung cấp hệ thống điểm truy cập (data watchpoint) và một công cụ theo dõi(instrumentation trace) Công cụ này có thể gửi thông tin về ứng dụng được lựa chọnđến công cụ gỡ lỗi Điều này có thể cung cấp thêm các thông tin gỡ lỗi và cũng có thểđược sử dụng trong quá trình thử nghiệm phần mềm
e Dò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 đa72MHz Dòng Access có các thiết bị ngoại vi ít hơn và chạy tối đa 36MHz Quantrọ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 dòng Access và dòng Performance Điều này cho phép các phiên bảnkhác nhau của STM32 được hoán vị mà không cần phải sửa đổi sắp sếp lại footprint(mô hình chân của chip trong công cụ layout bo mạch) trên PCB (Printed CircuitBoard)
Ngoài hai dòng Performance và Access đầu tiên, hiện nay ST đã đưa ra thịtrường thêm hai dòng USB Access và Connectivity
1.2.1 Kiến trúc hệ thống
STM32 gồm nhân Cortex kết nối với bộ nhớ FLASH thông qua đường bus lệnhchuyê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)
Hình 1.4 Cấu trúc Bus
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à matrận bus đường dữ liệu cho nhân Cortex and bộ điều khiển DMA truy cập tài nguyêntrên vi xử lý
1.2.1.1 Cấu trúc bộ nhớ
Trang 18Hình 1.5 Vùng nhớ Flash trên STM32
Vùng nhớ dành cho flash được chia nhỏ thành 3 vùng Vùng thứ nhất gọi là User Flashbắ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 4Kbytes thông thường sẽ được nhà sản xuất cài đặtbootloader Cuối cùng là vùng nhớ nhỏ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thông tincấu hình dành cho STM32 Bootloader thường được dùng để tải chương trình thôngqua USART1 và chứa ở vùng User Flash
1.2.1.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ịpnộ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ònlại là Low Speed Internal Oscillator hoạt động ở mức 32768KHz
Hình 1.6 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 Có một vấn đề là đối với bộ tạo dao động nội tốc độ cao xung nhịp khônghoạt động chính xác ở 8MHz do đó khi sử dụng các thiết bị ngoại vi như: giao tiếpserialhay 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 độ
Trang 19BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
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)
a Các cổng I/O đa dụng
STM32 có 5 cổng I/O đa dụng với 80 chân điều khiển
Mỗi chân điều khiển có thể cấu hình như là GPIO hoặc có chức năng thay thế
khác Hoặc mỗi chân có thể cùng lúc là nguồn ngắt ngoại.
Các cổng I/O được đánh số từ A->E và mức áp tiêu thụ ở 5V Nhiều chân ngoại có thểđược cấu hình như là Input/Output tương tác với các thiết bị ngoại vi riêng của ngườidùng như USART hay I2C Thêm nữa có thể cấu hình các chân này như là nguồn ngắtngoại kết hợp với cổng GPIO khác
Trang 20Mỗi cổng GPIO đều có 2 thanh ghi 32-bit điều khiển Như vậy ta có 64-bit để cấu hình
16 chân của một cổng GPIO Như vậy mỗi chân của cổng GPIO sẽ có 4 bit để điềukhiển: 2 bit sẽ quy định hướng ra vào dữ liệu: input hay output, 2 bit còn lại sẽ quyđịnh đặc tính dữ liệu
Sau khi cổng được cấu hình, ta có thể bảo vệ các thông số cấu hình bằng cách kíchhoạt thanh ghi bảo vệ Trong thanh ghi này, mỗi chân trong cổng đều cómột bit bảo vệtương ứng để tránh các thay đổi vô ý ở các 4 bit cấu hình Để kích hoạtchế độ bảo vệ,
ta ghi lần lượt giá trị 1,0,1 vào bit 16:
Để dễ dàng đọc và ghi dữ liệu trên cổng GPIO, STM32 cung cấp 2 thanh ghi Input vàOutput data Kỹ thuật bit banding được hỗ trợ nhằm thực hiện các thao tác bit trênthanh ghi dữ liệu Thanh ghi 32-bit Set/Reset, với 16 bit cao ánh xạ tới mỗi chân củacổng điều khiển reset khi được thiết lập giá trị 1 Tương tự vậy 16 bit thấp điều khiểnSet khi được gán giá trị 1
- Các chức năng thay thế
Chức năng thay thế cho phép người dùng sử dụng các cổng GPIO với các ngoại vikhác Để thuận tiện cho thiết kế phần cứng, một thiết bị ngoại vi có thể được ánh xạ tớimột hay nhiều chân của vi xử lý STM32 Sử dụng các tính năng thay thế của STM32được điều khiển bởi các thanh ghi “Remap & Debug I/O” Mỗi thiết bị ngoạivi( USART, CAN, Timers, I2C và SPI) có 1 hoặc 2 trường bit điều khiển ánh xạ tớicác chân của vi điều khiển Một khi các chân được cấu hình sử dụng chức năng thaythế, các thanh ghi điều khiển GPIO sẽ được sử dụng để điều khiển các chức năng thaythế thay vì tác vụ I/O Các thanh ghi Remap còn điều khiển bộ JTAG Khi hệ thốngkhởi động, cổng JTAG được kích hoạt tuy nhiên chức năng theo dõi dữ liệu(data trace)vẫn chưa khởi động JTAG khi đó có thể chuyển sang chế độ debug, xuất dữ liệu theodõi ra ngoài, hoặc đơn giản chỉ sử dụng như cổng GPIO
b Ngắt ngoại ( EXTI )
NVIC cung cấp bảng vector ngắt riêng biệt dành cho các ngắt từ 0-4, ngắt RTC, ngắtPower detect và ngắt USB wake up Các ngắt ngoại còn lại chia làm 2 nhóm 5 -10, và11-15 được cung cấp thêm 2 bảng ngắt bổ sung Các ngắt ngoại rất quan trọng trongquản lý tiêu thụ năng lượng của STM32 Chúng có thể được sử dụng để “đánh thức”
Trang 21BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
nhân vi xử lý từ chế độ STOP khi cả 2 nguồn tạo xung nhịp chính ngưng hoạt động.EXTI có thể tạo ra các ngắt để thoát ra
khỏi sự kiện Wait của chế độ Interrupt và thoát khỏi sự kiện Wait của chế độ Event
đó 16 kênh dành cho các tín hiệu ngoại, 2 kênh còn lại dành cho cảm biến nhiệt và vôn
kế nội
Trang 22Hình 1.8 Bộ ADC STM32
Bộ ADC cho phép người dùng có thể cấu hình thời gian chuyển đổi riêng biệt cho từngkênh Có 8 mức thời gian chuyển đổi riêng biệt từ 1.5 đến 239.5 chu kỳ
Hình 1.9 Các mức thời gian chuyển đổi ADC
Mỗi bộ ADC có 2 chế độ chuyển đổi: thông thường(regular) và injected Ở chế độregular cho phép một hay một nhóm các kênh kết hợp với nhau thực thi tác vụ chuyểnđổi Một nhóm kênh tối đa có thể gồm 16 kênh Thứ tự chuyển đổi trong nhóm có thểđược cấu hình bởi phần mềm, và trong một chu kỳ chuyển đổi của nhóm, một kênh cóthể được sử dụng nhiều lần Chuyển đổi regular có thể được kích hoạt bằng sự kiệnphần cứng của Timer hay ngắt ngoại EXTI 1
d Bộ định thời đa nhiệm và nâng cao
Trang 23BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
STM32 có bốn khối định thời Timer1 là khối nâng cao dành cho điều khiển động cơ
3 khối còn lại đảm nhiệm chức năng đa nhiệm Tất cả chúng đều có chung kiến trúc,khối nâng cao sẽ có thêm các đặc tính phần cứng riêng biệt
- Bộ định thời đa nhiệm
Tất cả các khối định thời đều gồm bộ đếm 16-bit với thanh ghi chia tần số dao động16-bit(prescaler) và thanh ghi tự nạp(auto-reload) Bộ đếm của khối định thời có thểđược cấu hình để đếm lên, đếm xuống hay trung tính(lên xuống xen kẽ nhau) Xungnhịp cho đồng hồ có thể được lựa chọn dựa trên 8 nguồn khác nhau: từ đồng hồchuyên biệt được lấy từ đồng hồ hệ thống, từ xung nhịp chân ra lấy từ khối định thờikhác, hoặc từ nguồn xung nhịp ngoại
Hình 1.10 4 khối định thời với các thanh ghi 16-bit Prescaler 16-bit Counter và Auto-reload Xung nhịp hoạt động có thể lấy từ đồng hồ hệ thống, tín hiệu ngoại và
Trang 24Hình 1.11 Mỗi một kênh Capture/Compare đều có một thanh ghi đơn cấu hình chế
độ hoạt động Bit Capture Compare Selection dùng để chọn chế độ.
Khối Capture
Một khối Capture cơ bản gồm có bốn kênh vào để cấu hình bộ phát hiện xung(EdgeDetector) Khi một xung lên(rising edge) hay xung cạnh xuống( falling edge) đượcphát hiện, bộ đếm hiện thời của sẽ được cập nhật vào các thanh ghi 16 -bitCapture/Compare
Hình 1.12 4 kênh vào của khối Capture có các bộ lọc dữ liệu và phát hiện xung cạnh riêng Khi sự kiện capture được nó có thể được dùng để kích hoạt một sự kiện
DMA khác.
Trang 25BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Chế độ PWM Input
Khối Capture có thể được cấu hình dùng 2 ngõ Capture đầu vào để đo tín hiệu PWM ởngoài
Hình 1.13 Ngõ vào Capture và xung PWM
Ở chế độ đo tín hiệu PWM, 2 kênh Capture được dùng để đo chu kỳ Period và Dutycủa sóng PWM
Ở chế độ PWM sử dụng 2 kênh Capture Ở thời điểm bắt đầu chu kỳ PWM, bộ đếmđược thiết lập giá trị 0 và bắt đầu đếm lên khi phát hiện ra các tín hiệu cạnh lên(risingedge) Khi tín hiệu cạnh xuống được phát hiện(falling edge) giá trị bộ đếm giá trị củachu kỳ Duty được tăng thêm
Chế độ PWM
Mỗi khối Timer đều có khả năng tạo các xung nhịp PWM Ở chế độ tạo xung PWM,giá trị Period được lưu trong thanh ghi Auto Reload Trong khi đó giá trị Duty đượclưu ở thanh ghi Capture/Compare Có hai kiểu tạo xung PWM, một là canh lề(edge-aligned) và canh lề giữa(centre-aligned) Với edge-aligned cạnh xuống của tín hiệutrùng với thời điểm thanh ghi reload cập nhật lại giá trị Với centre-aligned thời điểmthanh ghi reload cập nhật lại là khoảng giữa của chu kỳ Duty
Hình 1.14 Mỗi khối Timer đều có khả năng tạo ra các xung PWM
Trang 26Hình 1.15 Chế độ One Pulse
- Đồng bộ hóa định thời
Mặc dù các bộ định thời hoạt động hoàn toàn độc lập với nhau, tuy nhiên chúng có thểđược đồng bộ hóa từng đôi một hay toàn bộ
Hình 1.16 Mỗi khối Timer có đầu vào là các xung sự kiện
Mỗi khôi Timer 3 đường vào hỗ trợ các xung sự kiện từ 3 khối Timers còn lại Ngoài
ra chân Capture từ Timer1 và Timer2(TIFP1 và TIFP2) cũng được đưa khối điều khiển
sự kiện của mỗi Timer
Trang 27BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Hình 1.17 Cấu hình các khối Timer kết hợp lại tạo thành mảng các Timer
Ở mô hình tạo thành một mảng Timer, một Timer đóng vai trò Master, các Timer cònlại đóng vai trò là Slave
e RTC và các thanh ghi Backup
STM32 bao gồm 2 khối nguồn chính: nguồn dành cho nhân CPU, các thiết bị ngoại vi
và nguồn dành cho khối dự phòng Cùng được thiết kế chung với khối dự phòng là 10thanh ghi 16-bit, đồng hồ thời gian thực RTC và một khối Watchdog độc lập Cácthanh ghi dự phòng đơn giản chỉ là 10 vùng nhớ để lưu các giá trị dữ liệu quan trọngkhi hệ thống đi vào chế độ Standby và nguồn chính của hệ thống bị ngắt Ở chế độ tiếtkiệm năng lượng, đồng hồ RTC và Watchdog có thể được dùng kích hoạt hệ thốnghoạt động trở lại STM32 có một đồng hồ thời gian thực với thanh ghi đếm 32-bit vàgiá trị tăng lên một sau mỗi giây nếu xung nhịp đầu vào của nó là 32.768KHz Khi cấuhình xung nhịp hoạt động hệ thống, xung nhịp nguồn cho đồng hồ RTC này có thểđược lấy từ 3 nguồn: LSI, LSE, HSE với giá trị chia là 128
Trang 34Hình 1.29 Giao tiếp USB 2.0
Với 8 endpoint, có thể hoạt động dưới các chế độ : Control, Interrupt, Bulk hoặcIsochronous Vùng đệm dữ liệu 512 byte SRAM của các endpoint được chia sẻ vớigiao diện CAN Khi được cấu hình, ứng dụng sẽ chia vùng đệm này thành các phầntương ứng với các endpoint Các vùng đệm này đảm bảo dữ liệu được truyền nhận liêntục trên mỗi endpoint
1.2.4 Các chế độ sử dụng công suất tiêu thụ thấp
Cấu hình chế độ RUN mode của STM32 một cách cẩn thận có thể giảm công suất tiêuthụ khoảng 8,5mA Nhằm đạt được các ứng dụng công suất thấp thực chúng ta phải sửdụng các chế độ công suất thấp của STM32
a SLEEP
Mức đầu tiên của hoạt động công suất thấp là chế độ SLEEP mode Mặc định, khi mộtlệnh WFE hoặc WFI được thực hiện bộ xử lý Cortex sẽ tạm dừng các đồng hồ xungnhịp nội và dừng thực thi mã ứng dụng Trong chế độ SLEEP các phần còn lại củaSTM32 vẫn tiếp tục hoạt động STM32 sẽ thoát khỏi SLEEP mode khi một ngoại vinào đó phát sinh ngắt Khi STM32 vào SLEEP mode cùng tất cả ngoại vi đang hoạtđộng và nó chạy ở 72MHz từ HSE thông qua bộ nhân PLL, công suất tiêu thụ của nóvào khoảng 14.4mA
b STOP Mode
STM32 có thể được cấu hình để vào chế độ công suất thấp STOP Mode bằng cáchthiết lập bit SLEEPDEEP trong thanh ghi điều khiển công suất Cortex (the Cortexpower control register) và xóa bit Power Down Deep Sleep (PDDS) trong thanh ghiđiều khiển công suất STM32 Một khi STM32 đã vào chế độ STOP, tiêu thụ điện năngcủa nó giảm mạnh xuống khoảng 24 uA thay vì hàng mA ở chế độ RUN
Trang 35BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
Hình 1.30 Thời gian đánh thức trong chế độ Stop dài nhất là 5,5 us với bộ điều áp chạy bình thường và 7,3 us với bộ điều áp trong chế độ công suất thấp.
c Stanby
STM32 có thể được cấu hình để vào chế độ Standby bằng cách thiết lập bitSLEEPDEEP trong thanh ghi điều khiển công suất Cortex và thiết lập bit Power DownDeep Sleep (PDDS) trong thanh ghi điều khiển công suất của STM32 Bây giờ, khilệnhWFI hoặc WFE được thực hiện, STM32 sẽ vào chế độ năng lượng thấp nhất củanó
Trong chế độ Standby, STM32 thực sự tắt Các điều điện áp nội bộ được tắt các bộ tạodao động HSE và HIS cũng tắt Trong chế độ này STM32 chỉ chiếm 2uA
Trang 36Hình 1.31 Trong chế độ Standby tiêu thụ điện năng là 2uA với thời gian đánh
thức là 50uS.
Chúng ta có thể thoát khỏi chế độ Standby bằng cách sử dụng tín hiệu ngắt của khốiRTC tương tự như trong chế độ STOP Ngoài ra ta có thể sử dụng chân Reset ngoạihay chân Reset từ Watchdog độc lập Chế độ Standby có thể kết thúc khi có xung nhịpcạnh lên(rising edge) ở chân 0 của Port A nếu chân này được cấu hình như là chân cótính năng WKUP bằng cách thiết lập bi EWUP ở thanh ghi Power và Status Standby
là chế độ tiêu thụ ít năng lượng nhất cho nên sẽ mất nhiều thời gian để hệ thống phụchồi trở lại trạng thái hoạt động bình thường
1.2.5 Sự tiêu thụ công suât của nguồn dự phòng
Vùng năng lượng dự phòng (Backup Region) chứa pin dự phòng đề duy trì RAM vàRTC trong suốt thời gian các chế độ công suất thấp Vùng này tiêu thụ khoảng 1,4 uA
Trang 37BÁO CÁO THỰC TẬP CHƯƠNG 1: CƠ SỞ LÝ THUYẾT VỀ STM32
nội HSI chạy trong các chế độ năng lượng thấp tương ứng, cung cấp một đường xungxung nhịp dành cho khối gỡ lỗi CoreSight
Hình 1.32 STM32 có thể có nhiều tín hiệu điều khiển để đưa hệ thống về trạng thái Reset Trạng thái hệ thống sẽ được lưu lại trong thanh ghi RCC
1.3.2 Kiểm tra điện áp nguồn
Là một phần của bộ giám sát nguồn cung cấp nội của STM32 chứa một đơn vị giámsát nguồn được gọi là bộ Kiểm tra điện áp nguồn - Power Voltage Detect (PVD) PVD
có ngưỡng khả trình có thể được thiết lập với sai số 0.1V từ 2.2V đến 2.9V Ngưỡngnày được cấu hình trong các thanh ghi kiểm soát nguồn
Hình 1.33 Đầu ra của PVD được kết nối với 16 đường của bộ ngắt ngoài.
Trang 38vấn đề, nó sẽ sử dụng hệ thống tạo dao động nội HSI 8MHz.
Hình 1.34 Hệ thống dao động thạch anh nội
Khối CSS được kích hoạt bằng cách thiết lập bit Clock Security Enable trong thanhghi điều khiển RCC
1.3.4 Watchdogs
STM32 chứa hai Watchdogs riêng biệt Watchdog độc lập(independent watchdog) làhoàn toàn tách biệt với hệ thống STM32 chính Nó được đặt trong miền nguồn điện dựphòng và xung nhịp của nó bắt nguồn từ dao động nội tốc độ thấp (LSI - Low SpeedOscillator) Windowed Watchdog là một phần của hệ thống STM32 chính và được cấpxung clock thông qua đường truyền xung nhịp ngoại vi số 1(PCLK1)
a Windowed Watchdog
Windowed Watchdog là một phiên bản nâng cao hơn của Watchdog truyền thống trênchip Sau khi kích hoạt, Watchdog sẽ đếm ngược và sẽ tạo ra tín hiệu Reset khi giá trịcủa thanh ghi thay đổi từ 0x40 sang 0x3F tức là khi bit T6 bị xóa Giá trị đếm ngưỡngtrên được lưu trong thanh ghi cấu hình Windowed Watchdog