P. 1
Arm

Arm

|Views: 138|Likes:
Published by haigcn

More info:

Published by: haigcn on Mar 28, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

08/01/2013

pdf

text

original

Bộ vi xử lý ARM Cortex-M3 là thế hệ mới nhất của bộ xử lý ARM cho các hệ thống nhúng.


được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng yêu cầu thực thi của MCU với
việc giảm số bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ năng lượng thấp và giảm giá
thành vi xử lí, đồng thời cung cấp hiệu năng tính toán cao và một hệ thống tiên tiến để đáp ứng
ngắt. Bộ vi xử lý ARM Cortex-M3 32-bit RISC đạt hiệu suất cao hơn so với ARM7TDMI-S.
Dòng vi xử lý hiệu suất cao STM32F103 có một lõi ARM nhúng và do đó nó tương thích với tất
cả các công cụ và phần mềm cho ARM hiện đang có trên thị trường. Nó là sự kết hợp của ARM
Cortex-M3 CPU hiệu suất cao với rất nhiều thiết bị ngoại vi mở rộng và các I/O cải tiến. GEM31
là board mạch phát triển với chi phí thấp cho vi điều khiển STM32F103RCT6 dựa trên lõi ARM
Cortex-M3 của STMicroelectronis. Board GEM31 mang đến giải pháp hoàn hảo cho sự phát
triển ngoại vi USB. Tất cả các cổng vi điều khiển có sẵn trên kết nối mở rộng.
ĐẶC ĐIỂM CHÍNH
• MCU: STM32F103RCT6 ARM 32 bit CORTEX M3™ có 256K Bytes Program Flash, 48K
Bytes RAM, 1x USB Device 2.0, 1x CAN, 2x I2C, 2x I2S, 3x SPI (18 Mbit/s), 3x ADC 12 bit,
2x DAC 12 bit, 5x UART, 8x TIMERS, 12x DMA, 2x WDT (Independent và Window), 1x
SysTick Timer (24 bit downcounter), 1x RTC, tần số hoạt động tối đa 72Mhz, điện áp hoạt động
2.0-3.6V. Cổng debug có JTAG, SWD (Serial wire debug) và Cortex-M3 ETM (Embedded
Trace Macrocell).
• ADC(đọc từ biến trở, cảm biến nhiệt độ, ánh sáng...)
• UART (giao tiếp PC hoặc dùng như boot loader để nạp chương trình...)GPIO (Led,
Button...) NútReset Buzze (dùng PWM để phát nhạc...)
• USB (2.0 full speed)
• RTC (lập lịch điện tử...)
• MMC/SD/I2S
• CAN (2.0)
• Power (lấy từ nguồn Adapter 7.5VDC hoặc USB)
• JTAG chuẩn 20 chân , hoàn toàn tương thích với WIGGLER ARM JTAG, ULINK, và
JLINK ARM JTAG.
• Kích thước : 90.67 x 73.54mm (3.56 x 2.89").
Đi kèm với kít: - CD Software, Cáp USB.
- Cáp nối RS232
Keil C là chương trình hỗ trợ khá đầy đủ cho lập trình cho vi điều khiển họ 8051 ngoài việc biên
dịch bằng ngôn ngữ C bạn cũng có thể biên dịch dưới dạng ASM. Đây cũng là một cách để tìm
hiểu thêm về ngôn ngữ ASM rất tốt cho bạn..
Phần mềm: Keil C.rar
Để tiến hành cài đặt bạn tiến hành làm như sau:
B1: Bạn Click vào flie c51v815.exe
B2: Chọn Next màn hình sẽ xuất hiện như sau:
B3: Click chọn “i agree to all the terms of the preceding License Agreement”, sau đó chọn Next
khi đó màn hình sẽ xuất hiện
B4: Bạn có thề để mặc định và tiếp tục chọn Next. Tuy nhiên bạn cũng có thề thay đổi nội dung
thông tin cá nhân ở dưới :
B5: Chọn Next để bắt đầu cài đặt
B6: au khi quá trình cài đặt xong bạn chọn Finish để hoàn tất cài đặt.
Saukhi cài đặt xong bạn tiến hành cài key cho phần mềm:
B7: Bạn mở chương trình Keil C vừa được cài đặt lên vào file => chọn License Managament
màn hình sẽ xuất hiện như sau:
B8: Sau khi cửa sổ sau xuất hiện, bạn Copy Computer ID (CID) của máy mình
B9:bạn có thể chạy File Keil_lic-v3.2_2.exe tích vào Extenal CID code và Pass CID bạn vừa
copy được ở trên vào đó và chọn Generete
B10: Chương trình sẽ tạo ra Key thích hợp cho máy bạn, nhiệm vụ của bạn là copy key này.
B11: Bạn trở lại chương trình Keil C và Pass Key vừa copy vào New License ID Code (LIC):
B12: Cuối cùng ấn vào nút AddLIC chương trình sẽ hiện lên *** LIC Added Sucessfully ***bạn
chọn close để đóng cửa sổ này lại.
Bài Viết Cùng Chủ Đề:
PHẦN 1: GIỚI THIỆU CHUNG
A. Giới thiệu chung:
1. Khái quát: (general description trang 15 usermanual)
LPC2214 là vi điều khiển 32bit hỗ trợ thời gian thực và trace nhúng
xây dựng trên cấu trúc của ARM7TDMI-S. LPC2214 có 256kB bộ nhớ Flash
tốc độ cao, vùng nhớ nội mở rộng tới 128 bit địa chỉ, cấu hình cho
phép thực thi các chỉ lệnh 32bit chỉ trong 1 chu kì xung nhịp. Để tiện
cho những ứng dụng nhỏ, LPC2214 hỗ trợ tập lệnh 16bit thu gọn (Thumb)
Với chế độ thu gọn này, kích thước tập lệnh chỉ còn 70% so với tập
lệnh 32bit làm cùng chức năng.
Đóng gói 144 chân, sử dụng năng lượng ít, timer 32bit, 8 kênh ADC, 9
nguồn ngắt ngoài, LPC2214 thích hợp cho những ứng dụng công nghiệp,
hóa học, nghiên cứu điều khiển, và cả thương mại.
Hỗ trợ cấu trúc JTAP, ISP, ICP cho phép mở rộng các ứng dụng nhúng.
2. Các tính năng cơ bản:( features trang 15 usermanual)
Vi điều khiển ARM7TDMI-S 32bit, có hỗ trợ tập lệnh 16bit, đóng gói
144chân (pin)
16kB SRAM trong chip.
256kB bộ nhớ Flash có thể lập trình (chu kì ghi/xóa ít nhất 10.000
lần)
Bus mở rộng 8/16/32 bit.
ISP/IAP, thời gian ghi/xóa 1 dòng <512bytes> mất 1ms, thời gian để
ghi/xóa cả flash<256kB> mất 0.4s.
Hỗ trợ chạy mô phỏng thời gian thực ngay trên ứng dụng nhúng
<EmbeddedICE-RT>
8 kênh ADC 10bit với thời gian chuyển đổi 2.44ms.
2 Timer 32bit <với 4 kênh capture và compare>, 6kênh PWM, đồng hồ
thời gian thực và Watchdog.
Giao diện nối tiếp gồm 2 kênh UART <16C550>, I2C tốc độ cao
<400kbits/s>, 2 kênh SPI.
Xung nhịp CPU tối đa 60MHz có sẵn nhờ vòng khóa pha trên chip có thể
lập trình được(PLL).
Vector ngắt có địa chỉ truy cập và các mức ưu tiên.
Đến 144 chân xuất/nhập đa dụng ở mức 5V. Có tới 12 ngắt ngoài độc
lập nhau<chức năng EIN và CAP>
Dao động trên chip với tần số từ 1MHz đến 30MHz.
2 chế độ tiết kiệm nguồn: Idle và Power Down
Đưa vi điều khiển vào lại chế độ hoạt động bình thường từ Power Down
nhờ ngắt ngoài.
Chức năng sử dụng tối ưu nguồn bằng cách cho phép/không cho phép
từng ngoại vi riêng lẻ.
2 chế độ nguồn:
o 1.65V-1.95V <1.8V+/-8.3%>
o 3.0V-3.6V <3.3V+/-10%>
3. Ứng dụng:
+Điều khiển trong công nghiệp.
+Hệ thống y tế.
+Cổng thông tin, truyền thông đa phương tiện.
+Mục đích học thuật, nghiên cứu ứng dụng.
+Đa dụng.
4. Sơ qua về cấu trúc LPC2214:
LPC2214 là nhân xử lý ARM7TDMI-S hỗ trợ giao tiếp bus AMBA<advanced
microcontroller bus architecture>Ngoại vi AHB cho phép kết nối tới 2GB
data. Mỗi vùng nhớ AHB có 16kB, AVB cũng có cấu tạo tương tự.
Sự kết nối các mảng địa chỉ của LPC2214 được khối chân kết nối<Pin
Connection block> điều khiển. Khối này có thể lập trình bằng phần mềm.
5. ARM7TDMI-S processor:
o Kiến trúc tập lệnh RISC 32 bit, chu kì dòng chảy lệnh có 3 tác vụ,
hỗ trợ định dạng Thumb.
o Hỗ trợ 2 tập lệnh cho 32bit và 16bit<Thumb>
6. Hệ thống bộ nhớ Flash trên chip:
Hỗ trợ 256kB flash trên chip, có thể lập trình ISP, IAP, hỗ trợ giao
tiếp JTAG, nâng cao tính linh hoạt cho các chương trình của người
dùng.
7. Hệ thống bộ nhớ SRAM trên chip:
Hỗ trợ 16kB SRAM, truy xuất theo byte, word, double word.
SRAM sử dụng điều khiển phối hợp bộ đệm phản hồi để ngăn CPU vào tình
trạng đứng máy khi truy cập dữ liệu ngược. Bộ đệm phản hồi luôn giữ
giá trị cuối của phần mềm vào SRAM. Dữ liệu này chỉ được ghi vào SRAM
khi phần mềm yêu cầu quá trình ghi nhận khác. Nếu quá trình Reset xảy
ra, thanh ghi SRAM sẽ không phản ánh đúng giá trị ghi vào SRAM ngay
trước khi Reset hệ thống. Muốn truy cập đúng dữ liệu, phần mềm cần đưa
ra đúng mã nhận dạng. Vì thế, trước khi vào chế độ Idle hay Power-
down, giá trị này được ghi vào bộ nhớ đệm<dummy> để sau khi Reset, sẽ
truy cập đúng giá trị mong muốn.
********************************************************


Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN
Gửi bởi: dunglt trong 20:48 ngày 14-03-08

có tiền bối nào đã từng tìm hiểu về ARM thì cho xin ít tài liệu coi! Hì ...


Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN
Gửi bởi: deeforum trong 11:05 ngày 15-03-08

hi , load cái datasheet về , cài Keil , lấy mấy cái ví dụ ra , nạp , rồi từ từ sửa code làm , là nhanh
nhất đó , con ARM này chạy rất ngon , AVR, PIC, 89 , thua xa , nhưng khi cấu hình mấy thanh
ghi hơi mệt , nạp 1 dãy 32 bit , dễ lộn


Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN
Gửi bởi: HBAOCR trong 14:07 ngày 19-03-08

S dng cc thanh ghi ut nhp đa dng: PIO:
hi: bắt đầu là cah1 sử dụng các thanh ghi xuất nhập đa dụng;

Đa số các chân mặc định là GPIO sau khi reset.Khi sử dụng chức năng này ta có thể xuất nhập
dữ liệu số , để điều khiển các ngoại vi như động cơ, led,hay button.
Các thanh ghi:
Slow GPIO register

STT Loại Mô tả
1 IODIR0 va IODIR1 Chọn hướng xuất nhập cho từng PIN của PORT0 và PORT1 ứng với
từng bit : nbit=1 output pin, nbit=0 input Pin

2 IOCLR0 và IOCLR1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này xuống mức thấp khi
đã thiết lập là Output pin
3 IOSET0 và IOSET1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này lên mức cao khi đã
thiết lập là Output pin
4 IOPIN0 và IOPIN1 Xuất /nhập nguyên 1 word ra PORT0 or PORT1

Tương tự đối với Fast GPIO:

STT Loại Mô tả
1 FIODIR0 vaF IODIR1 Chọn hướng xuất nhập cho từng PIN của PORT0 và PORT1 ứng với
từng bit : nbit=1 output pin, nbit=0 input Pin
2 FIOCLR0 và FIOCLR1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này xuống mức thấp
khi đã thiết lập là Output pin
3 FIOSET0 và FIOSET1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này lên mức cao khi đã
thiết lập là Output pin
4 FIOPIN0 và FIOPIN1 Xuất /nhập nguyên 1 word ra PORT0 or PORT1


Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN
Gửi bởi: HBAOCR trong 14:12 ngày 19-03-08

Ví dụ xuất nhập GPIO
Code:
/***********************************************************/
/* Examples Program For "ET-JR ARM7 LPC2214" Board */
/* Target MCU : Philips ARM7 LPC2214 */
/* : X-TAL : 19.6608 MHz */
/* : Run Speed 58.9824MHz (With PLL) */
/* Compiler : Keil ARM V2.32a */
/* Create By : WWW.ETT.CO.TH
*/
/* Last Update : 15/03/2006 */
/* Function : Example Use GPIO-2 on Output Mode */
/* : LED Moving on GPIO-2(P2.31 <------> P2.0) */
/***********************************************************/

#include <LPC22xx.H> // LPC2214 MPU
Register

/* pototype section */
void delay_led(unsigned long int); // Delay Time Function

int main(void)
{
unsigned long int LED; // LED Output Status Buffer

PINSEL0 = 0x00000000; // Makesure GPIO0[0..15] = GPIO Function
PINSEL1 = 0x00000000; // Makesure GPIO0[16..31] = GPIO Function
PINSEL2 = 0x00000030; // Makesure GPIO2-3[0..31] = GPIO Function

IODIR2 = 0xFFFFFFFF;
// Set all GPIO-2[0..31] = Output
IOSET2 = 0xFFFFFFFF; // Set all GPIO-
2 Output Pin(OFF LED)
IOCLR2 = 0x00000000;

// Loop Test Output GPI0-2 //
while(1) // Loop Continue
{
for(;;)
{
// GPIO2.31 <-- GPIO2.0
for (LED = 0x00000001; LED < 0x80000000; LED <<= 1) // Shift Left
GPIO-2 (Right <- Left)
{
IOCLR2 = LED; // Clear Output Pin (ON LED)
delay_led(5000000); // Display Delay
IOSET2 = LED; // Set Output
Pin (OFF LED)
}

// GPIO2.31 ---> GPIO2.0
for (LED = 0x80000000; LED > 0x00000001; LED >>= 1) // Shift Right
GPIO-2(Right -> Left)
{
IOCLR2 = LED; // Clear Output Pin (ON LED)
delay_led(5000000); // Display Delay
IOSET2 = LED; // Set Output
Pin (OFF LED)
}
}
}
}

/***********************/
/* Delay Time Function */
/* 1-4294967296 */
/***********************/
void delay_led(unsigned long int count1)
{
while(count1 > 0) {count1--;} // Loop Decrease Counter
}


Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN
Gửi bởi: HBAOCR trong 14:17 ngày 19-03-08

Các thanh ghi điều khiển ngắt:
[/color][/b]
STT Loại Mô tả
1 VICIRQStatus Đọc về trạng thái của những yêu cầu ngắt IRQ đã được cho phép hoạt động
2 VICFIQStatus Đọc về trạng thái của những yêu cầu ngắt FIQ đã được cho phép hoạt động
3 VICRawIntr Đọc về trạng thái của 32 yêu cầu ngắt bất chấp nó đã được cho phép hoạt động
hay chưa
4 VICIntSelect Chọn nguồn ngắt đã được cho phép là IRQ hay FIQ.Ghi 1 vào các bit tương
ứng với 32 nguồn ngắt sẽ thiết lập ngắt đó là FIQ.Ghi 0 là IRQ.Mặc định IRQ
5 VICEnable Các bit trong thanh ghi này tương ứng với từng nguồn ngắt trong 32 nguồn ngắt.
Muốn ngắt nào được cho phép hoạt động thì ghi 1 vào bit đó.Ghi 0 không có hiệu lực
6 VICEnClr Cho phep xóa bit 1 hay nhiều bit trong VICEnable để không cho phép ngắt đó
haot5 động
7 VICSoftInt Nếu bit tương ứng được ghi 1 thi ép ngắt đó xảy ra
8 VICSoftIntClear Cho phép phần mềm xóa các ngắt tương ứng ơ VICSoftInt
9 VICProtection Hạn ché lại phạm vi cho phep phần mểm có thể truy suất các thanh ghi VIC
10 VICVectAddr Chứa địa chỉ của chương trình phụ vụ ngắt IRQ để PC có thể nhay tới khi
ngắt xảy ra
11 VICDefVectAddr Giữ dịa chỉ của chương trình phục vụ ngắt(ISR) của non_vectorIRQ
11 VICVectAddr0 tới 15 Giữ địa chỉ của ISR của ngắt IRQ
12 VICVectCntl0 tới 15 Điều khiển tương ứng mỗi một VICVectAddr thứ i nào đó chưa ISR
phục vụ cho nguồn ngắt nào trong 16 nguồn ngắt IRQ


Cc bc thc hin chng trnh ngt:
Đối với ngắt FIQ:
Nó có độ ưu tiên cao nhất .Theo khuyến cáo thì trong chương trình chỉ nên có 1 nguồn ngắt FIQ
được yêu cầu. Trong chương trình Keil CARM thì chỉ khai báo 1 nguồn ngắt FIQ .Nhưng nếu
có hơn 1 ngắt FIQ thì ARM thực hiện phép ORED. Và để biết được nguồn ngắt nào bị tác động
thì trong FIQ ISR ta đọc VICFIQStatus.
vi dụ Keil C :
..
Void ham_ngat(void)__fiq;

main()
{
VICIntSelect=0x..//chọn nguồn ngắt là FIQ nếu bit tương ứng =1
//nếu không tác động thì default la IRQ va non IRQ
VICIntEnable=0x//bit tương ứng với nguồn ngắt =1 thi cho phép nó enable

}
Void ham_ngat(void)__fiq
{
Kiểm tra FIQVICStatus xem ngắt nào được thực thi, và thực thi nhiệm vụ của ngắt đó
}
Ðôi vói ngât IRQ :
Ngắt vecto có độ ưu tiên nhỏ hơn ngắt FIQ.Và nếu cùng loại ngắt IRQ thì nó cũng có độ ưu tiên
khác nhau tùy theo địa chỉ mà chương trình phục vụ ngắt đó chiếm trong dải các thanh ghi
VICVecAddrx(x=0..15) mà có độ ưu tiên thấp dần từ x= 0->15
Các bước thực hiện chương trình bằng KEIL C
..
Void ham_ngat1(void)__irq;
Void ham_ngat2(void)__irq; //nếu chuong trình sử dụng nhiều ngắt Irq

main()
{

VICIntSelect=0x..//chọn nguồn ngắt là FIQ nếu bit tương ứng =1
//nếu không tác động thì default la IRQ va non IRQ
//để chon là IRQ thì nó phải bằng 0
VICVectCtrlx=0x. ;
//kiểm soát slot thứ x ưng với VICVectAddrx , 4 bit đầu của thanh ghi này tương ứng với số thứ
tự nguồn ngắt(VIC chanel#).Nó dùng để chọn nguồn ngắt nào được phục vụ bởi chương trình
ISR có địa chỉ chứa trong VICVectAddrx. Bit thứ 5 Enable Slot thứ x nếu =1
VICVectAddrx= (unsigned)ham_ngatx;
VICIntEnable=0x//bit tương ứng với nguồn ngắt =1 thi cho phép nó enable

}
Void ham_ngat1(void)_irq
Void ham_ngat2(void)_irq


Đối với ngắt non IRQ :
Ngắt này có độ ưu tiên thấp nhất.Trong chương trình chỉ khai báo 1 trình phục vụ ngắt cho non
IRQ(giống ngắt FIQ). Rồi sau đó trong ISR tiến hành kiểm tra xem nguồn ngắt nào được thực
hiện bằng VICIRQstatus.
Các bước thực hiện chương trình Keil C
Void ham_ngat(void)_irq; //chi có 1 ngắt non IRQ
Main()
{

VICIntSelect =0x..//(bit tuong ung phai la 0 để là non IRQ)
VICDefVectAddr=(unsigned) ham_ngat;
VICIntEanble=0x.. ;//cho phep ngat tuong ung
}
Void ham_ngat(void)_irq
{Kiểm tra nguồn ngắt nào được thực hiện bằng VICIRQstatus.
Chương trình phục vụ ngắt tương ứng
}
Chú ý:
Các việc cần làm trước khi rời khỏi ISR
Xóa cờ ngắt tương ứng với nguồn ngắt được thự thi;
VICVectAddr=0;

.Cáp nối RS232 Keil C là chương trình hỗ trợ khá đầy đủ cho lập trình cho vi điều khiển họ 8051 ngoài việc biên dịch bằng ngôn ngữ C bạn cũng có thể biên dịch dưới dạng ASM. Phần mềm: Keil C. sau đó chọn Next khi đó màn hình sẽ xuất hiện B4: Bạn có thề để mặc định và tiếp tục chọn Next. .. Đây cũng là một cách để tìm hiểu thêm về ngôn ngữ ASM rất tốt cho bạn. Saukhi cài đặt xong bạn tiến hành cài key cho phần mềm: B7: Bạn mở chương trình Keil C vừa được cài đặt lên vào file => chọn License Managament màn hình sẽ xuất hiện như sau: B8: Sau khi cửa sổ sau xuất hiện.exe tích vào Extenal CID code và Pass CID bạn vừa copy được ở trên vào đó và chọn Generete B10: Chương trình sẽ tạo ra Key thích hợp cho máy bạn.exe B2: Chọn Next màn hình sẽ xuất hiện như sau: B3: Click chọn “i agree to all the terms of the preceding License Agreement”.2_2. bạn Copy Computer ID (CID) của máy mình B9:bạn có thể chạy File Keil_lic-v3.rar Để tiến hành cài đặt bạn tiến hành làm như sau: B1: Bạn Click vào flie c51v815. Tuy nhiên bạn cũng có thề thay đổi nội dung thông tin cá nhân ở dưới : B5: Chọn Next để bắt đầu cài đặt B6: au khi quá trình cài đặt xong bạn chọn Finish để hoàn tất cài đặt. nhiệm vụ của bạn là copy key này.

và cả thương mại. thời gian để ghi/xóa cả flash<256kB> mất 0. có hỗ trợ tập lệnh 16bit. thời gian ghi/xóa 1 dòng <512bytes> mất 1ms. 256kB bộ nhớ Flash có thể lập trình (chu kì ghi/xóa ít nhất 10. ICP cho phép mở rộng các ứng dụng nhúng. Có tới 12 ngắt ngoài độc lập nhau<chức năng EIN và CAP> Dao động trên chip với tần số từ 1MHz đến 30MHz. vùng nhớ nội mở rộng tới 128 bit địa chỉ. Xung nhịp CPU tối đa 60MHz có sẵn nhờ vòng khóa pha trên chip có thể lập trình được(PLL). 2 chế độ tiết kiệm nguồn: Idle và Power Down .44ms. kích thước tập lệnh chỉ còn 70% so với tập lệnh 32bit làm cùng chức năng. nghiên cứu điều khiển. đóng gói 144chân (pin) 16kB SRAM trong chip. ISP/IAP. timer 32bit. LPC2214 hỗ trợ tập lệnh 16bit thu gọn (Thumb) Với chế độ thu gọn này. 9 nguồn ngắt ngoài. đồng hồ thời gian thực và Watchdog. 2 kênh SPI. cấu hình cho phép thực thi các chỉ lệnh 32bit chỉ trong 1 chu kì xung nhịp. 6kênh PWM. LPC2214 có 256kB bộ nhớ Flash tốc độ cao. ISP. Giao diện nối tiếp gồm 2 kênh UART <16C550>. Khái quát: (general description trang 15 usermanual) LPC2214 là vi điều khiển 32bit hỗ trợ thời gian thực và trace nhúng xây dựng trên cấu trúc của ARM7TDMI-S. Giới thiệu chung: 1.B11: Bạn trở lại chương trình Keil C và Pass Key vừa copy vào New License ID Code (LIC): B12: Cuối cùng ấn vào nút AddLIC chương trình sẽ hiện lên *** LIC Added Sucessfully ***bạn chọn close để đóng cửa sổ này lại. I2C tốc độ cao <400kbits/s>. Hỗ trợ cấu trúc JTAP. hóa học.4s. sử dụng năng lượng ít. Để tiện cho những ứng dụng nhỏ. Đến 144 chân xuất/nhập đa dụng ở mức 5V. Đóng gói 144 chân. Bài Viết Cùng Chủ Đề: PHẦN 1: GIỚI THIỆU CHUNG A. Các tính năng cơ bản:( features trang 15 usermanual) Vi điều khiển ARM7TDMI-S 32bit. Hỗ trợ chạy mô phỏng thời gian thực ngay trên ứng dụng nhúng <EmbeddedICE-RT> 8 kênh ADC 10bit với thời gian chuyển đổi 2. LPC2214 thích hợp cho những ứng dụng công nghiệp.000 lần) Bus mở rộng 8/16/32 bit. 2. 2 Timer 32bit <với 4 kênh capture và compare>. Vector ngắt có địa chỉ truy cập và các mức ưu tiên. 8 kênh ADC.

+Hệ thống y tế. Ứng dụng: +Điều khiển trong công nghiệp. AVB cũng có cấu tạo tương tự.0V-3. word.. nghiên cứu ứng dụng. Khối này có thể lập trình bằng phần mềm. IAP. sẽ truy cập đúng giá trị mong muốn. Hệ thống bộ nhớ SRAM trên chip: Hỗ trợ 16kB SRAM.95V <1. giá trị này được ghi vào bộ nhớ đệm<dummy> để sau khi Reset. có thể lập trình ISP. 4.3V+/-10%> 3.Đưa vi điều khiển vào lại chế độ hoạt động bình thường từ Power Down nhờ ngắt ngoài. 7. . Mỗi vùng nhớ AHB có 16kB. +Cổng thông tin. Chức năng sử dụng tối ưu nguồn bằng cách cho phép/không cho phép từng ngoại vi riêng lẻ. trước khi vào chế độ Idle hay Powerdown. ARM7TDMI-S processor: o Kiến trúc tập lệnh RISC 32 bit. ******************************************************** Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN Gửi bởi: dunglt trong 20:48 ngày 14-03-08 có tiền bối nào đã từng tìm hiểu về ARM thì cho xin ít tài liệu coi! Hì . Sơ qua về cấu trúc LPC2214: LPC2214 là nhân xử lý ARM7TDMI-S hỗ trợ giao tiếp bus AMBA<advanced microcontroller bus architecture>Ngoại vi AHB cho phép kết nối tới 2GB data. 5. Bộ đệm phản hồi luôn giữ giá trị cuối của phần mềm vào SRAM. thanh ghi SRAM sẽ không phản ánh đúng giá trị ghi vào SRAM ngay trước khi Reset hệ thống. Hệ thống bộ nhớ Flash trên chip: Hỗ trợ 256kB flash trên chip. Dữ liệu này chỉ được ghi vào SRAM khi phần mềm yêu cầu quá trình ghi nhận khác. +Đa dụng. Sự kết nối các mảng địa chỉ của LPC2214 được khối chân kết nối<Pin Connection block> điều khiển.. nâng cao tính linh hoạt cho các chương trình của người dùng. o Hỗ trợ 2 tập lệnh cho 32bit và 16bit<Thumb> 6.6V <3. Vì thế. double word. chu kì dòng chảy lệnh có 3 tác vụ. SRAM sử dụng điều khiển phối hợp bộ đệm phản hồi để ngăn CPU vào tình trạng đứng máy khi truy cập dữ liệu ngược.65V-1. Muốn truy cập đúng dữ liệu. hỗ trợ định dạng Thumb. Nếu quá trình Reset xảy ra. phần mềm cần đưa ra đúng mã nhận dạng. hỗ trợ giao tiếp JTAG.3%> o 3.8V+/-8. +Mục đích học thuật. 2 chế độ nguồn: o 1. truy xuất theo byte. truyền thông đa phương tiện.

nạp . Các thanh ghi: Slow GPIO register STT Loại Mô tả 1 IODIR0 va IODIR1 Chọn hướng xuất nhập cho từng PIN của PORT0 và PORT1 ứng với từng bit : nbit=1 output pin.Khi sử dụng chức năng này ta có thể xuất nhập dữ liệu số . led. thua xa . 89 . nbit=0 input Pin 2 IOCLR0 và IOCLR1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này xuống mức thấp khi đã thiết lập là Output pin 3 IOSET0 và IOSET1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này lên mức cao khi đã thiết lập là Output pin 4 IOPIN0 và IOPIN1 Xuất /nhập nguyên 1 word ra PORT0 or PORT1 Tương tự đối với Fast GPIO: STT Loại Mô tả 1 FIODIR0 vaF IODIR1 Chọn hướng xuất nhập cho từng PIN của PORT0 và PORT1 ứng với từng bit : nbit=1 output pin. AVR. nạp 1 dãy 32 bit . PIC. dễ lộn Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN Gửi bởi: HBAOCR trong 14:07 ngày 19-03-08 S d ng c c thanh ghi u t nh p đa d ng: PIO : hi: bắt đầu là cah1 sử dụng các thanh ghi xuất nhập đa dụng. nhưng khi cấu hình mấy thanh ghi hơi mệt . cài Keil . load cái datasheet về . lấy mấy cái ví dụ ra . để điều khiển các ngoại vi như động cơ.Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN Gửi bởi: deeforum trong 11:05 ngày 15-03-08 hi . con ARM này chạy rất ngon . là nhanh nhất đó . Đa số các chân mặc định là GPIO sau khi reset. nbit=0 input Pin 2 FIOCLR0 và FIOCLR1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này xuống mức thấp khi đã thiết lập là Output pin 3 FIOSET0 và FIOSET1 Đưa Pin tuong ưng với bit =1 trong thanh ghi này lên mức cao khi đã thiết lập là Output pin 4 FIOPIN0 và FIOPIN1 Xuất /nhập nguyên 1 word ra PORT0 or PORT1 Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN Gửi bởi: HBAOCR trong 14:12 ngày 19-03-08 Ví dụ xuất nhập GPIO .hay button . rồi từ từ sửa code làm .

.31 <------> P2. IODIR2 = 0xFFFFFFFF.H> Register /* pototype section */ void delay_led(unsigned long int).) { // GPIO2. delay_led(5000000). delay_led(5000000). IOSET2 = LED.31 <-. PINSEL0 = 0x00000000.ETT. // Set all GPIO-2[0. PINSEL2 = 0x00000030. IOSET2 = LED. 2 Output Pin(OFF LED) IOCLR2 = 0x00000000.6608 MHz /* : Run Speed 58. int main(void) { unsigned long int LED.9824MHz (With PLL) */ /* Compiler : Keil ARM V2. // Loop Test Output GPI0-2 // while(1) { for(.Code: /***********************************************************/ /* Examples Program For "ET-JR ARM7 LPC2214" Board /* Target MCU : Philips ARM7 LPC2214 */ /* : X-TAL : 19. LED < 0x80000000. LED >>= 1) // Shift Right GPIO-2(Right -> Left) { IOCLR2 = LED.31 ---> GPIO2. Pin (OFF LED) } */ */ */ */ */ // LPC2214 MPU // Dela // Set all GPIO- // Shift Left // Set Output // GPIO2. LED > 0x00000001.0 for (LED = 0x80000000.0 for (LED = 0x00000001.CO.31] = Output IOSET2 = 0xFFFFFFFF. LED <<= 1) GPIO-2 (Right <. PINSEL1 = 0x00000000.Left) { IOCLR2 = LED.0) */ /***********************************************************/ #include <LPC22xx.32a /* Create By : WWW. // Set Output .GPIO2..TH */ /* Last Update : 15/03/2006 /* Function : Example Use GPIO-2 on Output Mode /* : LED Moving on GPIO-2(P2.

Theo khuyến cáo thì trong chương trình chỉ nên có 1 nguồn ngắt FIQ được yêu cầu.Ghi 0 không có hiệu lực 6 VICEnClr Cho phep xóa bit 1 hay nhiều bit trong VICEnable để không cho phép ngắt đó haot5 động 7 VICSoftInt Nếu bit tương ứng được ghi 1 thi ép ngắt đó xảy ra 8 VICSoftIntClear Cho phép phần mềm xóa các ngắt tương ứng ơ VICSoftInt 9 VICProtection Hạn ché lại phạm vi cho phep phần mểm có thể truy suất các thanh ghi VIC 10 VICVectAddr Chứa địa chỉ của chương trình phụ vụ ngắt IRQ để PC có thể nhay tới khi ngắt xảy ra 11 VICDefVectAddr Giữ dịa chỉ của chương trình phục vụ ngắt(ISR) của non_vectorIRQ 11 VICVectAddr0 tới 15 Giữ địa chỉ của ISR của ngắt IRQ 12 VICVectCntl0 tới 15 Điều khiển tương ứng mỗi một VICVectAddr thứ i nào đó chưa ISR phục vụ cho nguồn ngắt nào trong 16 nguồn ngắt IRQ C c b c th c hi n ch ng tr nh ng t: Đối với ngắt FIQ: Nó có độ ưu tiên cao nhất . Trong chương trình Keil CARM thì chỉ khai báo 1 nguồn ngắt FIQ .} } Tiêu đề: Re: Trích đăng bài viết về ARM của Huỳnh Bảo trên trang DD04KSTN Gửi bởi: HBAOCR trong 14:17 ngày 19-03-08 Các thanh ghi điều khiển ngắt: [/color][/b] STT Loại Mô tả 1 VICIRQStatus Đọc về trạng thái của những yêu cầu ngắt IRQ đã được cho phép hoạt động 2 VICFIQStatus Đọc về trạng thái của những yêu cầu ngắt FIQ đã được cho phép hoạt động 3 VICRawIntr Đọc về trạng thái của 32 yêu cầu ngắt bất chấp nó đã được cho phép hoạt động hay chưa 4 VICIntSelect Chọn nguồn ngắt đã được cho phép là IRQ hay FIQ. Muốn ngắt nào được cho phép hoạt động thì ghi 1 vào bit đó. Và để biết được nguồn ngắt nào bị tác động thì trong FIQ ISR ta đọc VICFIQStatus.Ghi 1 vào các bit tương ứng với 32 nguồn ngắt sẽ thiết lập ngắt đó là FIQ.Mặc định IRQ 5 VICEnable Các bit trong thanh ghi này tương ứng với từng nguồn ngắt trong 32 nguồn ngắt.Ghi 0 là IRQ.Pin (OFF LED) } } } } /***********************/ /* Delay Time Function */ /* 1-4294967296 */ /***********************/ void delay_led(unsigned long int count1) { while(count1 > 0) {count1--. .Nhưng nếu có hơn 1 ngắt FIQ thì ARM thực hiện phép ORED.

Void ham_ngat(void)__fiq. 4 bit đầu của thanh ghi này tương ứng với số thứ tự nguồn ngắt(VIC chanel#). .15) mà có độ ưu tiên thấp dần từ x= 0->15 Các bước thực hiện chương trình bằng KEIL C . và thực thi nhiệm vụ của ngắt đó } Ngắt vecto có độ ưu tiên nhỏ hơn ngắt FIQ.//chọn nguồn ngắt là FIQ nếu bit tương ứng =1 //nếu không tác động thì default la IRQ va non IRQ //để chon là IRQ thì nó phải bằng 0 VICVectCtrlx=0x . Void ham_ngat1(void)__irq.. //nếu chuong trình sử dụng nhiều ngắt Irq main() { VICIntSelect=0x . Bit thứ 5 Enable Slot thứ x nếu =1 VICVectAddrx= (unsigned)ham_ngatx..vi dụ Keil C : ..Trong chương trình chỉ khai báo 1 trình phục vụ ngắt cho non IRQ(giống ngắt FIQ)..Và nếu cùng loại ngắt IRQ thì nó cũng có độ ưu tiên khác nhau tùy theo địa chỉ mà chương trình phục vụ ngắt đó chiếm trong dải các thanh ghi VICVecAddrx(x=0.//chọn nguồn ngắt là FIQ nếu bit tương ứng =1 //nếu không tác động thì default la IRQ va non IRQ VICIntEnable=0x //bit tương ứng với nguồn ngắt =1 thi cho phép nó enable } Void ham_ngat(void)__fiq { Kiểm tra FIQVICStatus xem ngắt nào được thực thi. VICIntEnable=0x //bit tương ứng với nguồn ngắt =1 thi cho phép nó enable } Void ham_ngat1(void)_irq Void ham_ngat2(void)_irq Đối với ngắt non IRQ : Ngắt này có độ ưu tiên thấp nhất. Rồi sau đó trong ISR tiến hành kiểm tra xem nguồn ngắt nào được thực hiện bằng VICIRQstatus.Nó dùng để chọn nguồn ngắt nào được phục vụ bởi chương trình ISR có địa chỉ chứa trong VICVectAddrx.. Void ham_ngat2(void)__irq. //kiểm soát slot thứ x ưng với VICVectAddrx . . main() { VICIntSelect=0x .

Các bước thực hiện chương trình Keil C Void ham_ngat(void)_irq.//cho phep ngat tuong ung } Void ham_ngat(void)_irq {Kiểm tra nguồn ngắt nào được thực hiện bằng VICIRQstatus. VICVectAddr=0. Chương trình phục vụ ngắt tương ứng } Chú ý: Các việc cần làm trước khi rời khỏi ISR Xóa cờ ngắt tương ứng với nguồn ngắt được thự thi. . .//(bit tuong ung phai la 0 để là non IRQ) VICDefVectAddr=(unsigned) ham_ngat. VICIntEanble=0x. //chi có 1 ngắt non IRQ Main() { VICIntSelect =0x...

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->