Chương 1: Tổng quan - Chương 2: Cơ sở lý thuyết. - Chương 3: Xây dựng hệ thống. - Chương 4: Thiết kế và thi công hệ thống. - Chương 5: Thực nghiệm.
- Chương 6: Kết luận và kiến nghị. 2 Chương 2: CƠ SỞ LÝ THUYẾT 2. Tổng quan STM32F411CEU6 là một vi điều khiển ARM Cortex-M4F 32-bit, tần số hoạt động lên đến 100MHz thuộc dòng sản phẩm STM32F4 của STMicroelectronics. Được xây dựng trên kiến trúc ARMv7E-M, nó cung cấp một bộ vi xử lý mạnh mẽ và nhiều tính năng hỗ trợ để phát triển ứng dụng nhúng đa dạng.
Đồng thời STM32F411CEU6 là một kit phát triển sử dụng Vi điều khiển ARM Cortex-M4 STM32F411CEU6 thế hệ mới, là dòng được sử dụng trên các Kit Nucleo của hãng ST, Kit có thiết kế nhỏ gọn, trang bị cổng USB-C, và các Led, nút nhấn cơ bản. [9] STM32F411CEU6 được sử dụng trong nhiều ứng dụng nhúng khác nhau: - Hệ thống điều khiển: STM32F411CEU6 có khả năng xử lý mạnh mẽ và nhiều giao tiếp ngoại vi, nên nó được sử dụng rộng rãi trong các ứng dụng điều khiển như hệ thống điều khiển robot, hệ thống điều khiển máy móc tự động, hệ thống điều khiển nhiệt độ và hệ thống điều khiển tương tự khác. - IoT (Internet of Things): STM32F411CEU6 có khả năng kết nối với các giao tiếp như UART, SPI, I2C và Ethernet, cho phép nó được sử dụng trong các ứng dụng IoT. Nó có thể được sử dụng để kết nối và điều khiển các thiết bị nhúng thông qua giao thức mạng và truyền dữ liệu giữa các thiết bị.
- Thiết bị đo lường và kiểm tra: Với bộ chuyển đổi analog-to-digital (ADC) tích hợp và các giao tiếp như SPI và I2C, STM32F411CEU6 được sử dụng trong các thiết bị đo lường và kiểm tra. Nó có thể thu thập dữ liệu từ các cảm biến và thiết bị đo lường và xử lý dữ liệu để đưa ra kết quả đo lường hoặc kiểm tra. - Đèn LED và hiển thị: STM32F411CEU6 có thể được sử dụng để điều khiển đèn LED và các hiển thị khác như LCD hoặc OLED. Nó có khả năng giao tiếp với các giao diện đèn LED như PWM (Pulse Width Modulation) để điều khiển độ sáng và màu sắc của đèn LED.
[9] - Hệ thống nhúng và điện tử tiêu thụ thấp: Với khả năng hoạt động ở mức điện áp thấp và chế độ tiêu thụ năng lượng thấp, STM32F411CEU6 được sử dụng trong các ứng dụng nhúng yêu cầu mức tiêu thụ năng lượng thấp và kéo dài tuổi thọ pin như các thiết bị đeo thông minh, cảm biến tiêu thụ năng lượng thấp và hệ thống điều khiển IoT di động. [9] Phần mềm giao tiếp: - STM32CubeIDE: Môi trường phát triển tích hợp (IDE) cho vi điều khiển STM32, hỗ trợ viết và gỡ lỗi mã nguồn. - STM32CubeMX: Công cụ cấu hình phần cứng và tạo mã nguồn khởi tạo tự động cho vi điều khiển STM32. - Các thư viện CMSIS (Cortex Microcontroller Software Interface Standard): Cung cấp API (Application Programming Interface) chuẩn cho việc lập trình vi điều khiển Cortex-M.
[9] 3 Mạch nạp và giao tiếp: - ST-Link/V2: Mạch nạp STM32 chính thức của STMicroelectronics, được sử dụng để nạp chương trình vào vi điều khiển STM32. - USART/UART: Giao tiếp chuẩn RS-232 hoặc TTL thông qua chân GPIO để giao tiếp với vi điều khiển từ máy tính hoặc các thiết bị khác. Thư viện lập trình: - STM32Cube HAL (Hardware Abstraction Layer): Thư viện này cung cấp một lớp trừu tượng giữa phần cứng và phần mềm ứng dụng, giúp lập trình viên dễ dàng truy cập và điều khiển các chức năng phần cứng trên STM32F411CEU6 như GPIO, USART, SPI, I2C, ADC và nhiều hơn nữa. - STM32Cube LL (Low-Level): Thư viện này cung cấp truy cập thấp hơn đến phần cứng, cho phép lập trình viên tùy chỉnh và kiểm soát chính xác các chức năng phần cứng trên STM32F411CEU6.
Điều này cho phép hiệu suất cao và tối ưu hóa đặc biệt trong các ứng dụng yêu cầu độ trễ thấp và hiệu năng tối đa. - STM32Cube Middleware: Bên cạnh các thư viện phần cứng, STM32Cube cung cấp các thư viện middleware để hỗ trợ các tính năng như USB, TCP/IP, FAT file system, và RTOS (Real-Time Operating System). Những thư viện này giúp lập trình viên dễ dàng tích hợp các tính năng mở rộng vào ứng dụng của họ. Các thông số kỹ thuật của STM32F411CEU6 Bộ nhớ (Memory): - Flash memory: STM32F411CEU6 được tích hợp với 512 KB flash memory.
Flash memory này được sử dụng để lưu trữ chương trình ứng dụng và dữ liệu. - SRAM: STM32F411CEU6 có 128 KB SRAM (Static Random Access Memory). SRAM được sử dụng để lưu trữ dữ liệu trong quá trình thực thi chương trình. 4 - OTP memory: STM32F411CEU6 cũng đi kèm với 2 KB One-Time Programmable (OTP) memory.
OTP memory được sử dụng để lưu trữ dữ liệu không thể thay đổi sau khi được ghi. - Option bytes: STM32F411CEU6 có 16 bytes option bytes, được sử dụng để cấu hình các tính năng và chế độ của vi điều khiển. [9] Hệ thống clock: - STM32F411CEU6 sử dụng một nguồn clock ngoại vi để cung cấp tín hiệu clock cho vi điều khiển. Tần số của nguồn clock ngoại vi này có thể được cấu hình theo yêu cầu ứng dụng.
- Vi điều khiển STM32F411CEU6 hỗ trợ nhiều nguồn clock nội bộ khác nhau như HSI (High-Speed Internal), HSE (High-Speed External), PLL (Phase- Locked Loop), và LSI (Low-Speed Internal) để tạo ra các tần số clock khác nhau cho các phần khác nhau của vi điều khiển. - Có thể cấu hình và điều khiển hệ thống clock bằng cách sử dụng các thanh ghi và thanh ghi bị chặn trong vi điều khiển. [9] Reset: - STM32F411CEU6 có các nguồn reset khác nhau để khởi động lại vi điều khiển và các thành phần khác. - Nguồn reset chính là nguồn reset ngoại vi (NRST) và nút reset nội bộ (RESET).
- NRST: Đây là một chân ngoại vi được sử dụng để khởi động lại vi điều khiển. Khi tín hiệu trên chân NRST bị thay đổi (thường là từ mức cao xuống mức thấp), vi điều khiển sẽ bị reset và bắt đầu lại quá trình thực thi chương trình. - RESET: Đây là một tín hiệu reset nội bộ có thể được sử dụng để khởi động lại vi điều khiển thông qua phần mềm. [9] Quản lý nguồn: - STM32F411CEU6 có các tính năng quản lý nguồn để giảm tiêu thụ năng lượng và quản lý hoạt động điện áp của vi điều khiển.
- Các tính năng quản lý nguồn bao gồm Sleep mode, Stop mode và Standby mode, trong đó mỗi mode có mức tiêu thụ năng lượng và thời gian khôi phục hoạt động khác nhau. - Vi điều khiển STM32F411CEU6 cũng hỗ trợ các tính năng bảo vệ và giám sát điện áp như Brownout Reset (BOR) để đảm bảo hoạt động ổn định và an toàn của hệ thống.2 Sơ đồ nguồn xung clock của STM32F411CEU6T6 [9] Khối ADC - Độ phân giải (Resolution): ADC có thể được cấu hình để chuyển đổi analog thành số với độ phân giải từ 12 bit đến 16 bit. Độ phân giải càng cao thì độ chính xác của việc chuyển đổi càng tốt. - Kênh ADC (ADC Channels): STM32F411CEU6 hỗ trợ nhiều kênh ADC để chuyển đổi tín hiệu analog từ các nguồn khác nhau.
Số lượng và cấu hình các kênh ADC phụ thuộc vào phiên bản cụ thể của vi điều khiển. - Tốc độ chuyển đổi (Conversion Speed): ADC có thể hoạt động ở tốc độ chuyển đổi khá nhanh, tùy thuộc vào cấu hình và yêu cầu của ứng dụng. STM32F411CEU6 hỗ trợ chế độ chuyển đổi liên tục và chế độ chuyển đổi đơn lẻ. - Các chế độ hoạt động (Operating Modes): ADC có thể được cấu hình để hoạt động ở các chế độ khác nhau như chế độ đơn lẻ (Single mode), chế độ liên tục (Continuous mode), chế độ Scan (Scan mode) và chế độ DMA (Direct Memory Access mode).
- Trigger và DMA: ADC có thể được kích hoạt bằng các tín hiệu Trigger từ các nguồn khác nhau như timer hoặc external interrupt. Ngoài ra, ADC cũng hỗ 6 trợ chế độ DMA để chuyển đổi dữ liệu trực tiếp từ ADC vào bộ nhớ mà không cần sự can thiệp của vi xử lý. Các bộ Timer này thường được sử dụng để đo thời gian, tạo ra các xung ngắn, và thực hiện các chức năng liên quan đến thời gian. - Advanced-control timers: STM32F411CEU6 cũng đi kèm với các bộ Timer nâng cao như Timer 1 (TIM1) và Timer 8 (TIM8).
Các bộ Timer này cung cấp các tính năng mở rộng và chức năng cao cấp hơn như PWM (Pulse-Width Modulation), bộ đếm 16-bit và 32-bit, và khả năng điều khiển động cơ bước. - Basic timers: STM32F411CEU6 cũng hỗ trợ Basic Timer (TIM6 và TIM7). Basic Timer cung cấp một tính năng đơn giản để tạo ra các xung ngắn và thực hiện các chức năng cơ bản liên quan đến thời gian. Các khối Timer trong STM32F411CEU6 cung cấp nhiều tính năng như: - Chế độ đếm lên và đếm xuống.
- Chế độ chia tỷ lệ (Prescaler) để điều chỉnh tần số đếm. - Chế độ chia nhóm (Auto-Reload) để định rõ giá trị đếm tối đa. - Chức năng ngắt (Interrupt) để xử lý các sự kiện liên quan đến Timer. - Cấu hình đầu vào và đầu ra cho các chức năng PWM.
[9] Hỗ trợ 9 kênh giao tiếp bao gồm: - UART (Universal Asynchronous Receiver-Transmitter): UART là một kênh giao tiếp bán đồng bộ, được sử dụng để truyền và nhận dữ liệu theo cơ chế không đồng bộ. Vi điều khiển STM32F411CEU6 hỗ trợ nhiều UART, mỗi UART có các chân TX (Transmit) và RX (Receive) riêng để giao tiếp với các thiết bị ngoại vi hoặc máy tính. - SPI (Serial Peripheral Interface): SPI là một kênh giao tiếp đồng bộ, được sử dụng để truyền và nhận dữ liệu giữa vi điều khiển và các thiết bị ngoại vi. STM32F411CEU6 có nhiều kênh SPI, mỗi kênh SPI bao gồm các chân MOSI (Master Out Slave In), MISO (Master In Slave Out), SCK (Serial Clock), và NSS (Slave Select) để liên kết với các thiết bị SPI khác.
- I2C (Inter-Integrated Circuit): I2C là một giao thức giao tiếp đồng bộ, được sử dụng để kết nối vi điều khiển với các thiết bị ngoại vi. STM32F411CEU6 hỗ trợ nhiều kênh I2C, mỗi kênh I2C có các chân SDA (Serial Data) và SCL (Serial Clock) để giao tiếp với các thiết bị I2C khác. - CAN (Controller Area Network): CAN là một giao thức giao tiếp nổi tiếng trong các ứng dụng mạng điều khiển, được sử dụng để truyền và nhận dữ liệu trong một mạng điều khiển phân tán. STM32F411CEU6 hỗ trợ nhiều kênh CAN, mỗi kênh CAN bao gồm các chân CAN_TX (Transmit) và CAN_RX (Receive) để giao tiếp với các thiết bị CAN khác.
7 - USB (Universal Serial Bus): STM32F411CEU6 có một kênh USB OTG (On- The-Go) để hỗ trợ giao tiếp USB. Kênh USB OTG cho phép vi điều khiển hoạt động như một thiết bị USB hoặc một thiết bị USB Host để truyền và nhận dữ liệu với các thiết bị USB khác.