Vi Điều Khiển

Chào mừng các bạn đến với thế giới của Vi điều khiển!

--welcome to the world of microcontrollers^^ --

Điện Tử Cơ Bản

nơi khởi đầu

Lập Trình

linh hồn của phần cứng

Hiển thị các bài đăng có nhãn hướng dẫn lập trình ARM. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn hướng dẫn lập trình ARM. Hiển thị tất cả bài đăng

Thứ Năm, 1 tháng 3, 2012

[Lập trình ARM-LPC2378] Chuyển Đổi Tương Tự/Số - ADC, DAC



Bài trước: [Lập trình ARM-LPC2378] Ngắt Trong LPC23xx


Bài 5: Chuyển Đổi Tương Tự/Số - ADC, DAC


Nội dung
+ Tạo file Thư viện *.lib
+ Chuyển đổi Tương tự - Số: ADC
+ Chuyển đổi Số - Tương tự: DAC


Tạo file thư viện*.lib





+ Có 1 project định nghĩa các hàm.
+ Biên dịch project này ra file *.lib.
+ Một project khác add file .lib này vào và có thể gọi sử dụng các hàm trong file *.lib.
+ File gọi *.lib là file thư viện.


ADC
Giới thiệu
+ LPC2378 hỗ trợ 8 kênh chuyển đổi ADC


Các thanh ghi liên quan
+ AD0CR ( A/D Control Register ): Thanh ghi điều khiển AD - chọn chế độ xử lý cho qua trình chuyển đổi AD.
+ AD0GDR ( A/D Global Data Register ): Thanh ghi dữ liệu toàn cục - Chứa kết quả chuyển đổi AD gần nhất.
+ AD0STAT ( A/D Status Register ): Thanh ghi trạng thái - Cờ DONE và OVERRUN cho tất cả các kênh.
+ AD0INTEN (A/D Interrupt Enable Register): Thanh ghi bật / ngắt.

+ AD0DRn (A/D Channel n Data Register): Thanh ghi chứa dữ liệu tại kênh n– chứa kết quả chuyển đổi gần nhất trên kênh n.


Bật Power
Quản lý bởi Thanh ghi PCONP tại địa chỉ 0xE01FC0C4:



Cấu hình PINSEL


Đọc giá trị ADC
+ Kết quả chuyển đổi AD dược đọc tại thanh ghi AD0DR0 (từ bit thứ 6 đến bit thứ 15):
value = (AD0DR0 >> 6) & 0x3FF;  



DAC
Giới thiệu
Bộ DAC chuyển đổi dữ liệu số thành tín hiệu bên ngoài (điển hình là âm thanh)


Các thanh ghi liên quan

+ DACR  (D/A Control Register) : thanh ghi điều  khiển AD –để đặt giá trị cần thay đổi tới.


Cấu hình PINSEL



PINSEL1 &= ~(0x03<<20); //enable DAC
PINSEL1 &= ~(0x02<<20); //enable DAC








(nguồn: ĐHKHTN TP.HCM)

Thứ Ba, 28 tháng 2, 2012

[Lập trình ARM-LPC2378] Tổ Chức Bộ Nhớ, Thiết Lập Pin, GPIO, Debug



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





(Nguồn: ĐHKHTN TP.HCM)

Hướng Dẫn Lập Trình ARM - LPC2378


Bài sau: [Lập trình ARM-LPC2378] Tổ Chức Bộ Nhớ, Thiết Lập Pin, GPIO, Debug
Tham khảo:
+ Tạo dự án trong Keil ARM
Cài đặt Keil 4 Full


Bài 1: Hướng Dẫn Lập Trình ARM - LPC2378


Nội Dung
+ Giới thiệu về thành phần Board LPC2378.
+ Cài đặt và cấu hình Chương trình Keil uVision3.
+ Cách flash chương trình xuống Board qua JTAG và bằng công cụ Flash Magic.

Giới thiệu Chip LPC2378
+ LPC2378 của NXP là MCU thuộc họ ARM7 - TDMI
+ Tốc độ CPU: 72MHz
+ Rom: 512Kbytes
+ Bộ nhớ: 58Kbytes
        - RAM: 32kb
        - USB RAM: 8k
        - Ethernet RAM: 16k
        - RTC RAM: 2k
+ Nguồn: 3.3V


Thiết bị ngoại vi


Chương trình KEIL




Kết nối board với máy tính thông qua ULINK2
+ Bước 1: Kết nối U-LINK với PC thông qua cable USB.
+ Bước 2: Kết nối U-LINK đến cổng JTAG nằm trên board LPC.
+ Bước 3: Cấp nguồn cho board MCB2300 bằng cable USB.



Cấu hình trong chương trình Keil uVision
+ Dùng công cụ phát triển Keil uVision để tạo, biên dịch, download, debug và chạy chương trình trên board MCB2300.
+ Trong Phần menu Flash/Configủa Flash Tool, chọn Tab Debug, ta nhận thấy thông số của thiết bị JTAG và nên chọn Max JTAG, Clock là 200kHz.


+ Và trong Tab Utilities như sau:



Config vùng nhớ ROM
+ Cấu hình vùng nhớ ROM tại IROM1 với vị trí bắt đầu Start có giá trị 0x0 và kích thước Size có giá trị 0x80000.



Config vùng nhớ RAM
+ Cấu hình vùng nhớ RAM tại IRAM1 với vị trí bắt đầu Start có giá trị 0x40000000 và kích thước Size có giá trị 0x8000.


Biên dịch chương trình






Download xuống board




Kết nối thông qua giao tiếp Serial
+ Tiện ích Flash Magic: Kết nối cổng COM của PC với cổng Serial (UART) của board MCB2300 để nạp chương trình qua board với giao diện ISP Flash.
+ Đánh dấu Create HEX File để tạo file Hex cho những tiện ích Flash bên ngoài.




Cấu hình để chạy Flash Magic
+ Thiết lập jumer trên board MCB2300:
        - j9 và j10: ON.
        - j13: OFF.
+ Chạy "Flash Magic" và thiết lập thông số như sau:




Flash xuống board
+ Thực hiện theo từng bước trong Flash Magic và flash file .Hex xuống board.




(Nguồn: ĐHKHTN TP.HCM)