0: Không có chuyển đổi kênh thường nào khởi động 1: Chuyển đổi kênh thường vừa mới khởi động ‒ Bit 3 JSTRT: Cờ khởi động kênh Injected Bit này được thiết lập bởi phần cứng khi bắt
Trang 1BỘ 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
CÔNG TRÌNH NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THIẾT KẾ VÀ THI CÔNG KIT LẬP TRÌNH ARM
KẾT HỢP CẢM BIẾN Y SINH
MÃ SỐ: SV2021 - 40
SKC007599
Tp Hồ Chí Minh, tháng 10/2021
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THIẾT KẾ VÀ THI CÔNG KIT LẬP TRÌNH ARM
KẾT HỢP CẢM BIẾN Y SINH
SV2021 - 40
Chủ nhiệm đề tài : Lê Kim Tĩnh
TP Hồ Chí Minh, 10/2021
Trang 3BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM
BÁO CÁO TỔNG KẾT
ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN
THIẾT KẾ VÀ THI CÔNG KIT LẬP TRÌNH ARM
KẾT HỢP CẢM BIẾN Y SINH
SV2021 - 40
Thuộc nhóm ngành khoa học : Kĩ thuật
SV thực hiện : Lê Kim TĩnhDân tộc: Kinh
Lớp, khoa: 171290 , Điện-Điện tử
Ngành học: Kĩ thuật Y sinh
Nam, Nữ: NamNăm thứ:04 /Số năm đào tạo: 04
Người hướng dẫn: Thạc sĩ Nguyễn Thanh Nghĩa
TP Hồ Chí Minh, 10/2021
Trang 4MỤC LỤC
MỤC LỤC i
DANH MỤC BẢNG v
DANH MỤC HÌNH ẢNH vi
DANH MỤC TỪ VIẾT TẮT x
MỞ ĐẦU 1
a TỔNG QUAN 1
b LÝ DO CHỌN ĐỀ TÀI 1
c MỤC TIÊU 2
d PHƯƠNG PHÁP NGHIÊN CỨU 2
e ĐỐI TƯỢNG NGHIÊN CỨU 2
f PHẠM VI NGHIÊN CỨU 2
Chương 1 CƠ SỞ LÝ THUYẾT 3
1.1 GIỚI THIỆU 3
1.2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ARM 3
1.3 VI ĐIỀU KHIỂN STM32F407VE 8
1.4 GIỚI THIỆU PHẦN CỨNG 20
1.5 GIỚI THIỆU PHẦN MỀM LẬP TRÌNH 32
Chương 2 TÍNH TOÁN VÀ THIẾT KẾ 33
2.1 GIỚI THIỆU 33
2.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 33
2.2.1 Sơ đồ khối hệ thống 33
2.2.2 Nhiệm vụ và chức năng từng khối 33
Chương 3 THI CÔNG HỆ THỐNG 48
3.1 GIỚI THIỆU 48
3.2 THI CÔNG HỆ THỐNG 48
3.3 ĐÓNG GÓI BỘ ĐIỀU KHIỂN 59
Chương 4 THIẾT KẾ CÁC BÀI THỰC HÀNH 62
4.1 PHẦN MỀM LẬP TRÌNH STM32CUBEMX 62
4.1.2 Hướng dẫn sử dụng phần mềm 62
Trang 54.1.3 Cấu trúc chương trình main.c 66
4.2 CẤU HÌNH XUNG CLOCK CHO VI ĐIỀU KHIỂN 72
4.3 Điều khiển LED đơn 75
4.3.1 Sơ đồ phần cứng 75
4.3.2 Cấu hình chân cho vi điều khiển 75
4.3.3 Bài tập mẫu 76
4.4 GIAO TIẾP NÚT NHẤN ĐƠN VÀ MA TRẬN PHÍM 77
4.4.1 Sơ đồ phần cứng 77
4.4.2 Cấu hình chân cho vi điều khiển 77
4.4.3 Bài tập mẫu 78
4.5 GIAO TIẾP VỚI MODULE LED 7 ĐOẠN 82
4.5.1 Sơ đồ phần cứng 82
4.5.2 Cấu hình chân cho vi điều khiển 83
4.5.3 Bài tập mẫu 83
4.6 GIAO TIẾP VỚI LED MATRIX 86
4.6.1 Sơ đồ phần cứng 86
4.6.2 Cấu hình cho vi điều khiển 87
4.6.3 Bài tập mẫu 87
4.7 ĐIỀU KHIỂN MODULE LCD TFT 90
4.7.1 Sơ đồ phần cứng 90
4.7.2 Cấu hình chân cho vi điều khiển 91
4.7.3 Các hàm sử dụng 91
4.7.4 Bài tập mẫu 95
4.8 ĐIỀU KHIỂN ĐỌC CẢM BIẾN LM35 96
4.8.1 Sơ đồ phần cứng 96
4.8.2 Cấu hình chân cho vi điều khiển 96
4.8.3 Bài tập mẫu 97
4.9 CẢM BIẾN KHOẢNG CÁCH HCR-04 101
4.9.1 Sơ đồ phần cứng 101
4.9.2 Cấu hình chân cho vi điều khiển 101
4.9.3 Bài tập mẫu 102
Trang 64.10 ĐỌC NHIỆT ĐỘ CẢM BIẾN DS18B20 103
4.10.1 Sơ đồ phần cứng 103
4.10.2 Cấu hình cho vi điều khiển 104
4.10.3 Bài tập mẫu 104
4.11 ĐIỀU KHIỂN MODULE THỜI GIAN THỰC DS3231 106
4.11.1 Sơ đồ phần cứng 106
4.11.2 Cấu hình chân vi điều khiển 106
4.11.3 Các hàm sử dụng 107
4.11.4 Bài tập mẫu 108
4.12 ĐỌC DỮ LIỆU CẢM BIẾN MLX90614 111
4.12.1 Sơ đồ phần cứng 111
4.12.2 Cấu hình chân vi điều khiển 111
4.12.3 Bài tập mẫu 111
4.13 ĐỌC DỮ LIỆU CẢM BIẾN NỒNG ĐỘ CỒN MQ3 111
4.13.1 Sơ đồ phần cứng 111
4.13.2 Cấu hình chân vi điều khiển 111
4.13.3 Bài tập mẫu 111
4.13.4 Bài tập mẫu 112
4.14 ĐIỀU KHIỂN MODULE HC06 114
4.14.1 Sơ đồ phần cứng 114
4.14.2 Cấu hình chân cho vi điều khiển 114
4.14.3 Các lệnh AT command 115
4.14.4 Cấu hình chân cho vi điều khiển 116
4.14.5 Bài tập mẫu 116
4.15 ĐIỀU KHIỂN MODULE NRF24L01 117
4.15.1 Sơ đồ phần cứng 117
4.15.2 Cấu hình cho vi điều khiển 118
4.15.3 Các hàm sử dụng 119
4.15.4 Bài tập mẫu 127
4.16 ĐIỀU KHIỂN MODULE ESP8266 129
4.16.1 Sơ đồ phần cứng 129
Trang 74.16.2 Cấu hình chân cho vi điều khiển 129
4.16.3 Các thư viện sử dụng 130
4.16.4 Bài tập mẫu 135
KẾT LUẬN VÀ KIẾN NGHỊ 138
a KẾT LUẬN 138
b KIẾN NGHỊ 138
TÀI LIỆU THAM KHẢO 139
PHỤC LỤC 141
Trang 8DANH MỤC BẢNG
Bảng 1.1: Sơ đồ bộ nhớ 9
Bảng 1.2: Địa chỉ giới hạn của các ngoại vi 10
Bảng 3.1: Danh sách các linh kiện 50
Bảng 4.1: Giá trị Baud rate 115
Trang 9DANH MỤC HÌNH ẢNH
Hình 1.1: Cấu trúc cơ bản của vi điều khiển ARM 4
Hình 1.2: Cấu trúc lõi ARM Cortex M0 6
Hình 1.3: Các phiên bản của ARM Cortex-A 7
Hình 1.4: Các phiên bản ARM Cortex – R 7
Hình 1.5: Các phiên bản của ARM Cortex-M 8
Hình 1.6: Sơ đồ cấu trúc các khối của STM32F407 9
Hình 1.7: Cảm biến nhịp tim và nồng độ oxy trong máu MAX30102 20
Hình 1.8: Cảm biến nhiệt độ DS18B20 21
Hình 1.9: Cảm biến nhiệt độ LM35 22
Hình 1.10: Cảm biến siêu âm HC- SR04 23
Hình 1.11: Cảm biến nồng độ cồn MQ3 23
Hình 1.12: Cảm biến màu sắc TSC34725 24
Hình 1.13: Arduino Nano 25
Hình 1.14: Sơ đồ chân của Arduino Nano 25
Hình 1.15: Cảm biến Nhiệt MLX90614 26
Hình 1.16: Module phát Bluetooth HC-06 26
Hình 1.17: Module thu phát NRF24L01 27
Hình 1.18: Module thu phát Wifi ESP ESP8266-01 28
Hình 1.19: Cảm biến nhịp tim Pulse Sensor 29
Hình 1.20: Màn hình TFT LCD 29
Hình 1.21: IC L298 30
Hình 1.22: Sơ đồ chân của IC MAX7219 31
Hình 1.23: IC DS3231 32
Hình 2.1: Sơ đồ khối hệ thống 33
Hình 2.2: Sơ đồ nguyên lý khối nguồn 34
Trang 10Hình 2.3: Sơ đồ nguyên lý khối LED đơn 35
Hình 2.4: Sơ đồ nguyên lý khối LED 7 đoạn 36
Hình 2.5: Sơ đồ nguyên lý khối LED Matrix 36
Hình 2.6: Sơ đồ nguyên lý khối LCD TFT 37
Hình 2.7: Sơ đồ nguyên lý khối động cơ DC 38
Hình 2.8: Sơ đồ nguyên lý khối Realtime 38
Hình 2.9: Sơ đồ nguyên lý nút nhấn 39
Hình 2.10: Sơ đồ nguyên lý Module Bluetooth HC-06 40
Hình 2.11: Sơ đồ nguyên lý Module Wifi esp8266 40
Hình 2.12: Sơ đồ nguyên lý Module RF NRF24l01 40
Hình 2.13: Sơ đồ nguyên lý cảm biến MQ-3 41
Hình 2.14: Sơ đồ nguyên lý cảm biến LM35 42
Hình 2.15: Sơ đồ nguyên lý cảm biến DS18b20 42
Hình 2.16: Sơ đồ nguyên lý cảm biến MLX90614 42
Hình 2.17: Sơ đồ nguyên lý cảm biến Pulse sensor 43
Hình 2.18: Sơ đồ nguyên lý cảm biến MAX30102 44
Hình 2.19: Sơ đồ nguyên lý cảm biến TCS34725 44
Hình 2.20: Sơ đồ nguyên lý cảm biến HC-SR04 45
Hình 2.21: Sơ đồ nguyên lý Kết nối NI-CONECTER 45
Hình 2.22: Sơ đồ nguyên lý toàn mạch 47
Hình 3.1: Sơ đồ mạch in PCB 49
Hình 3.2: Sơ đồ linh kiện trên mạch PCB 50
Hình 3.3: Sơ đồ bố trí linh kiện mặt trên 53
Hình 3.4: Mạch PCB hoàn thiện 53
Hình 3.5: Lắp ráp khối nguồn 53
Hình 3.6: Lắp ráp khối led 7 đoạn 54
Trang 11Hình 3.7: Lắp ráp khối led Matrix 54
Hình 3.8: Lắp ráp khối led đơn 55
Hình 3.9: Lắp ráp khối LCD TFT 55
Hình 3.10: Lắp ráp khối cảm biến nồng độ cồn và nhiệt độ 55
Hình 3.11: Lắp ráp khối cảm biến nhịp tin và SPO2 56
Hình 3.12: Lắp ráp khối cảm biến màu sắc và khối đo khoảng cách 56
Hình 3.13: Lắp ráp khối nút nhấn 56
Hình 3.14: Lắp ráp khối thời gian thực và SSR 57
Hình 3.15: Lắp ráp khối động cơ 57
Hình 3.16: Lắp ráp khối nạp 57
Hình 3.17: Lắp ráp các khối giao tiếp không dây 58
Hình 3.18: Lắp ráp khối nạp 58
Hình 3.19: Lắp ráp hoàn chỉnh Board mạch 59
Hình 3.20: Thiết kế phần thân của hộp 60
Hình 3.21: Thiết kế hộp đựng Kit 60
Hình 3.22: Thi công hộp đựng Kit 61
Hình 4.1: Biểu tượng phần mềm STM32CubeIDE 62
Hình 4.2: Giao diện khi khởi động phần mềm 63
Hình 4.3: Chọn họ vi điều khiển 63
Hình 4.4: Cấu hình cho vi điều khiển 64
Hình 4.5: Cấu hình xung cho vi điều khiển 64
Hình 4.6: Cửa sổ Project Manage. 65
Hình 4.7: Cửa sổ hiển thị khi biên dịch xong 65
Hình 4.8: Cấu hình Clock cho vi điều khiển 74
Hình 4.9: Chương trình cấu hình Clock cho hệ thống 74
Hình 4.10: Sơ đồ nguyên lý giao tiếp vi điều khiển với module 8 led đơn 75
Trang 12Hình 4.11: Cấu hình port cho 8 led đơn trong CubeMX 75
Hình 4.12: Sơ đồ nguyên lý giao tiếp vi điều khiển với ma trận phím 4x4 77
Hình 4.13: Cấu hình port cho nút nhấn đơn và ma trận phím 78
Hình 4.14: Sơ đồ nguyên lý giao tiếp vi điều khiển với module led 7 đoạn 83
Hình 4.15: Cấu hình port cho LED 7 đoạn 83
Hình 4.16: Sơ đồ nguyên lý giao tiếp vi điều khiển với module Led Matrix 86
Hình 4.17: Cấu hình port cho LED 7 Matrix 87
Hình 4.18: Sơ đồ nguyên lý giao tiếp giữa TFT LCD và vi điều khiển 90
Hình 4.19: Cấu hình giao tiếp SPI1 cho màn hình LCD TFT 91
Hình 4.20: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và cảm biến LM35 96
Hình 4.21: Cấu hình chân ADC cho vi điều khiển 96
Hình 4.22: Cửa sổ Parameter Settings 97
Hình 4.23: Cửa sổ NVIC Setting 97
Hình 4.24: Sơ đồ nguyên lý cảm biến siêu âm 101
Hình 4.25: Sơ đồ mạch giao tiếp với cảm biến DS18B20 104
Hình 4.26: Cấu hình chân giao tiếp với cảm biến DS18B20 104
Hình 4.27: Sơ đồ mạch nguyên lý giao tiếp vi điều khiển với module DS3231 106
Hình 4.28: Cấu hình chân cho vi điều khiển giao tiếp với module DS3231 107
Hình 4.29: Sơ đồ nguyên lý giao tiếp giữa vi điều khiển và cảm biến MQ-3 111
Hình 4.30: Biểu đồ thể hiện độ nhạy đặc trưng cảm biến MQ-3 112
Hình 4.31: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module HC06 114
Hình 4.32: Cấu hình chân giao tiếp với module HC-06 115
Hình 4.33: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module NRF 118
Hình 4.34: Cấu hình chân vi điều khiển giao tiếp với module NRF 118
Hình 4.35: Sơ đồ mạch nguyên lý giao tiếp giữa vi điều khiển và module ESP 129
Hình 4.36: Cấu hình chân giao tiếp với module ESP8266 130
Trang 13DANH MỤC TỪ VIẾT TẮT
ASIC Application Specific Integrated Circuit
RISC Reduced Instructions Set Computer
Trang 14BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI 1 Thông tin chung:
- Tên đề tài: Thiết kế và thi công Kit lập trình vi điều khiển ARM kết hợp cảm biến y sinh
- Chủ nhiệm đề tài: Lê Kim Tĩnh Mã số SV: 17129051
- Lớp: 171290 Khoa: Điện-Điện tử
- Thành viên đề tài:
- Người hướng dẫn: Thạc sĩ Nguyễn Thanh
Nghĩa 2 Mục tiêu đề tài:
- Thiết kế kit lập trình
- Thu thập điều khiển thiết bị ngoại vi
- Xây dựng thư viện hoàn chỉnh
3 Tính mới và sáng tạo:
- Kit lập trình với vi điều khiển ARM
- Kết hợp các cảm biến y sinh
4 Kết quả nghiên cứu:
- Kit lập trình ARM
- Điều khiển các module từ đơn giản đến phức
tạp - Thư viện điều khiển
- Cuốn báo cáo kết quả
5 Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội, an ninh, quốc phòng và khả năng áp dụng của đề tài:
- Phục vụ cho học tập lập trình và lập trình với cảm biến y sinh
6. Công bố khoa học của SV từ kết quả nghiên cứu của đề tài (ghi rõ tên tạp chí
nếu có) hoặc nhận xét, đánh giá của cơ sở đã áp dụng các kết quả nghiên cứu (nếu có):
SV chịu trách nhiệm chính thực hiện đề tài
(kí, họ và tên)
Trang 15Nhận xét của người hướng dẫn về những đóng góp khoa học của SV thực hiện đề
tài (phần này do người hướng dẫn ghi):
Người hướng dẫn
(kí, họ và tên)
Trang 16MỞ ĐẦU
a TỔNG QUAN
Đỗ Minh Phương đã nghiên cứu và trình bày đề tài: Xử lý ảnh video theo thờigian thực trên Kit STM32[1] Bài báo cáo này đã trình bày nghiên cứu, thiết kế hệthống thu nhập và xử lý luồng ảnh video thời gian thực trên Kit STM32 Nghiên cứunày đã phát triển được công cụ giúp thu thập, xử lý, phân tích luồng ảnh thu được từvideo, hiển thị ảnh theo thời gian trên màn LCD và truyền tải ảnh về máy tính
Đồ án tốt nghiệp của Nguyễn Châu Ngân và Trần Thị Linh Đa với đề tài: Thiết
kế và thi công hệ thống điểm danh nhân viên sử dụng vi điều khiển ARM Nghiên cứunày đã dùng vi điều khiển ARM STM32F103VET6 để thu nhận tín hiệu từ thẻ RFID
để hoàn thành đề tài [2]
Cùng với sự phát triển không ngừng của khoa học công nghệ, việc học tậpnghiên cứu và sử dụng vi điều khiển ARM ngày càng được chú trọng hơn Từ đó cácđề tài nghiên cứu về vi điều khiển ARM ngày càng nhiều Để có thể lập trình được viđiều khiển ARM cần có một phần mềm dễ dàng sử dụng mà STM32CubeMX là mộttrong những phần mềm nổi bật Phần mềm cho phép xử lý những tín hiệu thu nhận từSTM32 cung cấp mã code để người dùng lập trình
Ứng dụng của cảm biến y sinh vào việc chăm sóc sức khỏe và đời sống hàngngày là một điều thiết yếu Cùng với đó, việc sử dụng các cảm biến y sinh trong môitrường học tập cho các bạn sinh viên ngành kỹ thuật Y sinh càng thiết thực hơn Đồngthời, giúp các bạn sinh viên vận dụng tốt những kiến thức đễ lập trình được các cảmbiến đã được học
b LÝ DO CHỌN ĐỀ TÀI
Hiện nay, lập trình với vi xử lý là một kỹ năng cần có của một kỹ sư điện Saukhi học xong lý thuyết với mục đích tiếp cận thực tế lập trình điều khiển và ứng dụngcủa vi điều khiển từ cơ bản đến nâng cao Giúp ôn lại các kiến thức đã học, rèn luyện
kỹ năng lập trình, kỹ năng gỡ rối, kiểm tra, giám sát, phân tích, suy luận, đánh giá Córất nhiều bộ kit giúp hỗ trợ sinh viên lập trình như “Kit thực hành vi điều khiển PIC”của Ths Nguyễn Đình Phú Trong đó sử dụng vi điều khiển PIC 18F4550 để điềukhiển 7 Module khác nhau Các bài lập trình được thiết kế từ cơ bản đến nâng cao Kếthợp phần cứng với phần mềm để phát huy tối đa kỹ năng lập trình [3]
Trang 17Trên thị trường có rất nhiều kit lập trình đã dạng Trong đó phổ biến nhất là lậptrình Arduino Arduino một nền tảng mã nguồn mở phần cứng và phần mềm Phầncứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVRAtmel 8bit, hoặc ARM Atmel 32-bit Những Model hiện tại được trang bị gồm 1 cổnggiao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiềuboard mở rộng khác nhau Với cộng đồng lớn, người lập trình có thể tiếp cận dễ dàng,giả đáp các thắc mắc, thư viện rộng mở từ đó phát triển đề tài của các nhân cũng nhưnâng cao kỹ năng lập trình [4].
Qua tóm tắt trên, nhóm quyết định làm đề tài “Thiết kế và thi công Kit lập trình
vi điều khiển ARM kết hợp cảm biến y sinh” Kit sẽ được sử dụng vi điều khiển trungtâm là ARM STM32F4, cùng các khối chức năng và các cảm biến khác nhau để hỗ trợ chongười lập trình nói chung và sinh viên nói riêng có công cụ để áp dụng những kiến thức đãđược học và tìm hiểu
c MỤC TIÊU
Thiết kế và thi công Kit lập trình vi điều khiển ARM kết hợp cảm biến y sinh làkit sử dụng vi điều khiển trung tâm là ARM STM32F4 cùng với khối chức năng: khốiled đơn, khối led 7 đoạn quét, khối LCD, khối ma trận phím, khối nút nhấn, khối thờigian thực, khối điều khiển tốc độ động cơ, cảm biến SPO2, cảm biến nhịp tim, cảmbiến áp lực và các cảm biến khác
Phương pháp tham khảo tài liệu: Tham khảo các tài liệu về lập trình ARM và cách sử dụng phần mềm STM32CubeMX
Phương pháp thực nghiệm khoa học: Trực tiếp thu thập dữ liệu và lập trình ứng dụng các cảm biến sau đó hiển thị lên màn hình
e ĐỐI TƯỢNG NGHIÊN CỨU
Đối tượng nghiên cứu chính của đề tài là tín hiệu từ các cảm biến, lập trình hoạtđộng cho các cảm biến, cách thức truyền dữ liệu tín hiệu lên màn hình
f PHẠM VI NGHIÊN CỨU
Phạm vi nghiên cứu là tập trung vào xây dựng một hệ thống lập trình điều khiểncác cảm biến y sinh từ lúc thu tín hiệu đến lúc hiển thị tín hiệu
Trang 18Chương 1 CƠ SỞ LÝ THUYẾT
1.1 GIỚI THIỆU
Sau khi lựa chọn được đề tài, để hiểu rõ hơn về tính thực thi và một số lý thuyếtliên quan đến đề tài, nhóm chúng tôi xin được trình bày một số nội dung chính sau:Tổng quan về vi điều khiển ARM, Lý thuyết về vi điều STM32F407VE, giới thiệu sơlược về Wifi, Bluetooth, RF, cũng như phần cứng và phần mềm được sử dụng để thựchiện đề tài này
1.2 TỔNG QUAN VỀ VI ĐIỀU KHIỂN ARM
1.2.1 Mô tả sơ lược về vi điều khiển ARM
ARM là một loại vi điều khiển 32bit và 64bit kiểu RISC, ARM lúc đầu đượcđặt tên theo công ty Acorn (ban đầu ARM có nghĩa là Acorn RISC Machine, trong đóRISC là một cách thiết kế vi xử lý) sau này do có thêm nhiều công ty cùng phát triển
và một số lý do khác, người ta thống nhất gọi ARM là Advance RISC Machine ARMđược sử dụng rộng rãi trong các thiết kế nhúng [5]
Ngày nay, hơn 75% CPU 32bit là thuộc họ ARM, điều này khiến ARM trởthành cấu trúc 32 bít được sản xuất nhiều nhất thế giới Bộ xử lý CPU của ARM hiệndiện trong 95% smartphone, 90% ổ đĩa cứng, 40% truyền hình kĩ thuật số và set topbox, 15% trong vi điều khiển, 20% trong máy tính di động và có mặt trên rất nhiềulĩnh vực, từ TV cho đến các hệ thống tự động hóa và máy móc công nghiệp [6]
1.2.2 Cấu trúc cơ bản của ARM
Cấu trúc ARM bao gồm các đặc tính của RISC nổi bật như: Cấu trúc nạp/lưutrữ, không cho phép truy xuất bộ nhớ không thẳng hàng, tập lệnh trực giao, file thanhghi lớn gồm 16x32-bit, chiều dài mã máy cố định là 32bit để dễ giải mã và thực hiệnpipeline, để đạt được điều này phải chấp nhận giảm mật độ mã máy [7]
Trang 19Hình 1.1: Cấu trúc cơ bản của vi điều khiển ARM
a Các tính chất nổi bật
− Hầu hết tất cả các lệnh đều cho phép thực thi có điều kiện, điều này làmgiảm việc phải viết các tiêu đề rẽ nhánh cũng như bù cho việc không có một bộ dự đoán rẽnhánh
− Trong các lệnh số học, để chỉ ra điều kiện thực hiện, người lập trình chỉ cần sửa mã điều kiện
− Có một thanh ghi dịch 32-bit, có thể sử dụng với chức năng tính toán với hầu hết các lệnh số học và việc tính toán địa chỉ
− Có các kiểu định địa chỉ theo chỉ số rất mạnh
− Có hệ thống con thực hiện ngắt hai mức ưu tiên đơn giản nhưng rất nhanh, kèm theo cho phép chuyển từng nhóm thanh ghi
− Kích thước miếng bán dẫn nhỏ hơn, bộ xử lý đơn giản đòi hỏi ít transistorhơn, do đó kích thước cần dùng nhỏ lại dành vùng diện tích trống để tăng các chức năng như
bộ nhớ cache, chức năng quản lý bộ nhớ…
− Thời gian phát triển một sản phẩm ngắn hơn (do kĩ thuật đơn giản)
− Cấu hình mạnh hơn: Khi ta đặt ra các chỉ lệnh phức tạp tuy nó gần gũi vớingôn ngữ cấp cao, nhưng như thế vô tình cũng làm các chỉ lệnh khác phức
Trang 20tạp lên và để thực thi một chỉ lệnh như vậy cần tốn nhiều chu kì xung nhịp.Trong khi đó nếu dùng RISC chỉ mất một chu kì xung nhịp cho mỗi lệnh,khi ta phân nhỏ vấn đề phức tạp thành các vấn đề đơn giản thì cách giảiquyết sẽ tốt hơn.
− Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanhghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả (các lệnhđều có thời gian thực hiện giống nhau và có cùng dạng)
− Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chi phí thiết kế
− Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà
ta thường gặp trong bộ điều khiển
− Có một số ít lệnh (thông thường dưới 100 lệnh)
− Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định
vị gián tiếp thông qua một thanh ghi)
− Có một số ít dạng lệnh (một hoặc hai)
− Các lệnh đều có cùng chiều dài
− Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ
− Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các
vi lệnh làm cho thời gian thực hiện lệnh kéo dài
− Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu
kỳ máy
b Lõi của Vi điều khiển ARM
− Lõi xử lý ARM là một khối chức năng được kết nối bởi các bus dữ liệu, cácmũi tên thể hiện cho dòng chảy của dữ liệu, các đường thể hiện cho bus dữ liệu, các ô biểudiễn trong hình là một khối hoạt động hoặc một vùng lưu trữ Cấu hình này cho thấy cácdòng dữ liệu và các thành phần tạo nên một bộ xử lý ARM
− Tập lệnh ARM nằm trong hai nguồn thanh ghi Rn và Rm, kết quả được trảvề thanh ghi đích Rd Nguồn toán hạng được đọc từ thanh ghi đang sử dụng trên bus nội bộ
A và B tương ứng
− Khối số học và logic ALU hay bộ nhân MAC lấy các giá trị từ thanh ghi Rn
và Rm từ bus A, B và tính toán ra kết quả
Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:5/141
Trang 21− Mô hình thanh ghi theo kiến trúc Registry file giao tiếp với bộ nhớ thôngqua các lệnh load – store và ALU để tính toán địa chỉ được lưu trong các thanh ghi.
− Incrementer: bộ gia tăng cho thanh ghi địa chỉ
Hình 1.2: Cấu trúc lõi ARM Cortex
M0 1.2.3 Phân loại các phiên bản của ARM
Để đáp ứng yêu cầu khắt khe và đa dạng của các hệ thống nhúng, bộ xử lýARM Cortex được chia thành 3 dòng, được biểu hiện bằng các ký tự sau tên Cortexnhư dòng: A, R, M
a Dòng A
Bộ vi xử lý ARM Cortex A là bộ xử lý có hiệu suất cao cung cấp một loạt các giảipháp cho các thiết bị thực hiện nhiệm vụ tính toán phức tạp, chẳng hạn như lưu trữ mộtnền tảng phong phú hệ điều hành (OS), và hỗ trợ nhiều ứng dụng phần mềm Tất cả các
bộ xử lý Cortex-A đặc biệt cung cấp hiệu suất 32bit cho máy tính cao cấp, với bộ
vi xử lý Cortex-A72 mới và cả Cortex-A57 và Cortex-A53 bộ xử lý kết hợp cung cấphiệu suất 32-bit và 64-bit cho thế hệ điện thoại di động, mạng và máy chủ sản phẩm được mô
tả trong Hình 1.3 [7].
Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:6/141
Trang 22Hình 1.3: Các phiên bản của ARM Cortex-A
Các bộ vi xử lý có sẵn trong đơn lõi và đa lõi cung cấp lên đến bốn đơn vị xử lývới khả năng tích hợp các khối xử lý đa phương tiện NEON Hỗ trợ các tập lệnhARM, Thumb và Thumb-2 Ứng dụng của dòng A bao gồm: điện thoại thông minh,netbook, eReaders, TV kỹ thuật số, home Gateway, máy chủ và mạng
b Dòng R
Bộ vi xử lý Cortex R có hiệu suất vượt trội cho các ứng dụng thời gian thực,thời gian xử lý nhúng đã được phát triển cho các ứng dụng nhúng thời gian thực, nhucầu về điện năng thấp, ngắt được cân bằng với hiệu suất vượt trội và khả năng tươngthích mạnh mẽ với nền tảng hiện tại Ứng dụng của dòng R bao gồm: hệ thống phanh
ô tô, các giải phá hệ thống truyền lực, bộ ưu trữ khối lượng, Networking và in ấn
Hình 1.4: Các phiên bản ARM Cortex – R
Tương tự như dòng A, các phiên bản của dòng R được thể hiện trong Hình 1.4.
Bộ xử lý Cortex R dành cho các hệ thống đòi hỏi khắc khe về tính thời gian thực Hỗ
Trang 23trợ các tập lệnh ARM, Thumb và Thumb-2 Các bộ vi xử lý Cortex R gồm có R4, Cortex-R5, Cortex-R7.
Cortex-c Dòng M
Bộ vi xử lý ARM Cortex M tiêu thụ điện năng thấp phù hợp với các ứng dụng
vi điều khiển xác định và có khả năng mở rộng, tương thích, hiệu quả, dễ sử dụng Bộ
vi xử lý ARM Cortex M được thiết kế để giúp các nhà phát triển đáp ứng nhu cầu vềcác ứng dụng nhúng thông minh và kết nối ARM Cortex M cung cấp nhiều tính năngvới chi phí thấp hơn, tăng khả năng kết nối, sử dụng lại mã tốt hơn và cải thiện hiệuquả năng lượng Ứng dụng của dòng M bao gồm: vi điều khiển, thiết bị tín hiệu hỗnhợp, cảm biến thông minh, thiết bị điện tử ô tô [7]
Hình 1.5: Các phiên bản của ARM Cortex-M
Bộ xử lý Cortex M Chỉ hỗ trợ tập lệnh Thumb-2 Các bộ vi xử lý Cortex Mgồm có Cortex M0, Cortex M0+, Cortex M3, Cortex M4, Cortex M7
1.3 VI ĐIỀU KHIỂN STM32F407VE
STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụngnhư F0, F1, F2, F3, F4, … STM32F407 thuộc họ F4 dựa trên lõi RISC 32bit ARMCortex -M4 hiệu suất cao hoạt động ở tần số lên tới 168MHz Lõi Cortex-M4 có độchính xác đơn vị dấu phẩy động (FPU) hỗ trợ tất cả các hướng dẫn và loại dữ liệu xử
lý dữ liệu chính xác đơn ARM Nó cũng thực hiện một bộ đầy đủ các hướng dẫn DSP
và bộ bảo vệ bộ nhớ (MPU) để tăng cường bảo mật ứng dụng Mạch nạp cũng nhưcông cụ lập trình khá đa dạng và dễ sử dụng
Trang 24Hình 1.6: Sơ đồ cấu trúc các khối của STM32F407
1.3.2 Cấu trúc bộ nhớ, thanh ghi
Bộ nhớ chương trình, bộ nhớ dữ liệu, thanh ghi và cổng I/O được tổ chức trong cùng một không gian địa chỉ 4Gbyte tuyến tính Các byte được mã hóa trong bộ nhớ ở định dạng endian nhỏ Byte được đánh số thấp nhất trong một từ được coi là byte có ý nghĩa nhỏ nhất và byte được đánh số cao nhất Tất cả các vùng nhớ không được phân
bổ cho các bộ nhớ và thiết bị ngoại vi trên chip đều được coi là Reserved [9] Bảng 1.1: Sơ đồ bộ nhớ
0xFFFF FFFF
0xE000 0000
Block 7512MBCác ngoại vi nội của Cortex M4
Trang 25của các ngoại vi trong Arm Cortex M4 được mô tả trong bảng 1.2 dưới đây Bảng 1.2:
Địa chỉ giới hạn của các ngoại vi
0xA000 0000 - 0xA000 0FFF FSMC control register AHB3
Trang 26TIEU LUAN MOI download : skknchat123@gmail.com
Trang 280x4001 3800 - 0x4001 3BFF SYSCFG
Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:11/141
TIEU LUAN MOI download : skknchat123@gmail.com
Trang 29• 00: Input (trạng thái reset)
• 01: General purpose output mode
Trang 30Số hiệu:HD/QT-PKHCN-QHQT-NCKHSV/00 Lần soát xét:00 Ngày hiệu lực: 10/10/2021 Trang:12/141
TIEU LUAN MOI download : skknchat123@gmail.com
Trang 31Bits 31:16 Không sử dụng, giữ ở giá trị reset.
Bits 15:0 OTy: Bit cấu hình Port x (y = 0…15)Những bit này được viết bằng phần mềm để cấu hình I/O mode
0: Output push-pull (trạng thái reset)
1: Output open - drain
Thanh ghi GPIO port tốc độ output (GPIOx_OSPEEDR) (x = A I/J/K)
Trang 32• 01: Medium speed
Thanh ghi GPIO port pull-up/pull-down (GPIOx_PUPDR) (x = A I/J/K)
Trang 33TIEU LUAN MOI download : skknchat123@gmail.com
Trang 34ID ID ID ID ID ID ID ID IDR IDR IDR IDR IDR IDR ID ID
Bits 31:16 Reserved, giữ ở giá trị reset
Bits 15:0 IDRy: Port input data (y = 0 15)Những bit này chỉ đọc và chỉ có thể truy cập ở chế độ word Các bit bày chứa giá trị đầu vào của cổng I / O tương ứng
Thanh ghi GPIO port output data (GPIOx_ODR) (x = A I/J/K)
Bits 31:16 Reserved, giữ ở giá trị reset
Bits 15:0 ODRy: Port output data (y = 0 15)
• 0: Không có hành động nào đối với bit ODRx tương ứng
Trang 35Note: If both BSx and BRx are set, BSx has priority.
Bits 15:0 BSy: Port x set bit y (y= 0 15)Những bit này chỉ ghi và truy cập bằng chế độ word, half-word hoặc byte Việc đọc các bit này trả về giá trị 0x0000
• 0: Không có hành động nào đối với bit ODRx tương ứng
Thanh ghi khóa cấu hình cổng GPIO (GPIOx_LCKR) (x = A I/J/K)Thanh ghi này được sử dụng để khóa cấu hình của các bit cổng khi một chuỗighi đúng được áp dụng cho bit 16 (LCKK) Giá trị của bit [15: 0] được sử dụng đểkhóa cấu hình của GPIO Trong chuỗi ghi, giá trị của LCKR [15: 0] không được thay
đổi Khi chuỗi LOCK đã được áp dụng trên một bit cổng, giá trị của bit cổng này
không còn có thể được sửa đổi cho đến khi MCU tiếp theo hoặc thiết lập lại ngoại vi
Chú ý: Một chuỗi ghi cụ thể được sử dụng để ghi vào thanh ghi GPIOx_LCKR
Chỉ cho phép truy cập từ (dài 32 bit) trong chuỗi ghi này
1.3.5 Thanh ghi ADC
Các thanh ghi ngoại vi phải được ghi ở mức word (32 bit) Truy cập đọc có thể được thực hiện bằng byte (8 bit), half-word (16 bit) hoặc word (32 bit)
Thanh ghi trạng thái ADC (ADC_SR)
‒ Bit 5 OVR: Overrun (tràn)
Bit này được thiết lập bởi phần cứng khi dữ liệu bị mất (ở chế độ đơn hoặc ở
chế độ kép / ba) Nó được xóa bằng phần mềm Phát hiện overrun chỉ được bật khi
Trang 36TIEU LUAN MOI download : skknchat123@gmail.com
Trang 370: Không có tràn xảy ra
‒ Bit 4 STRT: Cờ khởi động kênh thường
Bit này được thiết lập bởi phần cứng khi bắt đầu chuyển đổi kênh thông thường
Nó được xóa bằng phần mềm
0: Không có chuyển đổi kênh thường nào khởi động
1: Chuyển đổi kênh thường vừa mới khởi động
‒ Bit 3 JSTRT: Cờ khởi động kênh Injected
Bit này được thiết lập bởi phần cứng khi bắt đầu chuyển đổi nhóm được chèn.Bit được xóa bằng phần mềm
0: Không có chuyển đổi nhóm Injected khởi động
1: Có nhóm Injected vừa mới khởi động
‒ Bit 2 JEOC: Kết thúc chuyển đổi kênh Injected
Bit này được thiết lập bởi phần cứng vào cuối quá trình chuyển đổi tất cả các kênh được chèn trong nhóm Bit bị xóa bởi phần mềm
0: Chuyển đổi chưa hoàn thành
1: Hoàn thành chuyển đổi
‒ Bit 1 EOC: Kết thúc chuyển đổi kênh thường
Bit này được thiết lập bởi phần cứng vào cuối quá trình chuyển đổi của nhóm kênh thông thường Nó bị xóa bằng phần mềm hoặc bằng cách đọc thanh ghi ADC_DR
0: Chuyển đổi chưa hoàn thành (EOCS=0), hoặc chuỗi chuyển đổi chưa hoànthành (EOCS=1)
1: Chuyển đổi hoàn thành (EOCS=0), hoặc chuỗi chuyển đổi hoàn thành complete (EOCS=1)
‒ Bit 0 AWD: Cờ analog watchdog
Bit này được thiết lập bởi phần cứng khi điện áp được chuyển đổi vượt quacác giá trị được lập trình trong các thanh ghi ADC_LTR và ADC_HTR Nó đượcxóa bằng phần mềm
0: Không có sự kiện analog watchdog event xảy ra
1: Sự kiện analog watchdog xảy ra
Thanh ghi điều khiển ADC 1 (ADC_CR1)
Trang 38‒ Bit 26 OVRIE: Cho phép ngắt tràn
1: Bật ngắt tràn Một ngắt được sinh ra khi bit OVR được đặt
‒ Bits 25:24 RES[1:0]: Độ phân giải
Các bit này được viết bằng phần mềm để chọn độ phân giải của chuyển đổi
0: 12-bit (15 ADCCLK cycles)
1: 10-bit (13 ADCCLK cycles)
10: 8-bit (11 ADCCLK cycles)
11: 6-bit (9 ADCCLK cycles)
‒ Bit 23 AWDEN: Bật Analog watchdog trên những kênh thường
Bit này được đặt hoặc xóa bởi phần mềm
0: Tắt Analog watchdog trên kênh thường
1: Bật Analog watchdog trên kênh thường
‒ Bit 22 JAWDEN: Bật Analog watchdog trên những kênh Injected
Bit này được đặt hoặc xóa bởi phần mềm0: Analog watchdog disabled on injected channels
1: Analog watchdog enabled on injected hannels
‒ Bits 21:16 Reserved, phải giữ ở giá trị reset
‒ Bits 15:13 DISCNUM[2:0]: Đếm kênh ở chế độ không liên tục
Trang 39Các bit này được viết bởi phần mềm để xác định số lượng kênh thông thường sẽđược chuyển đổi ở chế độ không liên tục, sau khi nhận được kích hoạt bên ngoài.
‒ Bit 12 JDISCEN: Đếm kênh Injected ở chế độ không liên
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ không liên tụctrên các kênh được chèn của một nhóm
0: Tắt chế độ không liên tục trên kênh Injected
1: Bật chế độ không liên tục trên kênh Injected
‒ Bit 11 DISCEN: Đếm kênh thường ở chế độ không liên tục
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ Không liên tục trên các kênh thông thường
0: Tắt chế độ không liên tục trên kênh thường
1: Bật chế độ không liên tục trên kênh thường
‒ Bit 10 JAUTO: Tự động chuyển đổi nhóm Injected
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chuyển đổi nhóm được chèn tự động sau khi chuyển đổi nhóm thông thường
0: Tắt tự động chuyển đổi nhóm Injected
1: Bật tự động chuyển đổi nhóm Injected
‒ Bit 9 AWDSGL: Kích hoạt watchdog trên một kênh trong chế độ quét
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt analog watchdog trên kênh được xác định bởi các bit AWDCH [4: 0]
0: Analog watchdog được bật trên tất cả các kênh
1: Analog watchdog bật trên một các kênh
‒ Bit 8 SCAN: chế độ quét
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt chế độ Quét Trongchế độ Quét, các đầu vào được chọn thông qua các thanh ghi ADC_SQRx hoặcADC_JSQRx được chuyển đổi
Trang 40‒ Bit 7 JEOCIE: Cho phép ngắt các kênh Injected
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt kết thúc ngắt chuyển đổi cho các kênh Injected
1: Bật ngắt JEOC Một ngắt được sinh ra khi bit JEOC được đặt
‒ Bit 6 AWDIE: Kích hoạt ngắt Analog watchdog
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt ngắt analog watchdog
0: Tắt ngắt Analog watchdog
1: Bật ngắt Analog watchdog
‒ Bit 5 EOCIE: Kích hoạt ngắt cho EOC
Bit này được thiết lập và xóa bằng phần mềm để bật / tắt ngắt kết thúc chuyểnđổi
1: Bật ngắt EOC Một ngắt được sinh ra khi bit EOC được đặt
‒ Bits 4:0 AWDCH[4:0]:Các bit lựa chọn kênh Analog watchdog Chúng chọn kênh đầuvào để được bảo vệ bởi analog watchdog
1.4 GIỚI THIỆU PHẦN CỨNG
Từ những phần lý thuyết được tìm hiểu ở trên, nhóm quyết định lựa chọn phầncứng để thực hiện đề tài này với các cảm biến để thu tín hiệu và hiển thị trên màn hìnhLCD TFT 2.2 Inch
1.4.1 Cảm biến nhịp tim và nồng độ oxy trong máu
Hình 1.7: Cảm biến nhịp tim và nồng độ oxy trong máu MAX30102
Hình 1.7 chính là Module cảm biến MAX30102, đây là module có khả năng đo
được nồng độ Oxy trong máu và nhịp tim Đó là một cảm biến quang học, nó phát ra haibước sóng ánh sáng từ hai đèn LED - một LED đỏ và một LED hồng ngoại - sau đó đo