laclongquan

New Member

Download miễn phí Làm gậy dò đường bằng ARM Cortex-M3


STM32 hỗ trợ 5 loại giao tiếp ngoại vi khác nhau. STM32 có giao diện SPI và I2C để giao tiếp với các mạch tích hợp khác. Hỗ trợ giao tiếp CAN cho các module, USB cho giao tiếp với các mạch tích hợp khác, STM cung cấp 2 khối điều khiển SPI có khả năng chạy ở chế độ song công (Full duplex) với tốc độ truyền dữ liệu lên tới 18 MHz. Khối SPI tốc độ cao nằm trên APB2, khối SPI tốc độ thấp nằm trên APBI. Mỗi khối SPI có hệ thống thanh ghi cấu hình độc lập, dữ liệu truyền có thể dưới dạng 8-bit hay 16-bit, thứ tự hỗ trợ MSB hay LSB. Chúng ta có thể cấu hình mỗi khối SPI đóng vai trò master hay slave.


Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

Chương 2: TỔNG QUAN VỀ ARM CORTEX
Như chúng ta đã thấy trong phần giới thiệu, bộ xử lý Cortex là thế hệ lõi nhúng kế tiếp từ ARM. Cortex thừa kế các ưu điểm từ các bộ xử lí ARM trước đó, nó là một lõi hoàn chỉnh, bao gồm bộ xử lí trung tâm Cortex và một hệ thống các thiết bị ngoại vi xung quanh, Cortex cung cấp phần xử lí trung tâm của một hệ thống nhúng. Để đáp ứng yêu cầu khắc khe và đa dạng của các hệ thống nhúng, bộ xử lý Cortex gồm có 3 nhánh, được biểu hiện bằng các ký tự sau tên Cortex như sau:
Cortex-A : bộ vi xử lý dành cho hệ điều hành và các ứng dụng của người dùng phức tạp. Hỗ trợ các tập lệnh ARM, Thumb và Thumb-2.
Cortex-R : bộ xử lý dành cho các hệ thống đòi hỏi khắc khe về tính thời gian thực. Hỗ trợ các 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 tối ưu hóa cho các ứng dụng nhạy cảm về chi phí. Chỉ hỗ trợ tập lệnh Thumb-2.
Con số nằm cuối tên Cortex cho biết mức độ hiệu suất tương đối, với 1 là thấp nhất và 8 là cao nhất. Hiện nay dòng Cortex-M có mức hiệu suất cao nhất là mức 3. STM32 dựa trên bộ xử lý Cortex-M3.
2.1 Các phiên bản kiến trúc ARM
Tính đến thời điểm hiện tại phiên bản kiến trúc mới nhất của lõi ARM là ARMv7.Bộ xử lý Cortex-M3 dựa trên kiến trúc ARMv7- M và có khả năng thực hiện lệnh Thumb-2.
Hình 2.1 Các phiên bản kiến trúc của lõi ARM
2.2 Bộ xử lý Cortex và đơn vị xử lý trung tâm Cortex
Trong suốt phần còn lại của tài liệu này, các thuật ngữ bộ xử lý Cortex (Cortex processor) và đơn vị xử lý trung tâm Cortex (Cortex CPU) sẽ được sử dụng để phân biệt giữ nhúng lõi Cortex hoàn chỉnh và bộ xử lý trung tâm RISC nội (internal RISC CPU). Trong phần tiếp theo chúng ta sẽ xem xét các đặc điểm chính của đơn vị xử lý trung tâm Cortex, tiếp theo là hệ thống thiết bị ngoại vi bên trong bộ xử lý Cortex.
2.3 Đơn vị xử lý trung tâm Cortex (Cortex CPU)
Trung tâm của bộ xử lý Cortex là một CPU RISC 32-bit. CPU này có một phiên bản được đơn giản hóa từ mô hình lập trình (programmer’s model) của ARM7/9, nhưng có một tập lệnh phong phú hơn với sự hỗ trợ tốt cho các phép toán số nguyên, khả năng thao tác với bit tốt hơn và khả năng đáp ứng thời gian thực tốt hơn.
2.3.1 Kiến trúc đường ống (Pipline)
CPU Cortex có thể thực thi hầu hết các lệnh trong một chu kì đơn. Giống như CPU của ARM7 và ARM9, việc thực thi này đạt được với một đường ống ba tầng. Tuy nhiên Cortex-M3 khả năng đoán việc rẽ nhánh để giảm thiểu số lần làm rỗng (flush) đường ống.
Hình 2.2 Kiến trúc đường ống của ARM Cortex – M3
Trong khi một lệnh đang được thực thi, thì lệnh tiếp theo sẽ được giải mã và lệnh tiếp theo nữa sẽ được lấy vè bộ nhớ. cách hoạt động này sẽ phát huy hiệu quả tối đa cho mã tuyến tính (linear code), nhưng khi gặp phải một rẽ nhánh (ví dụ cấu trúc lệnh if…else) thì các đường ống phải được làm rỗng(flush) và làm đầy (refill) trước khi mã có thể tiếp tục thực thi. Với CPU ARM7 và ARM9, việc rẽ nhánh là rất tốn kém về mặt hiệu suất mã (code performance). Trong CPU Cortex có đường ống ba tầng được tăng cường khả năng đoán rẽ nhánh, có nghĩa rằng khi một lệnh rẽ nhánh có điều kiện xuất hiện một thao tác lấy lệnh dựa trên suy đoàn được thực hiện, do đó lệnh rẽ nhánh có điều kiện sẵn sàng để thực hiện mà không cần chịu thêm một thao tác nào. Trường hợp xấu nhất khi gặp phải một rẽ nhánh gián tiếp, khi đó không thể thực hiện việc lấy lệnh dựa trên việc suy đoán, do đó phải làm rỗng đường ống dẫn. Kiến trúc đường ống là chìa khóa dẫn đến hiệu suất tổng thể của CPU Cortex, vì vậy không cần bất kì cân nhắc, xem xét đặc biệt nào được thực hiện trong mã ứng dụng.
2.3.2 Mô hình lập trình (Programmer’s model)
CPU Cortex là bộ xử lý dựa trên kiến trúc RISC, do đó hỗ trợ kiến trúc nạp và lưu trữ (load and store architecture). Để thực hiện lệnh xử lý dữ liệu, các toán hạng phải được nạp vào một tập thanh ghi trung tâm, các phép tính dữ liệu phải được thực hiện trên các thang ghi này và kết quả sau đó được lưu lại trong bộ nhớ.
Hình 2.3 Kiến trúc Load và Store của ARM Cortex – M3
Do vậy tất cả các hoạt động của chương trình tập trung xung quanh tập thanh ghi của CPU. Tập thanh ghi này bao gồm mười sáu thanh ghi 32-bit. Các thanh ghi R0-R12 là các thanh ghi đơn giản, có thể được dùng để chứa các biến của chương trình. Các thanh ghi R13-R15 có chức năng đặc biệt trong CPU Cortex. Thanh ghi R13 được dùng như là con trỏ ngăn xếp (stack pointer). Thanh ghi này được chia thành nhóm (banked), cho phép CPU Cortex có hai chế độ hoạt động, mỗi chế độ có không gian ngăn xếp riêng biệt. Đặc điểm này thường được hệ điều hành thời gian thực (Real Time Operating System) sử dụng để có thể chạy mã hệ thống của mình trong một chế độ bảo vệ. Trong CPU Cortex có hai ngăn xếp được gọi là main stack và process stack. Thanh ghi R14 tiếp theo được gọi là thanh ghi liên kết (link register). Thanh ghi này được sử dụng để lưu trữ các địa chỉ trở về khi một cuộc gọi thủ tục (call a procedure) được thực hiện. Điều này cho phép CPU Cortex thực hiện rất nhanh việc nhập và thoát khỏi một thủ tục (fast entry and exit to a procedure). Nếu chương trình của bạn gọi sâu vào nhiều lớp chương trình con, trình biên dịch sẽ tự động lưu R14 trên ngăn xếp (stack). Thanh ghi cuối cùng R15 là bộ đếm chương trình (Program Counter); nó là một phần của tập thanh ghi trung tâm, nó có thể được đọc và thao tác giống như bất kỳ thanh ghi khác.
Hình 2.4 Mô hình lập trình của ARM Cortex – M3
2.3.2.1 Thanh ghi XPSR
Ngoài tập thanh ghi trung tâm còn có một thanh ghi riêng biệt được gọi là thanh ghi trạng thái chương trình (Program Status Register). Nó không phải là một phần của tập thanh ghi chính và chỉ có thể truy cập thông qua hai lệnh chuyên dụng. XPSR chứa một số các vùng chức năng quan trọng ảnh hưởng đến việc thực thi của CPU Cortex.
Hình 2.5 Thanh ghi trạng thái chương trình của CPU Cortex
Thanh ghi xPRS cũng có thể được truy cập thông qua ba biệt hiệu đặc biệt (special alias names) cho phép truy cập vào các bit trong xPSR. Năm bit đầu là những cờ mã điều kiện và được gán biệt hiệu (aliased) như thanh ghi trạng thái chương trình ứng dụng. Bốn cờ N, Z, C, V (Negative, Zero, Carry và Overflow) sẽ được thiết kế và xóa tùy thuộc vào kết quả của một lệnh xử lý dữ liệu. Bit Q là được sử dụng bởi các lệnh toán học DPS để chỉ ra rằng một biến đã đạt giá trị tối đa hay giá trị tối thiểu của nó. Giống như tập lệnh ARM 32-bit, các lệnh Thumb-2 chỉ được thực hiện nếu mã điều kiện của lệnh phù hợp với trạng thái của các cờ trong thanh ghi trạng thái chương trình ứng dụng (Application Program Status Register). Nếu mã điều kiện của lệnh không phù hợp, thì lệnh đi ngang qua đường ống như là một lệnh NOP (lệnh này không làm gì cả). Điều này đảm bảo rằng các lệnh đi qua đường ống một cách trơn tru và giảm thiểu làm rỗng đường ống. Trong CPU Cortex, kỹ thuật này được mở rộng với thanh ghi trạng thái chương trình thực thi. Đây là một biệt hiệu của bit các bit từ 8-26 của xPSR. Nó gồm ba trường: trườn...
 

Kiến thức bôn ba

Các chủ đề có liên quan khác

Top