Bài trước: Hướng Dẫn Lập Trình ARM - LPC2378
Bài sau: [Lập trình ARM-LPC2378] Truyền Thông Nối Tiếp Không Đồng Bộ- UART

Bài 2: Tổ Chức Bộ Nhớ, Thiết Lập Pin, GPIO, Debug

Nội Dung
+ Cách tổ chức bộ nhớ trong LPC2378
+ Cách thiết lập PIN
+ Debug chương trình

Cách tổ chức bộ nhớ trong LPC2378
+ Bộ xử lý ARM có thể quản lý một không gian địa chỉ bộ nhớ 4Gb
+ Bảng sau đây thể hiện sự phân bố địa chỉ của vùng bộ nhớ trong các thiết bị ARM:



Địa chỉ vùng nhớ LPC23xx

Cách thiết lập PIN
Cấu hình PIN - LPC2378
+ Chip LPC2378 có 144 chân. Với sơ đồ chân như sau:


+ Mỗi chân tương ứng có những chức năng, nhiệm vụ khác nhau.
Ví Dụ:


Thanh ghi PINSEL
+ Các thanh ghi PINSEL (PINSEL0 - PINSEL10) đảm nhiệm việc kết nối giữa các PIN và các thiết bị ngoại vi.
+ Các thanh ghi cấu hình này điều khiển thiết lập những chức năng khác nhau, với mỗi 2Bit tương ứng ta có 4 trường hợp như sau:


Ví Dụ:


Địa chỉ thanh ghi PINSEL
+ Mỗi thanh ghi PINSEL có 4Bytes




GPIO
+ Viết tắt của: General Purpose Input Output.
+ Là chân input/output.
+ LPC2378 có 104 chân có chức năng GPIO.
+ Được thiết lập qua 5 Port 32Bit:


+ Việc điều khiển trực tiếp trong thanh ghi GPIO chỉ có hiệu quả khi chức năng GPIO được chọn tại các PICSEL.
Ví Dụ:

+ Muốn chọn Port0.0 và 0.1 là GPIO thì PINSEL0=0x00; (giá trị mặc định của PINSEL).
+ Low GPIO được điều khiển bởi các thanh ghi: IOPIN, IOSET, IODIR, IOCLR. (Chỉ cho Port0 và Port1)
+ Fast GPIO được điều khiển bởi các thanh ghi: FIOPIN, FIOSET, FIODIR, FIOCLR, FIOMASK.



Ví Dụ:
+ Cấu hình Port0.6 là output:
        - IODIR0 = 0x00000040; //Bit thứ 6 được bật lên 1: [ 0000 0000 0100 0000 ]
+ Cấu hình Port0.6 ở mức tín hiệu cao:
        - IOSET0 = 0x00000040;
+ Cấu hình Port0.6 ở mức tín hiệu thấp:
        - IOCLR0 = 0x00000040;

Ví Dụ - Lập trình LED trên Board MCB2300
+ Các đèn LED trên Board được thể hiện qua Port2.0 đến port2.7:
Void LED_Init(void)
{
     PINSEL10 = 0;
     FIO2DIR = 0x000000FF; //P2.0 - P2.7 là Output.
     FIO2MASK = 0x00000000;
}
+ Tắt / mở LES:
Void LED_On(unsigned int num)
{
     FIO2SET = (1<<num); //VD: n=2 => FIO2SET = (1<<2) <=> FIO2SET = 0x04;
}
Void LED_Off(unsigned int num)
{
     FIO2CLR = (1<<num);
}


Debug chương trình
Debug



Phạm Văn Ngọc Anh- 01644326695


(Nguồn: ĐHKHTN TP.HCM)

board lpc2378, Debug, GPIO, hướng dẫn lập trình ARM, LPC 2378, Thiết Lập Pin, Tổ Chức Bộ Nhớ, Vi Xử Lý ARM, Điện Tử Cơ Bản, Tài Liệu Vi Điều Khiển,

Đăng nhận xét

Đăng nhận xét

Author Name



Tôi là Ngọc Anh. Tôi đến từ Nghệ An. Tôi tốt nghiệp một trường đại học tại Sài Gòn. Hiện tôi đang phát triển công ty riêng. Liên lạc với tôi qua:






Biểu mẫu liên hệ

Tên

Email *

Thông báo *

Được tạo bởi Blogger.