TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300, TỔNG QUAN VI XỬ LÝ LPC2300 HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH
Giảng viên hướng dẫn
Nguyễn Quốc Tuấn
Sinh viên thực hiện Nguyễn Thanh Bi – 51100264
Đỗ Minh Chiến - 51100372
Trang 2I
Phục Lục Hình IV
Phụ Lục Bảng VI
LỜI CẢM ƠN 1
CHƯƠNG MỞ ĐẦU 2
I TỔNG QUAN VỀ VI XỬ LÝ LPC2300 3
I.1 Mô tả chung về LPC2300 3
I.2 Đặc điểm chính 4
I.3 Sơ đồ khối 5
I.4 Địa Chỉ Bộ Nhớ Trong LPC2300 10
I.4.1 Tổ chức bộ nhớ và địa chỉ của các thiết bị ngoại vi 10
I.4.2 Phân vùng bộ nhớ 11
I.4.3 Phân vùng bộ nhớ thiết bị ngoại vi 16
I.4.4 Địa chỉ thiết bị APB 18
I.4.5 Phân vùng lại bộ nhớ trong LPC2300 và boot ROM 19
I.5 Khối Điều Khiển Hệ Thống 23
I.5.1 Giới thiệu 23
I.5.2 Chân kết nối ngoài của khối điều khiển hệ thống 23
I.5.3 Các thanh ghi liên quan 24
I.5.4 Reset 24
I.5.5 External interrupt 27
I.6 Mô Đun Tăng Tốc Bộ Nhớ (Memory Acceleration Module - MAM) 29
I.7 Khối Điều Khiển Vectơ Interrupt (Vectored Interrupt Controller - VIC) 29
I.7.2 Giới thiệu 29
I.7.2 Các loại thanh ghi VIC 30
I.7.3 Kiến trúc Interrupt 31
I.7.4 Nguồn Interrupt 32
Trang 3I.9 Tổng Quan Chức Năng Cổng Input/Ouput Vi Xử Lý LPC2300(GPIO) 35
I.9.1 Đặc điểm chung 35
I.9.2 Địa chỉ thanh ghi 35
I.9.3 Một số code mẫu sử dụng GPIO 37
I.10 Ethernet 38
I.10.1 Đặc điểm chung 39
I.10.2 Kiến trức 40
I.10.3 DMA 40
I.10.3 Gói trong Etherrnet 41
I.10.4 Mô tả chức năng các chân 41
I.10.5 Địa chỉ thanh ghi 42
I.11 CAN 44
I.11.1 Định nghĩa 44
I.11.2 Kiến trúc 44
I.11.3 Địa chỉ bộ nhớ 46
I.11.4 Thanh ghi điều khiển CAN 46
I.12 USB 48
I.12.1 Định nghĩa 48
I.12.2 Kiến trúc 48
I.12.3 Địa chỉ thanh ghi 49
I.13 UART 50
I.13.1 Giới thiệu 50
I.13.2 Kiến trúc 50
I.13.3 Địa chỉ thanh ghi 53
I.14 SPI 59
I.14.1 Định nghĩa 59
I.14.2 Truyền dữ liệu trong SPI 59
I.14.3 Địa chỉ thanh ghi 60
I.14.4 Kiến trúc 65
I.15 I2C 66
I.15.1 Giới thiệu 66
I.15.2 Nguyên lý hoạt động của I2C 66
Trang 4I.15.4 Kết nối vật lý 70
I.15.5 Sơ đồ khối của I2C 71
I.15.6 Địa chỉ thanh ghi 73
I.16 TIMER 77
I.16.1 Giới thiệu 77
I.16.2 Hoạt động của TIMER 77
I.16.3 Địa chỉ thanh ghi 77
I.16.4 Ví dụ hoat động của Timer 78
I.16.5 Kiến trúc 79
II CÁCH SỬ DỤNG BOARD MCB2300 81
II.16.1 Giới thiệu board thực tập MCB 2300 81
II.16.2 Kit thí nghiệm MCB2300 81
II.16.3 Đặc điểm chính của MCB2300.board 82
II.16.4 Chuẩn bị về phần cứng 82
II.16.5 Chuẩn bị về phần mềm 83
II.16.6 Cài đặt board thí nghiệm MCB2300 83
II.16.7 Thiết lập jumper trên board MCB2300 87
PHỤ LỤC 88
ĐIỀU KHIỂN LED 88
ĐIỀU KHIỂN LCD 89
Trang 5Phục Lục Hình
Hình 1 Sơ đồ khối LPC2361/62 5
Hình 2 Sơ đồ khối LPC2364/65/66/67/68 6
Hình 3 Sơ đồ khối LPC2377/78 7
Hình 4 Sơ đồ khối LPC2387 8
Hình 5 Sơ đồ khối LPC2388 9
Hình 6 Phân vùng bộ nhớ LPC2461/63 11
Hình 7 Phân vùng bộ nhớ LPC2364/65/66/67/68 12
Hình 8 Phân vùng bộ nhớ LPC2377/78 13
Hình 9 Phân vùng bộ nhớ LPC2387 14
Hình 10 Phân vùng bộ nhớ LPC2388 15
Hình 11 Phân vùng bộ nhớ Thiết bị ngoại vi 16
Hình 12 Phân vùng bộ nhớ thiết bị AHB 17
Hình 13 Bộ nhớ ở mức độ thấp cho thấy quá trình tái phân vùng bộ nhớ 22
Hình 14 Thiết lập lại sơ đồ khối bao gồm bộ đếm thời gian wakeup 25
Hình 15 Ví dụ khởi động lại sau reset 26
Hình 16 Sơ đồ khối đơn giản của MAM 29
Hình 17 Sơ đồ khối của VIC 31
Hình 18 Sơ đồ khối Etherrnet 40
Hình 19 Ethernet packet fields 41
Hình 20 Khối điều khiển CAN 44
Hình 21 Giao diện bố trí của TXB từ cơ bản đến mở rộng 45
Hình 22 Giao diện bố trí của RXB từ cơ bản đến mở rộng 45
Hình 23 Sơ đồ khối thiết bị điều khiển USB 48
Hình 24 Sơ đồ khối LPC2300 UART0, 2 và 3 51
Hình 25 Sơ đồ khối LPC2300 UART1 52
Hình 26 Autobaud ở mode 0 55
Hình 27 Autobaud ở mode 1 56
Hình 28 Sơ đồ flow chart 57
Hình 29 Truyền dữ liệu trong SPI (CPHA = 0 và CPHA = 1) 59
Hình 30 Sơ đồ khối SPI 65
Hình 31 Định dạng ở chế độ Master truyền 67
Hình 32 Định dạng ở chế độ Master nhận 68
Hình 33 Chế độ Master nhận chuyển thành Master truyền sau khi gửi START lặp lại 68
Hình 34 Định dạng ở chế độ Slave nhận 69
Hình 35 Định dạng ở chế độ Slave truyền 69
Hình 36 Cấu hình bus I2C 70
Hình 37 Sơ đồ khối I2C 71
Hình 38 Xung clock đồng bộ 72
Trang 6Hình 41 Chu kì của một timer với PR=2, MRx=6 và interrupt, stop đã được kích hoạt 79
Hình 42 Sơ đồ khối của Timer 80
Hình 43 Board MCB 2370 82
Hình 44 Board MCB2300 với cổng USB 83
Hình 45 Board MCB2300 với chú thích trên hình 84
Hình 46 Board MCB2300 với kết nối ULink 84
Hình 47 Setup ARM 85
Trang 7Phụ Lục Bảng
Bảng 1 Đặc điểm tổng quát LPC2300 4
Bảng 2 Bảng Phân bố địa chỉ của vùng bộ nhớ trong ARM 10
Bảng 3 Phân vùng địa chỉ cơ bản của thiết bị APB 18
Bảng 4 Địa chỉ ô nhớ ngoại lệ của ARM 19
Bảng 5 Những chế độ hoạt động của bộ nhớ trong LPC2300 19
Bảng 6 Thanh ghi điều khiển phân vùng bộ nhớ 21
Bảng 7 Thanh ghi điều khiển phân vùng bộ nhớ - mô tả bit địa chỉ 0xE01F C040 21
Bảng 8 Bộ nhớ ở mức độ thấp cho thấy quá trình tái phân vùng bộ nhớ 23
Bảng 9 Tóm tắt các thanh ghi điều khiển hệ thống 24
Bảng 10 Sự tương tác giữa 4 nguồn Reset 27
Bảng 11 Các thanh ghi của External interrupt 27
Bảng 12 Thanh ghi Flag của External interrupt (EXTINT) 28
Bảng 13 Thanh ghi Mode của External interrupt (EXTMODE) 28
Bảng 14 Thanh ghi Polar của External interrupt (EXTPOLAR) 28
Bảng 15 Các loại thanh ghi VIC 30
Bảng 16 Sự kết nối của nguồn Interrupt đến VIC 32
Bảng 17 Chức năng của các chân 34
Bảng 18 Địa chỉ của các thanh ghi chức năng 34
Bảng 19 Địa chỉ thanh ghi GPIO (legacy APB accessible registers) 35
Bảng 20 Địa chỉ thanh ghi GPIO (local bus accessible registers - enhanced GPIO features) 36
Bảng 21 Địa chỉ thanh ghi interrupt GPIO 37
Bảng 22 Bảng viết tắt, định nghĩa trong phần này 38
Bảng 23 Ethernet RMII pin descriptions 41
Bảng 24 Ethernet MIIM pin descriptions 41
Bảng 25 Địa chỉ thanh ghi Etherrnet 42
Bảng 26 Địa chỉ bộ nhớ của khối CAN 46
Bảng 27 Địa chỉ thanh ghi điều khiển CAN 46
Bảng 28 Địa chỉ thanh ghi thiết bị USB 49
Bảng 29 Mối quan hệ giữa dữ liệu SPI và giai đoạn của Clock 60
Bảng 30 Địa chỉ thanh ghi trong SPI 60
Bảng 31 Mô tả chức năng các bit của thanh ghi S0SPCR 61
Bảng 32 Mô tả chức năng các bit của thanh ghi S0SPSR 63
Bảng 33 Mô tả các bit của thanh ghi SPTCR 64
Bảng 34 Mô tả các bit của thanh ghi SPTSR 64
Bảng 35 Thanh ghi I2CnCONSET được sử dụng trong chế độ Master 67
Bảng 36 Thanh ghi I2CnCONSET được sử dụng trong chế độ Slave 68
Bảng 37 I2C PIN 70
Bảng 38 Mô tả các bit của thanh ghi I2CCONSET 75
Trang 8LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những
sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học đến nay,
em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô, gia đình
Em xin chân thành cảm ơn Thầy Nguyễn Quốc Tuấn đã tận tâm hướng dẫn chúng em trong những buổi nói chuyện, thảo luận về lĩnh vực vi xử lý Nếu không có những lời hướng dẫn, dạy bảo của thầy thì em nghĩ bài thu hoạch này của em rất khó có thể hoàn thiện được Một lần nữa, em xin chân thành cảm ơn thầy
Bài thu hoạch được thực hiện trong khoảng thời gian gần 4 tuần Bước đầu đi vào thực tế, tìm hiểu về lĩnh vực vi xử lý, kiến thức của em còn hạn chế và còn nhiều bỡ ngỡ Do vậy, không tránh khỏi những thiếu sót là điều chắc chắn, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy Cô và các bạn học cùng lớp để kiến thức của em trong lĩnh vực này được hoàn thiện hơn Sau cùng, em xin kính chúc quý Thầy Cô trong Khoa Khoa Học & Kỹ Thuật Máy Tính và Thầy Nguyễn Quốc Tuấn thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau
Trân trọng
TP HCM, ngày 2 tháng1 năm 2014
Nhóm Sinh viên thực hiện
Trang 9LỜI MỞ ĐẦU
Trong sự nghiệp cộng nghiệp hóa và hiện đại hóa hiện nay, khoa học và
kỹ thuật chiếm một vị trí đặc biệt Công nghệ luôn chạy đua nối tiếp nhau từng ngày Ngay từ đầu với định hướng xây dựng kiến thức tổng quát phải cứng nền tảng trước, việc nghiêm cứu về các vi xử lý – một phần quan trọng của công nghệ đó là điều mà các sinh viên lĩnh vực kỹ thuật máy tính cần nghiêm cứu
Chúng ta cần phải nắm bắt những gì? Đó là tổng quan về vi xử lý cũng như nguyên lý hoạt động và cách sử dụng Đó là lý do vì sao nhóm nghiêm cứu về đề tài này
Trang 10I TỔNG QUAN VỀ VI XỬ LÝ LPC2300
I.1 Mô tả chung về LPC2300
LPC2300 là một vi xử lý dựa trên nền tảng CPU ARM với mô phỏng thời gian thực kết hợp với
vi điều khiển được nhúng bộ nhớ flash tốc độ cao LPC2300 rất phù hợp với các ứng dụng truyền nhận
dữ liệu tuần tự, các ứng dụng giao tiếp nối tiếp đa năng Vi xử lý này tính hợp một giao tiếp 10/100 Ethernet Media Access Controller (MAC), giao tiếp USB 2.0 Full Speed, 4 giao tiếp UART, 2 kênh CAN, 1 cổng SPI, 2 cổng SSP (Synchronous Serial Ports), 3 giao tiếp I2C, 1 giao tiếp I2S và 1 MiniBus
Thuật ngữ LPC2300 được áp dụng cho toàn bộ họ vi xử lý gồm :
Trang 11EMC USB/
GP SRAM (kB)
USB device
USB Host/
OTG
Ethernet Ethernet
GP SRAM (kB)
CAN channels
SD/
MMC
ADC channels
GPIO pins
Trang 12I.3 Sơ đồ khối
Hình 1 Sơ đồ khối LPC2361/62
Trang 13Hình 2 Sơ đồ khối LPC2364/65/66/67/68
Trang 14Hình 3 Sơ đồ khối LPC2377/78
Trang 15Hình 4 Sơ đồ khối LPC2387
Trang 16Hình 5 Sơ đồ khối LPC2388
Trang 17
I.4 Địa Chỉ Bộ Nhớ Trong LPC2300
I.4.1 Tổ chức bộ nhớ và địa chỉ của các thiết bị ngoại vi
Bộ xử lý ARM có thể quản lý một không gian địa chỉ bộ nhớ 4 GB Bảng dưới đây thể hiện sự phân bố địa chỉ của vùng bộ nhớ trong các thiết bị ARM:
Bảng 2 Bảng Phân bố địa chỉ của vùng bộ nhớ trong ARM
0x0000 0000 - 0x0007 FFFF flash memory (up to 512 kB) 0x3FFF C000 - 0x3FFF FFFF fast GPIO registers
0x4000 0000 to
0x7FFF FFFF
on-chip RAM 0x4000 0000 - 0x4000 7FFF RAM (up to 32 kB)
0x4000 0000 - 0x4000 FFFF RAM (64 kB for LPC2387/88) 0x7FD0 0000 - 0x7FD0 1FFF USB RAM (8 kB)
0x7FD0 0000 - 0x7FD0 3FFF USB RAM (16 kB for LPC2387/88) 0x7FE0 0000 - 0x7FE0 3FFF Ethernet RAM (16 kB)
0x8000 0000 to
0xDFFF FFFF
off-chip memory
Two static memory banks, 64 KB each (LPC2377/78 and LPC2388 only):
0x8000 0000 - 0x8000 FFFF static memory bank 0, 64 KB 0x8100 0000 - 0x8100 FFFF static memory bank 1, 64 KB 0xE000 0000
to
0xEFFF FFFF
APB peripherals
0xE000 0000 - 0xE008 FFFF 36 peripheral blocks, 16 kB each (some unused)
0xE01F C000 - 0xE01F FFFF System Control Block 0xF000 0000 to
0xFFFF FFFF
AHB peripherals
0xFFE0 0000 - 0xFFE0 3FFF Ethernet Controller (not LPC2361) 0xFFE0 4000 - 0xFFE0 7FFF General Purpose DMA Controller 0xFFE0 8000- 0xFFE0 BFFF External Memory Controller (EMC) (LPC2377/78, LPC2388 only)
0xFFE0 C000 - 0xFFE0 FFFF USB Controller (LPC2361/62/64/66/68, LPC2378,LPC2387, and LPC2388 only)
0xFFFF F000 - 0xFFFF FFFF Vectored Interrupt Controller (VIC)
Trang 18I.4.2 Phân vùng bộ nhớ
LPC2300 quản lý chặt chẽ từng vùng nhớ riêng biệt Bảng sau thể hiện toàn bộ không gian địa chỉ Vùng nhớ chứa địa chỉ vector ngắt phục vụ cho việc đánh lại địa chỉ nhớ, vấn đề này sẽ được đề cập trong phần sau
Hình 6 Phân vùng bộ nhớ LPC2461/63
Trang 19Hình 7 Phân vùng bộ nhớ LPC2364/65/66/67/68
Trang 20Hình 8 Phân vùng bộ nhớ LPC2377/78
Trang 21Hình 9 Phân vùng bộ nhớ LPC2387
Trang 22Hình 10 Phân vùng bộ nhớ LPC2388
Trang 23I.4.3 Phân vùng bộ nhớ thiết bị ngoại vi
Hình 11 Phân vùng bộ nhớ Thiết bị ngoại vi
Cả hai vùng nhớ cho thiết bị AHB và APB để có không gian là 2MB và chia đều cho 128 thiết bị., mỗi thiết bị được phân 16 KB Điều này đơn giản việc giải mã địa chỉ cho từng thiết bị
Trang 24Hình 12 Phân vùng bộ nhớ thiết bị AHB
Trang 25I.4.4 Địa chỉ thiết bị APB
Bảng sau thể hiện phân vùng của thiết bị APB
Bảng 3 Phân vùng địa chỉ cơ bản của thiết bị APB
Thiết bị APB Địa chỉ cơ bản Tên thiết bị ngoại vi
19 - 22 0xE004 C000 - 0xE005 8000 Không sử dụng
36- 126 0xE009 0000 - 0xE01F BFFF Không sử dụng
[1] CAN được dùng trong các vi xử lý LPC2364/66/68, LPC2378, LPC2387, và LPC2388
[2] The SD/MMC card được dùng trong các vi xử lý LPC2365/66, LPC2377/78, LPC2387, và LPC2388
Trang 26I.4.5 Phân vùng lại bộ nhớ trong LPC2300 và boot ROM
I.4.5.1 Nguyên lý và những chế độ hoạt động
Mỗi vùng nhớ trong LPC2300 có một vị trí cố định trong bản đồ bộ nhớ Phần lớn mỗi không gian bộ nhớ vẫn luôn cố định vĩnh viễn trong cùng một vị trí, và loại bỏ sự cần thiết phải có các phần của mã được thiết kế để chạy trong phạm vi địa chỉ khác nhau
Bảng vector ngắt của ARM7 được phân vùng từ 0x000 0000 đến 0x0000 001C, vì thế, một phần chia của Boot ROM và SRAM cần được phân vùng lại để có thể hoạt động trong những chế độ khác nhau Việc phân vùng lại vector ngắt liên quan chặt chẽ đến Bộ Điều khiển Phân vùng nhớ
Bảng 4 Địa chỉ ô nhớ ngoại lệ của ARM
Địa chỉ Trường hợp ngoại lệ
of the Flash memory(the Boot Flash) is available to hold part of the Boot Code
Activated by a User Program as desired Interrupt vectors are re-mapped
to the bottom of the Static RAM
Activated by a User Program as desired Interrupt vectors are re-mapped
to external memory bank 0
Trang 27I.4.5.2 Phân vùng lại bộ nhớ
Boot ROM được phân vùng trên cùng của bộ nhớ, một chương trình dù chiếm nhiều hay ít bộ nhớ đều không ảnh hưởng đến vị trí của Boot ROM hoặc không thay đổi phân vùng của véc tơ ngắt Boot ROM
Phân vùng bộ nhớ được cấp phát lại cho phép thực hiện quá trình ngắt ở những chế độ khác nhau, áp dụng cho vùng vectơ ngắt (32 bytes) và cả 32 bytes mở rộng Mã điều khiển việc phân vùng được cất giữ ở địa chỉ từ 0x0000 0000 và 0x0000 003F Chương trình trong bộ nhớ Flash được có điểu khiển FIQ lưu ở 0x0000 001C Vectơ chứa trong SRAM, bộ nhớ ngoài
và Boot ROM phải chứa địa chỉ đến điều khiển ngắt thật sự một cách trực tiếp hay gián tiếp hông qua một câu lệnh khác
Có ba lý do cấu hình này đã được lựa chọn:
1 Để cung cấp cho các xử lý FIQ trong bộ nhớ Flash lợi thế là không phải mất một ranh giới bộ nhớ gây ra bởi ánh xạ lại vào tài khoản
2 Giảm thiểu sự cần thiết phải cho SRAM và khởi động vector ROM để giải quyết với bất kỳ giới hạn giữa không gian mã
3 Để cung cấp không gian lưu trữ các hằng số vượt ra ngoài phạm vi của những câu lệnh chuyển ngữ cảnh
Phân vùng lại bộ nhớ bao gồm cả boot ROM và vector interrupt, tiếp tục xuất hiện trong bộ nhớ góc thêm vào các địa chỉ phân vùng lại bộ nhớ
I.4.5.3 Điều khiển phân vùng bộ nhớ
Điều khiển phân vùng bộ nhớ thay đổi phân vùng của những vector ngắt xuất hiện ở địa chỉ 0x0000 0000 Mã chương trình sẽ được phép chạy ở những vùng nhớ khác và điều khiển những ngắt
I.4.5.3.1 Thanh ghi điều khiển phân vùng bộ nhớ (MEMMAP – 0xE01FC040)
Khi một điều khiển ngoại lệ cần thiết, vi xử lý sẽ nạp câu lệnh điền khiển địa chỉ của ngoại lệ căn cứ vào bảng 4 trang 20 Thanh ghi MEMMAP xác định địa chỉ nguồn của dữ liệu
sẽ nạp vào bảng này
Trang 28Bảng 6 Thanh ghi điều khiển phân vùng bộ nhớ
Name Description Access Reset
value
Address
MEMMAP Memory mapping control Selects whether the
ARM interrupt vectors are read from the Boot ROM, User Flash, or RAM
Bảng 7 Thanh ghi điều khiển phân vùng bộ nhớ - mô tả bit địa chỉ 0xE01F C040
Bit Symbol Value Description Reset
value 1:0 MAP 00 Boot Loader Mode Interrupt vectors are re-mapped to Boot
7:2 - - Reserved, user software should not write ones to reserved bits
The value read from a reserved bit is not defined
NA
I.4.5.3.2 Ghi chú sử dụng điều khiển phân vùng bộ nhớ
Điều khiển phân vùng bộ nhớ chỉ đơn giản là lựa chọn một trong số ba nguồn
có sẵn dữ liệu (mỗi nguồn có 64 byte) cần thiết để xử lý các trường hợp ngoại lệ ARM (interrupts)
Trang 29Hình 13 Bộ nhớ ở mức độ thấp cho thấy quá trình tái phân vùng bộ nhớ
Trang 30I.5 Khối Điều Khiển Hệ Thống
I.5.1 Giới thiệu
Khối điều khiển hệ thống bao gồm nhiều đặc tính hệ thống và nó điều khiển những thanh ghi cho một số chức năng riêng biệt, không liên quan đến bất cứ thiết bị ngoại vi nào Những chức năng
đó là:
Reset
Brown-Out Detection
Ngõ nhập ngoài tạo ngắt
Điều khiển/ Thông số hệ thống
Bảo mật và Tìm lỗi code
AHB configuration
Mỗi chức năng có một hay nhiều thanh ghi của riêng nó Những bit không cần thiết trong thanh ghi sẽ được giữ lại cho những mở rộng về sau Những chức năng không liên quan với nhau không chia
sẽ chung bất cứ thanh ghi nào
I.5.2 Chân kết nối ngoài của khối điều khiển hệ thống
Bảng sau đây thể hiện những chân kết nối ngoài liên quan đến những chức năng của khối điều khiển hệ thống
Bảng 8 Bộ nhớ ở mức độ thấp cho thấy quá trình tái phân vùng bộ nhớ
Pin name Pin
direction
Pin description
EINT0 Input External Interrupt Input 0- An active low/high level or falling/rising
edge general purpose interrupt input This pin may be used to wake up the processor from Idle or Power-down modes
EINT1 Input External Interrupt Input 1- See the EINT0 description above
EINT2 Input External Interrupt Input 2- See the EINT0 description above
EINT3 Input External Interrupt Input 3- See the EINT0 description above
RESET Input External Reset input- A LOW on this pin resets the chip, causing
I/O ports and peripherals to take on their default states, and the processor to begin execution at address 0x0000 0000
Trang 31I.5.3 Các thanh ghi liên quan
Bảng sau đây thể hiện những thanh ghi liên quan đến những chức năng của khối điều khiển hệ thống
Bảng 9 Tóm tắt các thanh ghi điều khiển hệ thống
Name Description Access Reset
value
Address
External interrupts
Reset
text
0xE01F C180
AHB configuration registers
Syscon miscellaneous registers
I.5.4 Reset
Có 4 cách Reset trên LPC2300:
Chân RESET (ngõ nhập Schmitt trigger)
Lệnh Reset của Watchdog
Reset khi mở nguồn
Mạch Brown Out Dectection
Trang 32Hình 14 Thiết lập lại sơ đồ khối bao gồm bộ đếm thời gian wakeup
Sự xác nhận của bất kỳ nguồn reset nào : POR, BOD reset, External reset và Watchdog reset thì IRC khởi động Sau thời gian IRC khởi động (tối đa là 60 𝜇s ) và sau khi IRC cấp phát xung clock
ổn định, tín hiệu reset được chốt và đồng bộ IRC clock
Sau đó, hai trình tự sau đây bắt đầu cùng một lúc:
1 2-bit IRC wake-up đếm thời gian bắt đầu khi reset đồng bộ được kích hoạt Các mã khởi động trong ROM bắt đầu chạy khi IRC wake-up hết thời gian hẹn giờ (times out).Các mã khởi động thực hiện các nhiệm vụ khởi động và có thể nhảy đến Flash Nếu Flash là không sẵn sàng, các MAM sẽ chèn những chu kỳ chờ đợi (wait cycles) cho đến khi Flash sẵn sàng
2 Flash wake-up-timer (9-bit) đếm thời gian bắt đầu khi reset đồng bộ được kích hoạt Sau
đó Flash wake-up-timer đợi 100 𝜇s Sau khi times out trình tự khởi tạo Flash được bắt đầu ( tốn khoảng 250 chu kì) Sau khi hoàn thành, các MAM sẽ được cấp quyền truy cập vào Flash
Trang 33Khi bộ vi xử lý bắt đầu xử lý tại địa chỉ 0, đó là bước đầu Reset vector ánh xạ từ Boot Block Vào thời điểm đó, tất cả các thanh ghi xử lý và thiết bị ngoại vi đã được khởi tạo các giá trị xác định
Sau đây là một ví dụ về mối liên hệ giữa RESET, IRC, và tình trạng xử lý khi LPC2300 sau khi reset
Reset khác nhau có một số khác biệt nhỏ
Hình 15 Ví dụ khởi động lại sau reset
Trang 34II.4.5.1 Reset Source Identification Register (RSIR - 0xE01F C180)
Thanh ghi chứa 1 bit cho từng nguồn Reset riêng biệt Dưới đây là bảng thể hiện sự tương tác giữa 4 nguồn Reset
Bảng 10 Sự tương tác giữa 4 nguồn Reset
Bit Symbol Description Reset
value
0 POR Assertion of the POR signal sets this bit, and clears all of the other bits
in this register But if another Reset signal (e.g., External Reset) remains asserted after the POR signal is negated, then its bit is set This bit is not affected by any of the other sources of Reset
See text
1 EXTR Assertion of the RESET signal sets this bit This bit is cleared by POR,
but is not affected by WDT or BOD reset
See text
2 WDTR This bit is set when the Watchdog Timer times out and the
WDTRESET bit in the Watchdog Mode Register is 1 It is cleared by any of the other sources of Reset
See text
3 BODR This bit is set when the 3.3 V power reaches a level below 2.6 V.If the
VDD(DCDC)(3V3) voltage dips from 3.3 V to 2.5 V and backs up, the BODR bit will be set to 1.If the VDD(DCDC)(3V3) voltage dips from 3.3 V to 2.5 V and continues to decline to the level at which POR is asserted (nominally 1 V), the BODR bit is cleared If the VDD(DCDC)(3V3) voltage rises continuously from below 1 V to a level above 2.6 V, the BODR will be set to 1 This bit is not affected
by External Reset nor Watchdog Reset Note:Only in case when a reset occurs and the POR = 0, the BODR bit indicates if the VDD(DCDC)(3V3)voltage was below 2.6 V or not
See text
I.5.5 External interrupt
Vi xử lý LPC2300 bao gồm bốn đầu vào External interrupt Ngoài ra, External interrupt có khả năng wakeup CPU từ chế độ Power điều này được điều khiển bởi thanh ghi INTWAKE
Bảng 11 Các thanh ghi của External interrupt
Name Description Access Reset
value
Address
EXTINT The External Interrupt Flag Register
contains interrupt flags for EINT0, EINT1, EINT2 and EINT3
EXTMODE The External Interrupt Mode Register
controls whether each pin is edge-or level-sensitive
0xE01F C148
EXTPOLAR The External Interrupt Polarity
Register controls which level or edge
on each pin will cause an interrupt
0xE01F C14C
Trang 35Bảng 12 Thanh ghi Flag của External interrupt (EXTINT)
Bit Symbol Description Reset
value
0 EINT0 In level-sensitive mode, this bit is set if the EINT0 function is selected for
its pin, and the pin is in its active state In edge-sensitive mode, this bit is set if the EINT0 function is selected for its pin, and the selected edge occurs
on the pin
00
1 EINT1 In level-sensitive mode, this bit is set if the EINT1 function is selected for
its pin, and the pin is in its active state In edge-sensitive mode, this bit is set if the EINT1 function is selected for its pin, and the selected edge occurs
on the pin
2 EINT2 In level-sensitive mode, this bit is set if the EINT2 function is selected for
its pin, and the pin is in its active state In edge-sensitive mode, this bit is set if the EINT2 function is selected for its pin, and the selected edge occurs
on the pin
3 EINT3 In level-sensitive mode, this bit is set if the EINT3 function is selected for
its pin, and the pin is in its active state In edge-sensitive mode, this bit is set if the EINT3 function is selected for its pin, and the selected edge occurs
on the pin
Bảng 13 Thanh ghi Mode của External interrupt (EXTMODE)
Bit Symbol Value Reset
Bảng 14 Thanh ghi Polar của External interrupt (EXTPOLAR)
Bit Symbol Value Reset
Trang 36I.6 Mô Đun Tăng Tốc Bộ Nhớ (Memory Acceleration Module - MAM)
Khối MAM trong vi xử lý LPC2300 góp phần tối đa hiệu suất của bộ vi xử lý ARM khi chạy các đoạn code trong bộ nhớ flash
Hình 16 Sơ đồ khối đơn giản của MAM
I.7 Khối Điều Khiển Vectơ Interrupt (Vectored Interrupt Controller - VIC)
I.7.2 Giới thiệu
LPC2300 hỗ trợ 32 vector IRQ interrupt và có 16 mức độ ưu tiên
Cốt lỗi của vi xử lý ARM có 2 interrupt được gọi là Interrupt Request (IRQ) và Fast Interrupt reQuest (FIQ)
Vectored Interrupt Controller (VIC) hỗ trợ 32 yêu cầu interrupt, ta sẽ lập trình vector đó tương ứng với loại interrupt nào (IRQ hay FIQ)
Fast Interrupt Request là interrupt có độ ưu tiên cao nhất Nếu có cùng độ ưu tiên thì interrupt
ở vector có chỉ số nhỏ nhất sẽ được làm trước IRQ có độ ưu tiên thấp hơn, cũng tương tự như FIQ nếu có nhiều interrupt cùng độ ưu tiên thì interrupt nào ở vector có chỉ số nhỏ hơn sẽ được thực thi trước
Trang 37I.7.2 Các loại thanh ghi VIC
Bảng 15 Các loại thanh ghi VIC
Name Description Access Reset
value
Address
VICIRQStatus IRQ Status Register This register reads out the
state of those interrupt requests that are enabled and classified as IRQ
F00
VICFIQStatus FIQ Status Requests This register reads out the
state of those interrupt requests that are enabled and classified as FIQ
F04
VICRawIntr Raw Interrupt Status Register This register
readsout the state of the 32 interrupt requests / software interrupts, regardless of enabling or classification
F08
VICIntSelect Interrupt SelectRegister This register classifies
each of the 32 interrupt requests as contributing to FIQ or IRQ
F0C
VICIntEnable Interrupt EnableRegister This register controls
which of the 32 interrupt requests and software interrupts are enabled to contribute to FIQ or IRQ
F10
VICIntEnClr Interrupt Enable Clear Register This register
allows software to clear one or more bits in the Interrupt Enable register
F14
VICSoftInt Software Interrupt Register The contents of this
register are ORed with the 32 interrupt requests from various peripheral functions
VICProtection Protection enable register This register allows
limiting access to the VIC registers by software running in privileged mode
FF
0xFFFF F24
VICVectAddr0 Vector address 0 register Vector Address Registers
0-31 hold the addresses of the Interrupt Service routines (ISRs) for the 32
vectored IRQ slots
VICVectPriority Vector priority 0 register Vector Priority Registers R/W 0xF 0xFFFF
Trang 38these registers designates the priority of the corresponding
vectored IRQ slot
I.7.3 Kiến trúc Interrupt
Hình 17 Sơ đồ khối của VIC
Nhìn vào sơ đồ khối ta có thể thấy : Phần interrupt của LPC2378 có 4 khối: phần interrupt request, khối status interrupt, khối priority, khối vecto interrupt
Trong đó gồm :
Khối interrupt request : có vai trò khi bất cứ interrupt nào được bật lên thì nó sẽ cập nhật lại khối status interrupt
Trang 39 Khối status interrupt có vai trò : chứa các thông tin về các interrupt hiện tại và sinh ra FIQ
Khối vectored interrupt chứa thông tin về vector IRQ và địa chỉ cần nhảy tới khi có interrupt
Khối priority and generation: có nhiệm vụ chọn interrupt nào sẽ làm, và địa chỉ nào sẽ nhảy tới
I.7.4 Nguồn Interrupt
Bảng 16 Sự kết nối của nguồn Interrupt đến VIC
Hex
Channel # and Mask
Reserved for Software Interrupts only 1 0x0000 0002
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA) Character Time-out Indicator (CTI)
6 0x0000 0040
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA) Character Time-out Indicator (CTI) Modem Control Change
SPI, SSP0 SPI Interrupt Flag of SPI (SPIF)
Mode Fault of SPI0 (MODF)
Tx FIFO half empty of SSP1
Rx FIFO half full of SSP1
Rx Timeout of SSP1
Rx Overrun of SSP1
10 0x0000 0400
Rx FIFO half full
13 0x0000 2000
Trang 40External Interrupt 2 (EINT2) 16 0x0001 0000
TxFinishedInt, TxErrorInt, TxUnderrunInt, RxDoneInt, RxFinishedInt, RxErrorInt, RxOverrunInt
21 0x0020 0000
USB_INT_REQ_HP, USB_INT_REQ_DMA
TxFifoHalfEmpty, RxActive, TxActive, CmdActive,DataBlockEnd, StartBitErr, DataEnd, CmdSent, CmdRespEnd, RxOverrun, TxUnderrun, DataTimeOut, CmdTimeOut, DataCrcFail, CmdCrcFail
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA) Character Time-out Indicator (CTI)
28 0x1000 0000
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA) Character Time-out Indicator (CTI)