Thứ Bảy, 1 tháng 12, 2018

Bài 4. GPIO trong Cortex-M3 LPC1768 Hướng dẫn vi điều khiển

GPIO trong Cortex-M3 LPC1768 Vi điều khiển là thiết bị ngoại vi cơ bản nhất. GPIO, Mục đích chung Đầu vào đầu vào là những gì chúng ta hãy vi điều khiển của bạn được một cái gì đó nhiều hơn một bộ xử lý phụ trợ yếu. Với nó, bạn có thể tương tác với thế giới vật lý, kết nối các thiết bị khác và biến vi điều khiển của bạn thành một cái gì đó hữu ích. GPIO có hai chế độ hoạt động cơ bản, đầu vào và đầu ra. Đầu vào cho phép bạn đọc điện áp trên một pin, để xem liệu nó có được giữ ở mức thấp (0V) hay cao (3V) và xử lý thông tin đó theo chương trình. Đầu ra cho phép bạn đặt điện áp trên một chân, một lần nữa là cao hay thấp.

Mỗi chốt trên LPC1768 có thể được sử dụng như pin GPIO và có thể được đặt độc lập để hoạt động như đầu vào hoặc đầu ra. Trong hướng dẫn tiếp theo, chúng tôi sẽ hướng dẫn bạn cách đạt được mục tiêu này. Tôi có nghĩa là đọc trạng thái của chuyển đổi và làm cho đèn LED nhấp nháy. Nhưng bây giờ chúng ta chỉ cần nhìn vào những điều cơ bản, điều rất quan trọng để hiểu trước khi chúng ta đi và xây dựng ứng dụng. Tùy thuộc vào phiên bản LPC17xx pinout có thể khác nhau. Ở đây chúng tôi sẽ tập trung vào 100 pin LPC1768 làm ví dụ. Vui lòng giữ LPC1768 Hướng dẫn sử dụngvới bạn [Chương: 9, Trang số: 129]. ghim trên LPC1768 được chia thành 5 nhóm (PORT) bắt đầu từ 0 đến 4. Quy ước đặt tên pin: P0.0 (nhóm 0, pin 0) hoặc (cổng 0, pin 0). Mỗi chốt có 4 chế độ hoạt động: GPIO (mặc định), chức năng thay thế thứ nhất, chức năng thay thế thứ 2, chức năng thay thế thứ 3. Hầu như tất cả các chân GPIO được cấp nguồn tự động vì vậy chúng tôi không cần bật chúng luôn. Chúng ta hãy xem chi tiết về cấu hình của các chân cổng GPIO này.

1. Cài đặt chức năng Pin

Các LPC_PINCON chế độ kiểm soát đăng ký hoạt động của các pin. 
LPC_PINCON -> PINSEL0 [1: 0] kiểm soát chế độ hoạt động của PIN 0.0 . 
[Số trang: 102, Bảng: 74]. 
……. 
LPC_PINCON -> PINSEL0 [31:30] kiểm soát chế độ hoạt động của PIN 0.15 . 
LPC_PINCON -> PINSEL1 [1: 0] điều khiển chế độ hoạt động PIN 0.16 . 
…… .. 
LPC_PINCON -> PINSEL1 [29:28] kiểm soát chế độ hoạt động PIN 0,30 . 
LPC_PINCON -> PINSEL2 [1: 0] điều khiển chế độ vận hành PIN 1.0 . 
…… .. 
LPC_PINCON -> PINSEL2 [31:30] kiểm soát mã PIN 1.15chế độ hoạt động 
LPC_PINCON -> PINSEL3 [1: 0] điều khiển PIN 1.16 chế độ hoạt động 
……… 
LPC_PINCON -> PINSEL3 [31:30] điều khiển PIN 1.31 chế độ hoạt động 
…… .. 
LPC_PINCON -> PINSEL9 [25:24] điều khiển PIN 4.28 hoạt động chế độ 
LPC_PINCON -> PINSEL9 [27:26] điều khiển chế độ hoạt động PIN 4.29
LƯU Ý: một số bit đăng ký được dành riêng và không được sử dụng để kiểm soát pin chẳng hạn, 
LPC_PINCON -> PINSEL9 [23: 0] được đặt trước. 
LPC_PINCON -> PINSEL9 [31:28] đã được đặt trước.
Giá trị bitChức năng
00Chức năng GPIO
01st chức năng thay thế
10nd chức năng thay thế
11Hàm thứ 3 thay thế
Ví dụ: 
Để đặt pin 0,3 thành GPIO (đặt bit tương ứng thành 00) 
LPC_PINCON -> PINSEL0 & = ~ ((1 << 7) | (1 << 6));
Để đặt mã 0,3 là kênh ADC 0.6 ( chức năng thay thế thứ 2 , đặt bit tương ứng thành 10) 
LPC_PINCON -> PINSEL0 & = ((1 << 7) | (0 << 6)); // bạn có thể bỏ qua (0 << 6)
Để tham khảo [Trang số: 117, Bảng: 80]

2. Cài đặt hướng pin

Đăng ký LPC_GPIOn ->  FIODIR [31: 0] điều khiển đầu vào / đầu ra của pin, trong đó 'n' là viết tắt của nhóm pin (0-4). Để đặt ghim làm đầu ra, hãy đặt bit tương ứng thành '1'. Để đặt ghim làm đầu vào, hãy đặt bit tương ứng thành '0', theo mặc định, tất cả các chân được đặt làm đầu vào (tất cả các bit là 0). 
Ví dụ: 
Để đặt 0,3 làm đầu ra 
LPC_GPIO -> FIODIR | = (1 << 3);

3. Pin được đặt làm đầu ra

Pin 
LPC_GPIOn -> FIOSET được sử dụng để biến pin thành HIGH. Đăng ký LPC_GPIOn ->  FIOCLR được sử dụng để biến một pin xuống thấp. Để biến một pin thành số '1' (cao), hãy đặt bit tương ứng của LPC_GPIOn ->  FIOSETthành 1. Để xoay ghim thành số '0' (thấp), hãy đặt bit tương ứng của LPC_GPIOn -> FIOCLR thành 1. 
Ví dụ 
Turn Pin 0.3 thành 
LPC_GPIO0 cao -> FIOSET | = (1 << 3); 
Nếu chúng ta đặt LPC_GPIOn -> FIOSET bit thành '0' thì không có hiệu lực. 
Biến Pin 0,3 thành thấp 
LPC_GPIO0 -> FIOCLR | = (1 << 3); 
Nếu chúng ta đặt LPC_GPIOn -> FIOCLR bit thành '0' thì không có hiệu lực.

4. Pin được đặt thành đầu vào

  • Đọc
    Đăng ký Giá trị Pin LPC_GPIOn -> FIOPIN lưu trữ trạng thái pin hiện tại. Bit tương ứng là '1' chỉ ra rằng pin được điều khiển cao. 
    Ví dụ
    Để đọc trạng thái hiện tại của
    giá trịPin 0.3= ((LPC_GPIO0 -> FIOPIN & (1 << 3)) >> 3); 
    Lưu ý:viết 1/0 cho bit tương ứng trong LPC_GPIOn-> FIOPIN có thể thay đổi đầu ra của pin thành 1/0 nhưng không được khuyến nghị. Chúng ta nên sử dụng LPC_GPIOn -> FIOSET và GPIOn-> FIOCLR.
  • Pin Nội bộ Kéo lên Thiết lập
    Đăng ký LPC_PINCON -> PINMODEn được sử dụng để thiết lập một pin nội pull-up. 
    LPC_PINCON -> PINMODE0 [1: 0] điều khiển P0.0 pull-up nội bộ
    … ..
    LPC_PINCON -> PINMODE0 [31:30] điều khiển P0.15 nội bộ pull-up,
    Vui lòng xem LPC_PINCON -> PINSELn cho danh sách đầy đủ [Trang Số: 114].
    Giá trị bitChế độ pin
    00Đã bật điện trở kéo lên chip
    01Chế độ lặp
    10Chế độ Tri-State, (không kéo và kéo xuống)
    11Đã bật điện trở kéo xuống của chip
    Ví dụ:
    Theo mặc định tất cả các chân được đặt làm đầu vào có nội bộ kéo lên trên (00).
    Để tắt nội bộ pull-up trên pin 0.3 
    LPC_PINCON -> PINSEL0 | = (1 << 7);

Không có nhận xét nào:

Đăng nhận xét

Bài đăng mới nhất

14. I2C trong LPC2148 vi điều khiển ARM7

Trong bài này, chúng ta sẽ tìm hiểu về cách lập trình I2C trong LPC2148 ARM7 Microcontroller.  Ngoài ra, chúng tôi sẽ giao diện nối tiếp EE...