Tổng quan về cấu trúc ARM ARM từ viết tắt của Advanced RISC Machine là một họ kiến trúc dạng RISC chocác vi xử lý máy tính, được cấu hình cho các môi trường khác nhau.. Arm Holdingsphát
CƠ SỞ LÝ THUYẾT
Tổng quan về cấu trúc ARM và vi xử lí lõi ARM Cortex-M3
1 Tổng quan về cấu trúc ARM
ARM (Advanced RISC Machine) là kiến trúc RISC cho vi xử lý máy tính, được phát triển và cấp phép bởi Arm Holdings cho các công ty thiết kế sản phẩm như SoC và SoM Kiến trúc RISC của ARM yêu cầu ít bóng bán dẫn hơn so với kiến trúc CISC, giúp giảm chi phí, tiêu thụ điện năng và tản nhiệt, rất phù hợp cho các thiết bị nhẹ và di động như điện thoại thông minh và máy tính xách tay Ngoài ra, ARM cũng có thể là giải pháp tiết kiệm năng lượng cho các siêu máy tính tiêu thụ điện lớn.
ARM Holdings thường xuyên phát hành cập nhật cho kiến trúc của mình Các phiên bản từ ARMv3 đến ARMv7 hỗ trợ không gian địa chỉ 32 bit và số học 32 bit, trong khi các chip trước ARMv3, như Acorn Archimedes, chỉ có không gian địa chỉ 26 bit Hầu hết các kiến trúc này đều sử dụng hướng dẫn có độ dài cố định 32 bit, nhưng phiên bản Thumb cung cấp lệnh 32 và 16 bit với độ dài thay đổi để cải thiện mật độ mã Một số lõi cũ hơn cũng hỗ trợ thực thi phần cứng cho mã byte Java Kiến trúc ARMv8-A, ra mắt vào năm 2011, đã bổ sung hỗ trợ cho không gian địa chỉ 64 bit và số học.
64 bit với tập lệnh có độ dài cố định 32 bit mới.
2 Tổng quan về vi xử lí lõi ARM Cortex-M3
− Cấu hình A: cho các ứng dụng Application, yêu cầu cao chạy trên các hệ điều hành mở và phức tạp như Linux, Android…
− Cấu hình R: cho các ứng dụng thời gian thực Real Time
− Cấu hình M: cho các ứng dụng vi điều khiển Microcontroller
Bộ vi xử lý ARM Cortex-M3, dựa trên kiến trúc ARMv7-M, có cấu trúc thứ bậc và tích hợp lõi xử lý trung tâm cùng với các thiết bị ngoại vi tiên tiến, cho phép kiểm soát ngắt, bảo vệ bộ nhớ, gỡ lỗi và theo vết hệ thống Với cấu trúc Harvard, ARM Cortex-M3 tách biệt vùng nhớ dữ liệu và chương trình, cho phép đọc đồng thời lệnh và dữ liệu từ bộ nhớ, từ đó thực hiện nhiều hoạt động song song và tăng tốc độ thực thi ứng dụng.
Cấu trúc vi xử lý ARM Cortex M3 sử dụng mô hình đường ống ba tầng: Fetch, Decode và Execute Khi gặp lệnh nhánh, tầng decode sẽ nạp lệnh suy đoán nhằm tối ưu hóa tốc độ thực thi Bộ xử lý sẽ dự đoán lệnh rẽ nhánh trong giai đoạn giải mã và xác định lệnh tiếp theo trong giai đoạn thực thi Nếu lệnh rẽ nhánh không được chọn, lệnh tiếp theo đã sẵn sàng; ngược lại, nếu lệnh rẽ nhánh được thực hiện, lệnh đó cũng sẽ sẵn sàng ngay lập tức, giúp giảm thiểu thời gian chờ đợi chỉ còn một chu kỳ.
Bộ vi xử lý Cortex-M3 là vi xử lý 32-bit với đường dẫn dữ liệu rộng 32 bit, bao gồm 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à các thanh ghi đặc biệt như thanh ghi trạng thái chương trình.
Tổng quan về vi điều khiển STM32 và STM32F103C8T6
ST đã giới thiệu 4 dòng vi điều khiển dựa trên ARM7 và ARM9, nhưng STM32 mang lại bước tiến vượt bậc về chi phí và hiệu suất, với giá chỉ gần 1 Euro khi mua số lượng lớn STM32 thực sự là một thách thức đối với các vi điều khiển 8 và 16-bit truyền thống Dòng sản phẩm STM32 đầu tiên bao gồm 14 biến thể, được chia thành hai dòng: dòng Performance, với tần số hoạt động CPU tương thích về bố trí chân và phần mềm, cùng với bộ nhớ FLASH ROM lên tới 512K và 64K SRAM.
Kiến trúc của STM32 nhánh Performance và Access
Nhánh Performance hoạt động với xung nhịp tối đa 72MHz, cung cấp đầy đủ các ngoại vi, trong khi nhánh Access chỉ đạt xung nhịp tối đa 36MHz và có ít ngoại vi hơn.
2 Vi điều khiển STM32F103C8T6 a Cấu trúc kit vi điều khiển STM32F103C8T6
Kit phát triển STM32F103C8T6 Cấu trúc của kit STM32F103C8T6 bao gồm:
− 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
− 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
− Có chân Output riêng cho các chân mạch nạp trên MCU1.
− Có chân Output đầy đủ cho các chân MCU2.
− Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB.
− Thạch anh 32,768khz dùng cho RTC và Backup.
− Chân nạp dùng cho chế độ nạp boot loader.
− Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2. b Cấu hình chi tiết của STM32F103C8T6
ARM 32-bit Cortex M3 với clock max là 72Mhz.
Bộ nhớ 64 kbytes bộ nhớ Flash(bộ nhớ lập trình) và 20kbytes SRAM.Clock, reset và quản lý nguồn:
− Power on reset (POR), Power down reset (PDR) và programmable voltage detector (PVD).
− Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
− Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz.
− Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC.
Trong trường hợp điện áp thấp:
− Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ.
− Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
2 bộ ADC 12 bit với 9 kênh cho mỗi bộ:
− Khoảng giá trị chuyển đổi từ 0 – 3.6V.
− Lấy mẫu nhiều kênh hoặc 1 kênh.
− Có cảm biến nhiệt độ nội.
DMA bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâucủa CPU:
− Hỗ trợ DMA cho ADC, I2C, SPI, UART.
− 3 timer 16 bit hỗ trợ các mode IC/OC/PWM.
− 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time
− 2 watdog timer dùng để bảo vệ và kiểm tra lỗi.
− 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm
Delay… Hỗ trợ 9 kênh giao tiếp bao gồm:
− 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control).
− USB 2.0 full-speed interface Kiểm tra lỗi CRC và
96-bit ID. c Thông số kỹ thuật
Sơ đồ chân kit STM32F103C8T6 Các thông số kĩ thuật của kit STM32F103C8T6:
− Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua
IC nguồn và cấp cho Vi điều khiển chính.
− Tích hợp sẵn thạch anh 8Mhz.
− Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
− Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
− Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
− Sử dụng với các mạch nạp: ST-Link Mini, J-link hoặc USB TO COM.
− Kết nối chân khi nạp bằng ST-Link Mini: TCK - SWCLK, TMS - SWDIO, GND-GND, 3.3V - 3.3V.
Lập trình cho STM32
STMicroelectronics đã ra mắt công cụ STM32CubeMX, giúp tạo mã cơ bản cho các thiết bị ngoại vi và bo mạch STM32 được chọn, giảm bớt lo lắng về việc lập trình trình điều khiển Mã được tạo ra có thể dễ dàng chỉnh sửa trong Keil uVision theo nhu cầu của người dùng Cuối cùng, mã này có thể được ghi vào STM32 thông qua lập trình ST-Link từ STMicroelectronics.
Công cụ STM32CubeMX, thuộc bộ công cụ STMCube của STMicroelectronics, hỗ trợ phát triển phần mềm bằng cách rút ngắn thời gian, chi phí và giai đoạn phát triển Đây là một phần mềm cấu hình đồ họa cho phép người dùng tạo mã C thông qua trình hướng dẫn trực quan, giúp dễ dàng tích hợp vào các môi trường phát triển như keil uVision, GCC, IAR, và nhiều hơn nữa Bạn có thể tải xuống STM32CubeMX từ liên kết dưới đây.
STM32CubeMX có các tính năng sau:
− Trợ giúp thiết lập xung.
− Một tiện ích thực hiện cấu hình ngoại vi MCU như chân GPIO, USART, v.v.
− Một tiện ích thực hiện cấu hình ngoại vi MCU cho các ngăn xếp phần mềm trung gian như USB, TCP / IP, v.v.
Keil C là phần mềm hỗ trợ lập trình viên trong việc lập trình các vi điều khiển khác nhau Phần mềm này cho phép người dùng soạn thảo và biên dịch mã nguồn C hoặc Assembly thành ngôn ngữ máy, giúp nạp vào vi điều khiển và tạo ra sự tương tác hiệu quả giữa vi điều khiển và lập trình viên.
Quy trình sẽ là cấu hình cơ bản trên CubeMX:
Sau đó sẽ lập trình nâng cao trên KeilC:
IV Tổng quan về điện trở nhiệt NTC
Điện trở nhiệt NTC, tương tự như cảm biến đo nhiệt độ, hoạt động hiệu quả trong một khoảng nhiệt độ nhất định Đặc điểm nổi bật của điện trở NTC là giá trị điện trở sẽ giảm khi nhiệt độ tăng.
Cảm biến và module cảm biến DHT11 Thông số kĩ thuật:
− Điện áp hoạt động : 3V - 5V (DC)
− Dải độ ẩm hoạt động : 20% - 90% RH, sai số ±5%RH
− Dải nhiệt độ hoạt động : 0°C ~ 50°C, sai số ±2°C
− Tần số lấy mẫu tối đa: 1 Hz
− Khoảng cách truyển tối đa: 20m
Cảm biến DHT11 có sơ đồ chân gồm 2 chân cấp nguồn và 1 chân tín hiệu, như được thể hiện trong hình 1.9 Hiện nay, trên thị trường có hai loại đóng gói phổ biến cho cảm biến DHT11.
Cảm biến DHT11 là một thiết bị đo nhiệt độ và độ ẩm có giá thành phải chăng và dễ sử dụng, phù hợp cho các ứng dụng không yêu cầu độ chính xác cao và trong môi trường không khắc nghiệt.
V Tổng quan về thiết bị LCD 1602
Thiết bị hiển thị LCD 1602 (Liquid Crystal Display) hiện nay được ứng dụng rộng rãi trong các vi điều khiển nhờ vào nhiều ưu điểm vượt trội Nó có khả năng hiển thị đa dạng các ký tự như chữ, số và ký tự đồ họa, đồng thời dễ dàng tích hợp vào các mạch ứng dụng thông qua nhiều giao thức giao tiếp khác nhau Hơn nữa, LCD 1602 tiêu tốn rất ít tài nguyên hệ thống và có giá thành phải chăng, làm cho nó trở thành lựa chọn lý tưởng cho nhiều dự án điện tử.
Thông số kĩ thuật của sản phẩm LCD 1602:
− Điện áp ra mức cao : > 2.4
− Điện áp ra mức thấp : 2.4
− Điện áp ra mức thấp : = 45) || (u16Tim = 90) || (u16Tim = 95) || (u16Tim = 65) || (u16Tim = 80) || (u16Tim = 65) || (u16Tim = 80) || (u16Tim = 65) || (u16Tim = 80) || (u16Tim = 65) || (u16Tim = 80) || (u16Tim = 65) || (u16Tim = 80) || (u16Tim