đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nôi dung nghiên cứu, các giới hạn thông số và bố cục đồ án. Chương 2: Cơ sở lý thuyết. Giới thiệu về Arm cortex M4 và vi điều khiển STM32F4 bên cạnh đó giới thiệu về các chuẩn giao thiếp và linh kiện chính được sử dụng trong đề tài. Chương 3: Tính toán thiết kế.
Chương này trình bày sơ đồ khối hệ thống, cách tính toán các thông số kỹ thuật của các khối sử dụng, thiết kế các khối với yêu cầu đặt ra ban đầu. Chương 4: Thi công hệ thống. Trình bày các mạch đã thiết kế và trình tự lắp ráp thi công, hướng dẫn cách cài đặt, sử dụng các phần mềm lập trình và trình bày các thao tác hướng dẫn sữ dụng hệ thống. Chương 5: Kết quả - Nhận xét - Đánh giá Chương này trình bày các kết quả đạt được và chưa đạt.
Chương 6: Kết luận và hướng phát triển. Đưa ra đánh giá về những kết quả đạt được so với mục tiêu ban đầu, đề ra các phương án khắc phục và hướng phát triển của đề tài. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 3 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Chương 2.
VI ĐIỀU KHIỂN 2.1 Bộ vi xử lý ARM CORTEX – M4 Cấu trúc ARM (viết tắt từ tên gốc là Acorn RISC Machine) là một loại cấu trúc vi xử lý 32 – bit kiểu RISC (viết tắt của Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa) được sử dụng rộng rãi trong các thiết kế nhúng. Do có đặc điểm tiết kiệm năng lượng, các bộ CPU ARM chiếm ưu thế trong các sản phẩm điện tử di động, mà với các sản phẩm này việc tiêu tán công suất thấp là một mục tiêu thiết kế quan trọng hàng đầu.[1] Arm cortex là một thế hệ lõi vi xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho các nhu cầu công nghệ. Kiến trúc của nó là một lõi hoàn chỉnh bao gồm bộ vi xử lý cortex và một hệ thống các thiết bị ngoại vi được thiết kế theo giải pháp SoC. Cortex cho phép truy cập dữ liệu không thẳng hàng, hỗ trợ đặt xóa các bit bên trong hai vùng 1Mbyte của bộ nhớ mà không cần xử lý luận lý (Boolean processor).
Cortex gồm 3 dòng: - 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 gian thự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, được thiết kế để tối ưu về giá thành. Hỗ trợ tập lệnh Thumb-2. Bộ vi xử lý ARM Cortex-M4 là thế hệ vi xử lý thứ 2 của dòng Cortex-M dựa trên kiến trúc ARMv7-M, được giới thiệu vào năm 2010. Nó được mở rộng thêm về tập lệnh và kiến trúc mới.
Corex-M4 gồm một lõi CPU 32-bit, các thanh ghi 32-bit, đường dẫn dữ liệu nội bộ 32-bit và giao diện bus 32-bit, cùng một số thành phần khác. Ngoài ra, Cortex-M4 cũng đã hỗ trợ một số hoạt động liên quan đến dữ liệu 64-bit. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 4 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2.
Kiến trúc bộ vi xử lý ARM Cortex-M4 Lõi của Cortex-M4 là một CPU RISC 32-bit được thiết kế dựa trên kiến trúc Harvard (đặ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). Nó là phiên bản đơn giản hóa từ mô hình lập trình của ARM7/9 nhưng có một tập lệnh phong phú và tối ưu hơn, hỗ trợ tốt cho các phép toán số nguyên, khả năng thao tác với bit và đáp ứng thời gian thực tốt hơn. BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 5 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2.
Lõi ARM7TDMI của Cortex-M4. CPU Cortex-M4 có cấu trúc đường ống 3 đoạn (three-stage pipeline). Với kiến trúc này thời giản rỗi của một chu kỳ sẽ được hạn chế tối đa nên hiệu xuất tổng thể của nó được cải thiện rõ rệt. Kiến trúc đường ống của ARM Cortex-M4 Bình thường Cortex-M4 có thể thực thi hầu hết lệnh trong một chu trình đơn, nhưng với cấu trúc pipeline này Cortex-M4 có thêm khả năng dự đoán rẽ nhánh nên lệnh có thể được thực thi nhanh hơn.
Tức là nếu với một lệnh thường A đang được thực thi thì một lệnh B khác sẽ được giải mã và một lệnh C khác nữa sẽ được lấy về bộ nhớ. Còn đối với lệnh rẽ nhánh (if … else chẳng hạn), trong khi lệnh điều kiện được giải mã ở tầng decode thì bộ xử lý sẽ nạp lệnh dự định rẽ nhánh trong else, khi BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT lệnh rẽ được thực thi, bộ xử lý sẽ phân tích xem đâu là lệnh tiếp theo. Nếu lệnh rẽ nhánh được chọn thì nó sẽ được thực thi ngay (vì nó đang ở tầng decode), còn nếu không thì bộ vi xử lý sẽ thực hiện tiếp lệnh tiếp theo (đã được lấy ở tầng fetch).
Lõi Cortex-M4 chỉ hỗ trợ tập lệnh Thumb-2. So với kiến trúc tập lệnh ARM hoặc Thumb thì Thumb-2 tối ưu hơn về hiệu suất và kích thước mã, bao gồm cả bộ phận phần cứng, nhân chu trình đơn, và thao tác bit-lĩnh vực. Ngoài ra, Cortex-M4 còn được tích hợp chế độ ngủ (sleep mode) và tùy chọn khả năng duy trì trạng thái (optional state retention capabilities) cho phép đạt hiệu suất cao với mức tiêu thụ điện năng thấp.2 Vi điều khiển STM32F407 a. Cấu trúc bộ nhớ và bus.
Cấu trúc hệ thống bus: - Tám bus chủ: Cortex®-M4 với lõi FPU I-bus, D-bus và S-bus DMA1 memory bus DMA2 memory bus DMA2 peripheral bus Ethernet DMA bus USB OTG HS DMA bus - Bảy bus tớ: Bộ nhớ flash nội Icode bus Bộ nhớ flash nội Dcode bus Bộ nhớ nội SRAM(bộ nhớ truy xuất ngẫu nhiên tĩnh ) 1 là 112KB (chính) Bộ nhớ nội SRAM2 16KB (phụ) AHB1 peripherals AHB2 peripherals FMC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 7 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT Hình 2. Cấu trúc bus hệ thống Cấu trúc bộ nhớ. Bộ nhớ chương trình, bộ nhớ dữ liệu, thanh ghi và cổng I /O được tổ chức trong phạm vi 4 GB.
Bộ nhớ bắt đầu từ địa chỉ 0x00000000. SRAM bắt đầu từ địa chỉ 0x20000000 và tất cả SRAM nội đều được bố trí ở điểm bắt đầu vùng bit band. Vùng nhớ thiết bị ngoại vi bắt đầu từ địa chỉ 0x400000000 và ở vùng nhớ bit band. Các thanh ghi điều khiển của nhân Cortex bắt đầu từ địa chỉ 0xE0000000.
Vùng nhớ dành cho FLASH được chia nhỏ thành ba vùng. Vùng thứ nhất gọi là Uesr 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 4Kbytes thông thường sẽ được nhà sản xuất cài đặt bootloader.
Cuối cùng là vùng nhớ nhỏ bắt đầu từ địa chỉ 0x1FFFFF80 chứa thông tin cấu hình dành cho STM32. Bootloader thường được dùng để tải chương trình thông qua cổng USART1 và chứa ở vùng User Flash. Để kích hoạt bootloader của STM32 người dùng phải thiết lập các chân BOOT0 và BOOT1 ở mức điện áp thấp và cao tương ứng. Khi đó, sau khi STM32 được khởi động chương trình sẽ đặt bootloader vào đia chỉ 0x00000000 và thực thi nó thay thực thi chương trình của người dùng ở User Flash.
Để giao tiếp với bootloader, ST cung BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT cấp một chương trình chạy ở PC, chương trình này có khả năng ghi, xóa vùng nhớ ở User Flash. Ngoài ra chúng ta có thể cấu hình các chân bootpins đưa SRAM nội vào địa chỉ 0x00000000, cho phép tải xuống và thực thi chương trình ngay tại SRAM. Đều này làm tăng tốc độ tải chương trình và hạn chế số lần ghi vào Flash.
Reset And Clock Control Bộ reset của vi điều khiển. STM32 có nhiều nguồn Reset khác nhau ngoài đường Reset bên ngoài. STM32 có thể bị buộc khởi động lại từ: các bộ Watchdogs nội, một Reset mềm thông qua NVIC, bộ Reset mở / tắt nguồn nội và mạch phát hiện điện áp nguồn thấp. Nếu một tín hiệu Reset xuất hiện, một bộ cờ trong thanh ghi kiểm soát và trạng thái RCC có thể được đọc để xác định nguyên nhân gây ra Reset.
Trạng thái của những cờ này vẫn còn tồn tại cho đến khi hệ thống được cấp nguồn trở lại hoặc cho đến khi người dùng thiết lập bit Remove Reset. Xung clock của vi điều khiển STM32F407. Có 3 loại xung clock có thể được sử dụng để làm xung clock hệ thống (SYSCLK-xung clock cho khối xử lý). - HSI( High Speed Internal-16MHZ) nguồn xung clock tốc độ cao bên trong Arm.
- HSE( High Speed External) nguồn xung clock tốc độ cao bên ngoài Arm. Ngoài ra Arm còn có các nguồn clock phụ khác như: BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 9 do an CHƯƠNG 2. CƠ SỞ LÝ THUYẾT - LSI( Low speed internal) 32Khz dùng để cấp cho independent watchdog hay RTC dùng để định thời. - LSE(Low Speed External) nguồn xung clock tốc độ chậm thường được nối với thạch anh 32.768 kHz từ bên ngoài, xung clock này có thể được dùng để cấp cho RTC.
Trong hầu hết các ứng dụng, xung clock dùng cho bộ xử lý Cortex và các thiết bị ngoại vị được lấy từ nguồn dao động bên ngoài (HSE và LSE). Nếu thạch anh ngoại có vấn đề nó sẽ sử dụng bộ dao động nội (LSI) 16Mhz. GPIO và AFIO. GPIO của vi điều khiển.
STM32F407VET6 có 5 cổng đ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 GPIO được đánh số A->E và mức tiêu thụ ở 5V. Nhiều chân 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ười dùng như USART hoặc I2C.
Mỗi port I/O có hai thanh ghi cấu hình 32 bit (GPIOx_CRL,GPIOx_CRH),có hai thanh ghi dữ liệu 32 bit (GPIOx_IDR, GPIOx_ODR), thanh ghi set / reset 32 bit GPIOx_BSRR và thanh ghi reset 16 bit GPIOx_BRR. Tùy vào cách sử dụng mà GPIO được cấu hình là ngõ vào ,ngõ ra , ngõ vào tương tự ,hoặc vừa ngõ vào vừa ngõ ra. Dưới đây là bảng cấu hình của GPIO. AFIO của vi điều khiển 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 vi khá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ới một hay nhiều chân của vi xử lý.