1 / 26

VI ĐiỀU KHIỂN ARM

VI ĐiỀU KHIỂN ARM. NỘI DUNG: Giới thiệu chung về họ vi điều khiển ARM Cấu trúc bên trong Mô phỏng trên phần mềm Thí dụ trên board SAM7S256-Amtel. ĐẶC ĐiỂM HỌ VI ĐiỀU KHIỂN ARM. Là vi điều khiển tiên tiến xử lý 32 bít Được sử dụng rộng rãi trên các điện thoại di động

honey
Download Presentation

VI ĐiỀU KHIỂN ARM

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. VI ĐiỀU KHIỂN ARM NỘI DUNG: • Giới thiệu chung về họ vi điều khiển ARM • Cấu trúc bên trong • Mô phỏng trên phần mềm • Thí dụ trên board SAM7S256-Amtel

  2. ĐẶC ĐiỂM HỌ VI ĐiỀU KHIỂN ARM • Là vi điều khiển tiên tiến xử lý 32 bít • Được sử dụng rộng rãi trên các điện thoại di động • Tần số hoạt động lên đến 60MHz • Khả năng tính toán cao, tiêu thụ nguồn năng lượng thấp • Có phần cứng riêng biệt để hỗ trợ cơ chế xử lý pipeline

  3. ĐẶC ĐiỂM HỌ VI ĐiỀU KHIỂN ARM • Cơ chế pipeline: • Tập lệnh kiểu RISC

  4. CẤU TRÚC BÊN TRONG • Gồm 15 thanh ghi 32 bít:

  5. CẤU TRÚC BÊN TRONG • Hỗ trợ xử lý 2 kiểu tập lệnh • Tập lệnh ARM 32 bít • Tập lệnh Thumb 16 bít

  6. CẤU TRÚC BÊN TRONG • Ưu điểm của tập lệnh thunb • Tập lệnh THUMB cho giá trị kết quả thấp hơn tập lệnh ARM nhưng mà các kết quả này chiếm một tỷ lệ lớn hơn. • Tập lệnh THUMB tiết kiệm được không gian nhớ 30% và chạy nhanh hơn 40% so với tập lệnh ARM. • Tập lệnh THUMB không có điều kiện thực thi trừ các lệnh rẽ nhánh.

  7. CẤU TRÚC BÊN TRONG • Khi sử dụng tập lệnh thumb các thanh ghi cao từ R8-R12 bị giới hạn truy cập:

  8. CẤU TRÚC BÊN TRONG • Cách viết chương trình C với tập lệnh ARM và tập lệnh THUMB: #pragma ARM // khai báo các lệnh ARM int main(void) { while(1){ THUMB_function(); //gọi đến hàm THUMB }} #pragma THUMB void THUMB_function(void) { unsigned long i,delay; for (i = 0x00010000;i < 0x01000000 ;i = i<<1){ for (delay = 0;delay<0x000100000;delay++){} //tạo vòng lặp IOSET1 = i; //chuyển đến led tiếp theo }}

  9. CẤU TRÚC BÊN TRONG • Cách viết chương trình C với tập lệnh ARM và tập lệnh THUMB: Hoặc: int ARM_FUNCTION ( int my_var) __ARM {…} int THUMB_FUNCTION ( int my_var) __THUMB {…}

  10. LẬP TRÌNH THANH GHI • Một thanh ghi chức năng được điều khiển bởi 3 thanh ghi người dùng:

  11. MEMORY ACELARATER MODULE (MAM) • Là bộ nhớ nằm giữa bộ nhớ Flash và CPU ARM, có tốc độ thực thi cao:

  12. MEMORY ACELARATER MODULE (MAM) • MAM được tạo ra như là một cache đầy đủ cho phép CPU dễ dàng truy cập trực tiếp vào FLASH:

  13. MEMORY ACELARATER MODULE (MAM) • #include "LPC21xx.h" • void ChangeGPIOPinState(unsigned int state); • int main(void){ • unsigned int delay,val; • unsigned int FLASHer = 0x00010000; // Khai báo cục bộ • IODIR0 = 0x00FF0000; // Thiết lập các chân ra • VPBDIV = 0x02; • MAMTIM = 0x03; • MAMCR = 0x02; • for(delay = 0;delay<0x100000;delay++) //tạo vòng lặp • {;} • ChangeGPIOPinState(FLASHer); //Đổi trạng thái các chân ra ở cổng • FLASHer = FLASHer <<1; //Dịch đến đèn led tiếp • if(FLASHer&0x01000000) { • FLASHer = 0x00010000; //Lặp lại đèn đầu tiên • }}} • void ChangeGPIOPinState(unsigned int state) • { • IOSET0 = state; //set output pins • IOCLR0 = ~state; //clear output pins • }

  14. PLL- Phase Locked Loop • Tạo ra một tần số dao động ngoài từ 10-25MHz từ mạch dao động cơ bản và có thể tăng lên 60 MHz để cung cấp cho CPU ARM và thiết bị ngoại vi. • Tần số đầu ra của PLL có thể thay đổi tự động, cho phép thiết bị điều chỉnh theo tốc độ thực thi để duy trì nguồn năng lượng khi ở trạng thái rảnh rỗi.

  15. PLL- Phase Locked Loop

  16. PLL- Phase Locked Loop • Tần số ra của PLL là: Cclk=M x Osc • Ngược lại PLL lại được điều khiển bởi một dao động hoạt động hiện hành (CCO) ở dải tần 156MHz-320MHz. • Hằng số thứ 2 P phải được lập trình để đảm bảo sao cho CCO được giữ một giá trị cụ thể: Fcco = Cclk x 2 x P • Thực nghiệm thì P=2.

  17. PLL- Phase Locked Loop • Khi cập nhật giá trị thanh ghi PLLCON và PLLCFG thì phải ghi liên tiếp hai giá trị 0x000000AA và 0x00000055 cho thanh ghi PLLFEED trong các chu kỳ liên tiếp. • Để cài đặt PLL phải ghi các giá trị cho P và M tới thanh ghi PLLCFG, sau đó set D0 của thanh ghi PLLCON để cho phép PLL khởi động

  18. PLL- Phase Locked Loop • Thanh ghi PLLCFG:

  19. PLL- Phase Locked Loop • Thuật toán khởi động PLL

  20. Bộchiatần(VLSI Peripheral Bus Divider) • Thanhghi VPBDIV đượclậptrìnhchứasốlầngiảmtốcđộ

  21. THÍ DỤ PLL void init_PLL(void) { PLLCFG = 0x00000024; // Thiết lập hệ số nhân và bộ chia cho PLL // give 60.00 MHz PLLCON = 0x00000001; // Kích hoạt PLL PLLFEED = 0x000000AA; // Cập nhật thanh ghi PLLFEED PLLFEED = 0x00000055; while (!(PLLSTAT & 0x00000400)); // kiểm tra bít Lock PLLCON = 0x00000003; // Kết nối tới PLL PLLFEED = 0x000000AA; //Cập nhật các thanh ghi PLL PLLFEED = 0x00000055; VPBDIV = 0x00000002; //Thiết lập bus VLSI với tần số 30.000MHz }

  22. KHỐ ĐA CHỨC NĂNG

  23. THÍ DỤ CẤU HÌNH PINSEL CHO NGẮT

  24. MÔ PHỎNG TRÊN PHẦN MỀM • Keil ARM • Proteus

  25. KIT AT91SAM7S256

  26. KIT AT91SAM7S256

More Related