Tổng quan kiến trúc ARM Cortex-M3: Xử lý ngắt

MỤC LỤC

Cấu trúc, hoạt động của TIMER

  • Mô tả chức năng hoạt động
    • Cài đặt và cấu hình
      • Mô tả thanh ghi

        Trong khi thêm giá trị đếm vào, GPTM cơ bản ngắt và trigger khi nó trải qua trạng thái 0x0000.0000, GPTM đặt bít TATORIS trong thanh ghi GPTM Raw Interrupt Status (GPTMRIS), và chờ khối đó xóa bởi thanh ghi GPTM Interrupt Clear(GPTMICR). Trong lúc cài đặt, thanh ghi GPTM Timern Match(GPTMTnMATCHR) được cấu hình như vậy ta thấy được sự khác nhau giữa giá trị trên thanh ghi GPTMTnILR và thanh ghi GPTMTnMATCHR ngang như số của edge sự kiện phải đếm.

         Cấu hình kiểu sự kiện ngoài timer captures bởi ghi giá trị field TNEVENT của thanh ghi GPTMCTL.
         Cấu hình kiểu sự kiện ngoài timer captures bởi ghi giá trị field TNEVENT của thanh ghi GPTMCTL.

        Cấu trúc và hoạt động của Interrupts

        Xử lý ngắt

        Trước hết nó không phải là xác định,thời gian để thực hiện việc chấm dứt hay hủy bỏ một lệnh đang được thực hiện khi sảy ra ngắt là không xác định. Điều này không là vấn đề trở ngại cho nhiều ứng dụng, nhưng nó là vấn đề lớn cho điều khiển thời gian thực. Thứ hai, cơ cấu ngắt của ARM7 và ARM9 không hỗ trợ việc ngắt lồng.

        Một trong những tiêu chớ quan trọng của lừi Cortex là khắc phục những hạn chế này và cung cấp một cấu trúc ngắt chuẩn cực kỳ nhanh chóng và xác định.

        Bộ điều khiển vector ngắt lồng nhau

          Mặc dự NVIC là một đơn vị đạt chuẩn bờn trong lừi Cortex, để dữ cho số bong bán dẫn ở mức tối thiểu, số đường tín hiệu ngắt đi vào NVIC có thể cấu hình khi vi điều khiển được thiết kế. Trong các chuẩn giao diện nhị phân ARM các thanh ghi này được sử dụng để truyền tham số, do đó thao tác lưu trữ các thanh ghi này sẽ được cung cấp cho chúng ta một bộ thanh ghi sẵn sang được sử dụng bởi trình phục vụ ngắt. Khi kết thúc quá trình phục vụ ngắt, khung ngăn xếp được khôi phục tự động bởi chương trình song song với thao tác đó thì địa chỉ trở về được lấy về, để chương trình nền có thể tiếp tục sau 12 chu kỳ.

          NVIC có phương pháp xử lý thông minh nhiều nguồn ngắt, sao cho độ trễ giữa các ngắt là tối thiểu và đảm bảo rằng các ngắt có mức ưu tiên cao nhất sẽ được phục vụ đầu tiên.

          Hình 3-1: Cấu trúc của NVIC trong bộ xử lý Cortex
          Hình 3-1: Cấu trúc của NVIC trong bộ xử lý Cortex

          Cấu hình sử dụng NVIC

          Với khả năng xử lý một ngắt đơn rất nhanh, NVIC được thiết kế để xử lý hiệu quả nhiều ngắt trong một ứng dụng đòi hỏi khắt khe thời gian thực. NVIC được thiết kế cho phép các ngắt có mức ưu tiên cao sẽ dành quyền so với ngắt có mức ưu tiên thấp hơn đang chạy. Trong trường hợp này ngắt đang chạy sẽ dừng và một khung ngăn xếp mới được lưu lại, thao tác này chỉ mất 12 chu kỳ sau đó ngắt có mức ưu tiên cao hơn sẽ chạy.

          Khi ngắt có mức ưu tiên cao thực hiện xong, dữ liệu được lưu trên ngăn xếp trước đó sẽ tự động lấy ra và ngắt đó có thể tiếp tục thực hiện.

          Cấu hình ngắt cho thiết bị ngoại vi
          Cấu hình ngắt cho thiết bị ngoại vi

          Giao diện nối tiếp đồng bộ (SSI)

          Mô tả chức năng

          • Hoạt động FIFO .1 FIFO truyền
            • Định dạng khung

              Đối với cả ba định dạng, clock nối tiếp (SSIClk) không hoạt động trong khi SSI được nhàn rỗi, và SSIClk chuyển tiếp vào các tần số được lập trình chỉ hoạt động trong quá trình truyền hoặc nhận dữ liệu. Sau khi tin nhắn đã được gửi đi, các slave off-chip giải mã tin nhắn và sau khi chờ một xung đồng hồ nối tiếp sau khi bit cuối cùng của tin nhắn điều khiển 8bit đã được gửi đi, đáp trả với các yêu cầu dữ liệu. Sau khi tin nhắn đã được gửi đi, các slave off-chip giải mã nó, sau khi chờ đợi một xung đồng hồ nối tiếp sau khi bit cuối cùng của tin nhắn kiểm soát 8-bit được gửi đi, đáp ứng những dữ liệu yêu cầu.

              Khi kết thúc của khung, với truyền đơn, tín hiệu SSIFss được kéo lên cao trong một xung clock sau khi bit cuối cùng đã được chốt trong bộ dịch nối tiếp nhận, là nguyên nhân để dữ liệu được truyền cho FIFO nhận.

              Hình 4-2 cho thấy định dạng khung nối tiếp đồng bộ Texas Instruments cho một khung truyền đơn
              Hình 4-2 cho thấy định dạng khung nối tiếp đồng bộ Texas Instruments cho một khung truyền đơn

              Khởi tạo và cấu hình

              Mỗi giá trị nhận được truyền từ bộ ghi dịch nhận trên sườn xuống của SSIClk, sau khi LSB của khung đã được chốt vào SSI.

              Giao diện liên vi mạch (I2C)

              Mô tả chức năng

              • Tổng quan chức năng bus I2C
                • Ngắt

                  Số byte trên mỗi lần truyền (được định nghĩa là thời gian giữa một điều kiện START và STOP) là không hạn chế, nhưng mỗi byte phải được theo sau bởi một bit báo nhận, và các dữ liệu phải truyền MSB đầu tiên. Một chuyển từ cao xuồng thấp trên đường SDA khi SCL là cao được định nghĩa là một điều kiện START, và một sự chuyển đổi thấp đến cao trên đường SDA khi SCL là cao được định nghĩa là một điều kiện STOP. Việc truyền dữ liệu luôn luôn kết thúc bằng một điều kiện STOP tạo bởi master, tuy nhiên, một master có thể bắt đầu truyền thông với một thiết bị khác trên bus bằng cách tạo ra một điều kiện START lặp đi lặp lại và địa chỉ slave khác mà không cần tạo ra một điều kiện STOP.

                  Phần mềm xác định xem các module nên ghi (truyền) hoặc đọc (nhận) dữ liệu từ thanh ghi I2C Slave Data (I2CSDR), bằng cách kiểm tra bit RREQ và TREQ của thanh ghi I2C Slave Control/Status (I2CSCSR).

                  Hình 5-3. Điều kiện START và STOP
                  Hình 5-3. Điều kiện START và STOP

                  Khởi tạo và cấu hình

                  Nếu ứng dụng không yêu cầu sử dụng ngắt, tình trạng ngắt thô luôn nhìn thấy được qua thanh ghi I2C Master Raw Interrupt Status (I2CMRIS). Nếu các module slave là trong chế độ nhận và byte đầu tiên của một chuyển giao được nhận, bit FBR được thiết lập cùng với bit RREQ. Nếu ứng dụng không yêu cầu sử dụng của các ngắt, tình trạng gián đoạn thô luôn nhìn thấy được qua thanh ghi I2C Slave Raw Interrupt Status (I2CSRIS).

                  Xác định địa chỉ slave của master và các hoạt động tiếp theo sẽ là gửi bằng cách ghi thanh ghi I2CMSA với một giá trị 0x0000.0076.

                  Bản đồ thanh ghi

                  Trong module GPIO, cho phép các chân thích hợp cho chức năng thay thế bằng cách sử dụng thanh ghi GPIOAFSEL. Giá trị được ghi cho thanh ghi I2CMTPR đại diện cho số chu kỳ đồng hồ hệ thống trong một chu kỳ clcok SCL. Đặt dữ liệu (byte) được gửi trong thanh ghi dữ liệu bằng cách ghi thanh ghi I2CMDR với dữ liệu mong muốn.

                  Tập tin hw_i2c.h trong Thư viện StellarisWare Driver ® sử dụng một địa chỉ cơ sở 0x800 cho thanh ghi slave I2C.

                  Module điều khiển mạng (CAN)

                  Mô tả chức năng

                  • Xử lý đối tượng tin nhắn nhận

                    Nếu thanh ghi dịch truyền nội của module CAN đã sẵn sàng cho tải, và nếu không có dữ liệu chuyển giao giữa thanh ghi giao diện CAN và bộ nhớ RAM, đối tượng tin nhắn hợp lệ với mức ưu tiên cao nhất mà có yêu cầu truyền dẫn đang chờ được nạp vào thanh ghi dịch truyền bởi bộ xử lý tin nhắn và truyền dữ liệu được bắt đầu. Để chỉ cập nhật dữ liệu trong một đối tượng tin nhắn, các bit WRNRD, DATAA và DATAB trong thanh ghi CANIFnMSKn được thiết lập, tiếp theo ghi dữ liệu được cập nhật vào thanh ghi CANIFnDA1, CANIFnDA2, CANIFnDB1, và CANIFnDB2, và sau đó số đối tượng tin nhắn được ghi vào vùng MNUM trong thanh ghi CAN IFn Command Request (CANIFnCRQ). Để ngăn chặn việc xóa bit TXRQST trong thanh ghi CANIFnMCTL vào cuối của truyền có thể đã được tiến hành trong khi dữ liệu được cập nhật, các bit NEWDAT và TXRQST phải thiết lập cùng một lúc trong thanh ghi CANIFnMCTL Khi các bit này được đặt ở cùng một thời điểm, NEWDAT bị xóa ngay sau khi việc truyền tải mới đã bắt đầu.

                    Khi vùng phân xử và kiểm soát (các bit ID và XTD trong thanh ghi CANIFnARB2 và RMTEN và DLC [3:00] của thanh ghi CANIFnMCTL ) của một tin nhắn gửi đến được dịch sang bộ điều khiển CAN, khả năng xử lý thông điệp của bộ điều khiển bắt đầu quét RAM tin nhắn cho đối tượng tin nhắn kết hợp hợp lệ.

                    Hình 6-2. Khung dữ liệu / từ xa CAN
                    Hình 6-2. Khung dữ liệu / từ xa CAN

                    Bản đồ thanh ghi

                    Một khi ở chế độ kiểm tra, các bit TX [1:00], LBACK, SILENT và BASIC trong thanh ghi kiểm tra CAN (CANTST) có thể được sử dụng để đặt bộ điều khiển CAN vào phương thức chẩn đoán khác nhau. Trong trường hợp phân xử, tuy nhiên, khi hai hoặc nhiều hơn nút CAN đồng thời cố gắng truyền tải một khung, một điểm mẫu đặt không đúng chỗ có thể gây ra một bộ truyền trở thành lỗi thụ động. Các thông số thời gian của thời gian bit có thể được cấu hình riêng cho mỗi nút CAN, tạo ra một tốc độ bit phổ biến mặc dù chu kỳ dao động các nút CAN có thể khác nhau.

                    Miễn là các biến thể còn bên trong phạm vi dung sai của một bộ dao động cụ thể, các nút CAN có thể bù đắp tốc độ khác nhau bằng đồng bộ lại chu kỳ vào dòng bit.

                    Bảng 4-3 là danh sách thanh ghi. Tất cả các địa chỉ đã cho là tương đối đến địa chỉ cơ sở CAN của:
                    Bảng 4-3 là danh sách thanh ghi. Tất cả các địa chỉ đã cho là tương đối đến địa chỉ cơ sở CAN của:

                    Bộ chuyển đổi tương tự - số (ADC)

                    • Mô tả chức năng
                      • Khởi tạo và cấu hình

                        Các Nibbles ADCSSMUXn chọn chân đầu vào, trong khi Nibbles ADCSSCTLn chứa các bit kiểm soát mẫu tương ứng với thông số như lựa chọn cảm biến nhiệt độ, cho phép ngắt, kết thúc chuỗi, và sai chế độ đầu vào. Các tín hiệu ngắt của module ADC được kiểm soát bởi trạng thái của các bit MASK trong thanh ghi ADCIM Tình trạng ngắt có thể được xem ở: thanh ghi ADCRIS, trong đó cho thấy trạng thái ban đầu của các tín hiệu ngắt khác nhau, và thanh ghi ADCISC, trong đó cho thấy ngắt được kích hoạt bởi thanh ghi ADCIM. Nếu một đầu vào tương tự lớn hơn 3 V hoặc nhỏ hơn 0 V (phạm vi giá trị đầu vào tương tự), điện áp đầu vào được cắt bớt, có nghĩa là nó xuất hiện như là một trong hai 3 V hoặc 0 V, tương ứng, với ADC.

                        Chế độ này là có sẵn trong thanh ghi (ADCTMLB). Các cảm biến nhiệt độ phục vụ hai mục đích chính: 1) để thông báo cho các hệ thống nội bộ nhiệt độ quá cao hay thấp cho các hoạt động đáng tin cậy, và 2) để cung cấp các phép đo nhiệt độ để hiệu chỉnh giá trị module Hibernate trim RTC.

                        Hình 7-1 Sơ đồ khối bộ ADC.
                        Hình 7-1 Sơ đồ khối bộ ADC.

                        UARTs

                        Mô tả chức năng

                          Thanh ghi nội này chỉ được cập nhật khi 1 sự vận hành write được thực hiện, vì vậy bất kỳ thay đổi nào tới bộ chia tốc độ baud phải write tới thanh ghi UARTLCRH để thay đổi các ảnh hưởng. Thiết bị ngoại vi UART bao gồm 1 khối giải mã và mã hóa IrDA SIR, Khối này cung cấp chức năng chuyển đổi 1 dòng UART không đồng bộ và giao diện bán song công SIR. - Chế độ low-power IrDA: với độ rộng của xung hồng ngoại được phát được 3 lần trong giới hạn của tín hiệu phát nội IrLPBaud16 bằng cách thay đổi các bit phù hợp trong thanh ghi UARTCR.

                          Tất cả các sự kiện ngắt đều Ored trước khi gửi đến bộ điều khiển ngắt vì vậy UART chỉ có thể thực hiện ngắt 1 yêu cầu ngắt đơn lẻ tới bộ điều khiển tại bất kỳ thời gian nào.

                          8.3 Khởi tạo và cấu hình.
                          8.3 Khởi tạo và cấu hình.