do an
TRANSCRIPT
ĐẠ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
----------
Đồ án môn học Thiết Kế Luận Lý.
TỔNG QUAN VI XỬ LÝ LPC2300
HƯỚNG DẪN SỬ DỤNG BOARD MCB 2300
TP. HCM, 12/2013
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
I
......................................................................................................................................................... I
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
I.8. Các Thiết Lập Chân Cho LPC2300 .................................................................................. 34
II
I.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
I.15.3 Các chế độ hoạt động của I2C ...................................................................................... 66
III
I.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
IV
Phụ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
Hình 39 Địa chỉ thanh ghi I2C ........................................................................................................... 73
Hình 40 Chu kì của một timer với PR=2, MRx=6 và interrupt, reset đã được kích hoạt ...................... 79
V
Hì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
VI
Phụ 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
Bảng 39 Mô tả các bit của thanh ghi I2CCONCLR ............................................................................ 75
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 1
LỜ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 và bạn bè.
Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa
Khoa Học & Kỹ Thuật Máy Tính – Trường Đại Học Bách Khoa Thành Phố Hồ Chí Minh đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn
kiến thức quý báu cho chúng em trong suốt thời gian học tập tại trường. Và
đặc biệt, trong học kỳ này, Khoa đã tổ chức cho chúng em được tiếp cận với môn học mà theo em là rất hữu ích đối với sinh viên ngành Kỹ Thuật Máy
Tính cũng như tất cả các sinh viên thuộc các chuyên ngành Khoa Học Kĩ
Thuật khác. Đó là môn học “Đồ Án Thiết Kế Luận Lý”. 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
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 2
LỜ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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 3
I. 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 :
LPC2361/62
LPC2364/65/66/67/68
LPC2377/78
LPC2387
LPC2388
Ứng dụng trong điều khiển công nghiệp, hệ thống y tế, thông tin liên lạc, Protocol converter.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 4
I.2. Đặc điểm chính.
Bảng dưới đây là những đặc điểm khác biệt của họ LPC2300.
Bảng 1 Đặc điểm tổng quát LPC2300
Part Local
Bus
SRAM
(kB)
Flash
(kB)
EMC USB/
GP
SRAM
(kB)
USB
device
USB
Host/
OTG
Ethernet Ethernet
GP
SRAM
(kB)
CAN
channels
SD/
MMC
ADC
channels
GPIO
pins
LPC2361 8 64 No 8 Yes Yes No 16 2 No 6 70
LPC2362 32 128 No 8 Yes Yes Yes 16 2 No 6 70
LPC2364 8 128 No 8 Yes No Yes 16 2 No 6 70
LPC2365 32 256 No 8 Yes No Yes 16 - No 6 70
LPC2366 32 256 No 8 Yes No Yes 16 2 No 6 70
LPC2367 32 512 No 8 No No Yes 16 - Yes 6 70
LPC2368 32 512 No 8 Yes No Yes 16 2 Yes 6 70
LPC2377 32 512 Mini 8 No No Yes 16 - Yes 8 104
LPC2378 32 512 Mini 8 Yes No Yes 16 2 Yes 8 104
LPC2387 64 512 No 16 Yes Yes Yes 16 2 Yes 6 70
LPC2388 64 512 Mini 16 Yes Yes Yes 16 2 Yes 8 104
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 5
I.3. Sơ đồ khối
Hình 1. Sơ đồ khối LPC2361/62
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 6
Hình 2 Sơ đồ khối LPC2364/65/66/67/68
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 7
Hình 3 Sơ đồ khối LPC2377/78
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 8
Hình 4 Sơ đồ khối LPC2387
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 9
Hình 5 Sơ đồ khối LPC2388
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 10
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
Address
range
General use Address range details and description
0x0000 0000 to
0x3FFF FFFF
on-chip NV
memory and
fast I/O
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)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 11
I.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
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 12
Hình 7 Phân vùng bộ nhớ LPC2364/65/66/67/68
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 13
Hình 8 Phân vùng bộ nhớ LPC2377/78
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 14
Hình 9 Phân vùng bộ nhớ LPC2387
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 15
Hình 10 Phân vùng bộ nhớ LPC2388
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 16
I.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ị.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 17
Hình 12 Phân vùng bộ nhớ thiết bị AHB
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 18
I.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
0 0xE000 0000 Watchdog Timer
1 0xE000 4000 Timer 0
2 0xE000 8000 Timer 1
3 0xE000 C000 UART0
4 0xE001 0000 UART1
5 0xE001 4000 Không sử dụng
6 0xE001 8000 PWM1
7 0xE001 C000 I2C0
8 0xE002 0000 SPI
9 0xE002 4000 RTC
10 0xE002 8000 GPIO
11 0xE002 C000 Pin Connect Block
12 0xE003 0000 SSP1
13 0xE003 4000 ADC
14 0xE003 8000 CAN Acceptance Filter RAM[1]
15 0xE003 C000 CAN Acceptance Filter Registers[1]
16 0xE004 0000 CAN Common Registers[1]
17 0xE004 4000 CAN Controller 1[1]
18 0xE004 8000 CAN Controller 2[1]
19 - 22 0xE004 C000 - 0xE005 8000 Không sử dụng
23 0xE005 C000 I2C1
24 0xE006 0000 Không sử dụng
25 0xE006 4000 Không sử dụng
26 0xE006 8000 SSP0
27 0xE006 C000 DAC
28 0xE007 0000 Timer 2
29 0xE007 4000 Timer 3
30 0xE007 8000 UART2
31 0xE007 C000 UART3
32 0xE008 0000 I2C2
33 0xE008 4000 Battery RAM
34 0xE008 8000 I2S
35 0xE008 C000 SD/MMC Card Interface[2]
36- 126 0xE009 0000 - 0xE01F BFFF Không sử dụng
127 0xE01F C000 System Control Block
[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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 19
I.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ệ
0x0000 0000 Reset.
0x0000 0004 Undefined Instruction.
0x0000 0008 Software Interrupt.
0x0000 000C Prefetch Abort (instruction fetch memory fault).
0x0000 0010 Data Abort (data access memory fault).
0x0000 0014 Reserved.
0x0000 0018 IRQ.
0x0000 001C FIQ.
Bảng 5 Những chế độ hoạt động của bộ nhớ trong LPC2300
Chế độ Hoạt động Cách sử dụng.
Boot
Loader
mode
Hardware
activation by
any Reset
The Boot Loader alwaysexecutes after any reset. The Boot ROM interrupt
vectors are mapped to the bottom of memory to allow handling
exceptions and using interrupts during the Boot Loading process. A sector
of the Flash memory(the Boot Flash) is available to hold part of the Boot
Code.
User
Flash
mode
Software
activation by
boot code
Activated by the Boot Loader when a valid User Program Signature is
recognized in memory and Boot Loader operation is not forced. Interrupt
vectors are not re-mapped and are found in the bottom of the Flash
memory.
User
RAM
mode
Software
activation by
user program
Activated by a User Program as desired. Interrupt vectors are re-mapped
to the bottom of the Static RAM
User
External
Memory
mode
Software
activation by
user code
Activated by a User Program as desired. Interrupt vectors are re-mapped
to external memory bank 0
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 20
I.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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 21
Bả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.
R/W 0x00 0xE01F C040
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
ROM.
00
01
User Flash Mode. Interrupt vectors are not re-mapped and
reside in Flash.
10 User RAM Mode. Interrupt vectors are re-mapped to Static
RAM.
11 User External Memory Mode (available on LPC2377/78 and
LPC2388 only).
Warning: Improper setting of this value may result in incorrect
operation of the device.
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).
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 22
Hình 13 Bộ nhớ ở mức độ thấp cho thấy quá trình tái phân vùng bộ nhớ
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 23
I.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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 24
I.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
EXTINT External Interrupt Flag Register R/W 0x00 0xE01F C140
EXTMODE External Interrupt Mode register R/W 0x00 0xE01F C148
EXTPOLAR External Interrupt Polarity Register R/W 0x00 0xE01F C14C
Reset
RSID Reset Source Identification Register R/W see
text
0xE01F C180
AHB configuration registers
AHBCFG1 Configures the AHB1 arbiter. R/W 0x0000
0145
0xE01F C188
AHBCFG2 Configures the AHB2 arbiter. R/W 0x0000
0145
0xE01F C18C
Syscon miscellaneous registers
SCS System Control and Status R/W 0x08 0xE01F C1A0
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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 25
Hì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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 26
Khi 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
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 27
II.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.
R/W 00 0xE01F C140
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
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 28
Bả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
value
0 EXTMODE0 0 00
1
1 EXTMODE1 0
1
2 EXTMODE2 0
1
3 EXTMODE3 0
1
Bảng 14 Thanh ghi Polar của External interrupt (EXTPOLAR).
Bit Symbol Value Reset
value
0 EXTPOLAR0 0 00
1
1 EXTPOLAR1 0
1
2 EXTPOLAR2 0
1
3 EXTPOLAR3 0
1
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 29
I.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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 30
I.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.
RO 0 0xFFFF
F00
VICFIQStatus FIQ Status Requests. This register reads out the
state of those interrupt requests that are enabled and
classified as FIQ.
RO 0 0xFFFF
F04
VICRawIntr Raw Interrupt Status Register. This register
readsout the state of the 32 interrupt requests /
software interrupts, regardless of enabling or
classification
RO - 0xFFFF
F08
VICIntSelect Interrupt SelectRegister. This register classifies
each of the 32 interrupt requests as contributing to
FIQ or IRQ
R/W 0 0xFFFF
F0C
VICIntEnable Interrupt EnableRegister. This register controls
which of the 32 interrupt requests and software
interrupts are enabled to contribute to FIQ or IRQ.
R/W 0 0xFFFF
F10
VICIntEnClr Interrupt Enable Clear Register. This register
allows software to clear one or more bits in the
Interrupt Enable register
WO - 0xFFFF
F14
VICSoftInt Software Interrupt Register. The contents of this
register are ORed with the 32 interrupt requests
from various peripheral functions.
R/W 0 0xFFFF
F18
VICSoftIntClear Software Interrupt Clear Register. This register
allows software
to clear one or more bits in the Software Interrupt
register.
WO - 0xFFFF
F1C
VICProtection Protection enable register. This register allows
limiting access to the VIC registers by software
running in privileged mode
R/W 0 0xFFFF
F20
VICSWPriority
Mask
Software Priority Mask Register. Allows masking
individual interrupt priority levels in any
combination.
R/W 0xFF
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
R/W 0 0xFFFF
F100
VICVectAddr1
to
VICVectAddr31
Vector address 1 register to Vector address 31
register.
R/W 0 0xFFFF
F104 to
0xFFFF
F17C
VICVectPriority
0
Vector priority 0 register. Vector Priority Registers
0-31. Each of
R/W 0xF 0xFFFF
F200
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 31
these registers designates the priority of the
corresponding
vectored IRQ slot.
VICVectPriority
1 to
VICVectPriority
25
Vector priority 1 register to Vector priority 25
register.
R/W 0xF 0xFFFF
F204 to
0xFFFF
F264
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.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 32
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
Block Flag(s) VIC
Hex
Channel # and
Mask
WDT Watchdog Interrupt (WDINT) 0 0x0000 0001
Reserved for Software Interrupts only 1 0x0000 0002
ARM Core Embedded ICE, DbgCommRx 2 0x0000 0004
ARM Core Embedded ICE, DbgCommTX 3 0x0000 0008
TIMER0 Match 0 - 1 (MR0, MR1)
Capture 0 - 1 (CR0, CR1)
4 0x0000 0010
TIMER1 Match 0 - 2 (MR0, MR1, MR2)
Capture 0 - 1 (CR0, CR1
5 0x0000 0020
UART0 Rx Line Status (RLS)
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA)
Character Time-out Indicator (CTI)
6 0x0000 0040
UART1 Rx Line Status (RLS)
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA)
Character Time-out Indicator (CTI)
Modem Control Change
7 0x0000 0080
PWM1 Match 0 - 6 of PWM1
Capture 0-1 of PWM1
8 0x0000 0100
I2C0 SI (state change) 9 0x0000 0200
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
SSP 1 Tx FIFO half empty
Rx FIFO half full
Rx Timeout
Rx Overrun
11 0x0000 0800
PLL PLL Lock (PLOCK) 12 0x0000 1000
RTC Counter Increment (RTCCIF)
Alarm (RTCALF)
Subsecond Int (RTCSSF)
13 0x0000 2000
System Control
(External Interrupts)
External Interrupt 0 (EINT0) 14 0x0000 4000
External Interrupt 1 (EINT1) 15 0x0000 8000
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 33
External Interrupt 2 (EINT2) 16 0x0001 0000
External Interrupt 3 (EINT3). 17 0x0002 0000
ADC0 A/D Converter 0 end of conversion 18 0x0004 0000
I2C1 SI (state change) 19 0x0008 0000
BOD Brown Out detect 20 0x0010 0000
Ethernet WakeupInt, SoftInt, TxDoneInt,
TxFinishedInt,
TxErrorInt, TxUnderrunInt, RxDoneInt,
RxFinishedInt, RxErrorInt, RxOverrunInt.
21 0x0020 0000
USB USB_INT_REQ_LP,
USB_INT_REQ_HP,
USB_INT_REQ_DMA
22 0x0040 0000
CAN CAN Common, CAN 0 Tx, CAN 0 Rx,
CAN 1 Tx, CAN 1 Rx
23 0x0080 0000
SD/ MMC
interface
RxDataAvlbl, TxDataAvlbl,
RxFifoEmpty, TxFifoEmpty, RxFifoFull,
TxFifoFull, RxFifoHalfFull,
TxFifoHalfEmpty, RxActive, TxActive,
CmdActive,DataBlockEnd, StartBitErr,
DataEnd, CmdSent, CmdRespEnd,
RxOverrun, TxUnderrun, DataTimeOut,
CmdTimeOut, DataCrcFail, CmdCrcFail
24 0x0100 0000
GP DMA IntStatus of DMA channel 0, IntStatus of
DMA channel 1
25 0x0200 0000
Timer 2 Match 0-3
Capture 0-1
26 0x0400 0000
Timer 3 Match 0-3
Capture 0-1
27 0x0800 0000
UART 2 Rx Line Status (RLS)
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA)
Character Time-out Indicator (CTI)
28 0x1000 0000
UART 3 Rx Line Status (RLS)
Transmit Holding Register Empty (THRE)
Rx Data Available (RDA)
Character Time-out Indicator (CTI)
29 0x2000 0000
I2C2 SI (state change) 30 0x4000 0000
I2S irq_rx
irq_tx
31 0x8000 0000
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 34
I.8. Các Thiết Lập Chân Cho LPC2300
Mỗi chân trong LPC2378 có thể có nhiều chức năng hoặc input, output hay làm 1 chức năng cụ
thể của 1 phần nào đấy. Ví dụ như : P0[1] (port số 0 chân số 1) có thể làm chức năng input, output căn
bản hay cũng có thể làm chức năng là chân nhận dữ liệu của Control Area Network 1 (CAN1).
Chi tiết của từng chân tham khảo trong user manual trang 95. Ý tưởng ở đây là chúng ta biết mỗi
chân có nhiều chức năng và khi muốn sử dụng chức năng nào thì ta phải thiết lập 1 số giá trị nhất định
cho thanh ghi nào đó.
Như vậy ta sẽ phải có 1 thanh ghi để chọn chức năng cho từng chân. Thanh ghi đó là PINSEL, có
10 thanh ghi PINSEL0 -> PINSEL9. Mỗi 1 chân của LPC2378 sẽ tương ứng với 2 bit trong 1 thanh
ghi này.
Bảng 17 Chức năng của các chân
PINSEL Chức năng Giá trị sau khi Reset
00 Chức năng input,output căn bản 00
01 Chức năng số 1
10 Chức năng số 2
11 Chức năng số 3
Mọi chân đều có thể làm input,output, tùy vào từng chân mà chức năng số 1,2,3 sẽ là gì.
Bảng 18 Địa chỉ của các thanh ghi chức năng
Name Description Access Reset Value Address
PINMODE0 Pin mode select register 0. R/W 00 0xE002 C040
PINMODE1 Pin mode select register 1. R/W 0xE002 C044
PINMODE2 Pin mode select register 2. R/W 0xE002 C048
PINMODE3 Pin mode select register 3. R/W 0xE002 C04C
PINMODE4 Pin mode select register 4. R/W 0xE002 C050
PINMODE5 Pin mode select register 5. R/W 0xE002 C054
PINMODE6 Pin mode select register 6. R/W 0xE002 C058
PINMODE7 Pin mode select register 7. R/W 0xE002 C05C
PINMODE8 Pin mode select register 8. R/W 0xE002 C060
PINMODE9 Pin mode select register 9. R/W 0xE002 C064
Thanh ghi PINSEL0 điều khiển các chức năng của các chân. Bit điều khiển hướng vào thanh ghi
IO0DIR (hoặc thanh ghi FIO0DIR nếu chức năng nâng cao của GPIO được chọn cho cổng 0) chỉ có
hiệu lực khi chức năng của GPIO được chọn cho một chân nhất định. Đối với các chức năng khác thì
sẽ được tự động điều khiển.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 35
I.9. Tổng Quan Chức Năng Cổng Input/Ouput Vi Xử Lý LPC2300(GPIO)
I.9.1 Đặc điểm chung
I.9.1.1 Digital I/O ports
GPIO PORT0 và PORT1 muốn truy cập cần phải thông qua một trong hai điều kiện
sau : nhóm thanh ghi cung cấp “tính năng nâng cao” và “cổng truy cập tăng tốc” (the group of
registers providing enhanced features and accelerated port access) hoặc nhóm thanh ghi kế
thừa (the legacy group of registers). PORT2/3/4 được truy cập như cổng nhanh (fast ports).
I.9.1.2 Interrupt generating digital ports
PORT0 và PORT2 cung cấp một ngắt cho mỗi port.
Mỗi interrupt có thể được lập trình tạo ra một interrupt có cạnh lên, xuống hoăc cả
hai tùy thuộc vào người lập trình.
Có thể hoạt động trong chế độ đồng bộ hoặc không đồng bộ.
Liên quan đến chế độ Wake-up và Power-down.
Có hỗ trợ thanh ghi kiểm tra cạnh lên, cạnh xuống.
I.9.2 Địa chỉ thanh ghi
Bảng 19 Địa chỉ thanh ghi GPIO (legacy APB accessible registers)
Generic
Name
Description Access Reset
value
PORTn Register
Address & Name
IOPIN GPIO Port Pin value register. The current state of
the GPIO configured port pins can always be read
from this register, regardless of pin direction. By
writing to this register port’s pins will be set to
the desired level instantaneously
R/W NA IO0PIN - 0xE002 8000 IO1PIN - 0xE002 8010
IOSET GPIO Port Output Set register. This register
controls the state of output pins in conjunction
with the IOCLR register. Writing ones produces
highs at the corresponding port pins. Writing
zeroes has no effect.
R/W 0x0 IO0SET - 0xE002 8004 IO1SET - 0xE002 8014
IODIR GPIO Port Direction control register. This
register individually controls the direction of each
port pin.
R/W IO0DIR - 0xE002 8008
IO1DIR - 0xE002 8018
IOCLR GPIO Port Output Clear register. This register
controls the state of output pins. Writing ones
produces lows at the corresponding port pins and
clears the corresponding bits in the IOSET
register. Writing zeroes has no effect.
WO IO0CLR - 0xE002 800C IO1CLR - 0xE002 801C
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 36
Bảng 20 Địa chỉ thanh ghi GPIO (local bus accessible registers - enhanced GPIO features)
Generic
Name
Description Access Reset
value
PORTn Register
Address & Name
FIODIR Fast GPIO Port Direction control register.
This register individually controls the
direction of each port pin.
R/W 0x0 FIO0DIR - 0x3FFF C000 FIO1DIR - 0x3FFF C020 FIO2DIR - 0x3FFF C040 FIO3DIR - 0x3FFF C060 FIO4DIR - 0x3FFF C080
FIOMASK Fast Mask register for port. Writes, sets,
clears, and reads to port (done via writes to
FIOPIN, FIOSET, and FIOCLR, and reads
of FIOPIN) alter or return only the bits
enabled by zeros in this register
R/W FIO0MASK - 0x3FFF C010 FIO1MASK - 0x3FFF C030 FIO2MASK - 0x3FFF C050 FIO3MASK - 0x3FFF C070 FIO4MASK - 0x3FFF
C090
FIOPIN Fast Port Pin value register using
FIOMASK. The current state of digital port
pins can be read from this register,
regardless of pin direction or alternate
function selection (as long as pins are not
configured as an input to ADC). The value
read is masked by ANDing with inverted
FIOMASK.Writing to this register places
corresponding values in all bits enabled by
zeros in FIOMASK.
R/W FIO0PIN - 0x3FFF C014 FIO1PIN - 0x3FFF C034 FIO2PIN - 0x3FFF C054 FIO3PIN - 0x3FFF C074 FIO4PIN - 0x3FFF C094
FIOSET Fast Port OutputSet register using
FIOMASK. This register controls the state
of output pins. Writing 1s produces highs at
the corresponding port pins. Writing 0s has
no effect. Reading this register returns the
current contents of the port output register.
Only bits enabled by 0 in FIOMASK can be
altered.
R/W FIO0SET - 0x3FFF C018 FIO1SET - 0x3FFF C038 FIO2SET - 0x3FFF C058 FIO3SET - 0x3FFF C078 FIO4SET - 0x3FFF C098
FIOCLR Fast Port Output Clear register using
FIOMASK0. This register controls the state
of output pins. Writing 1s produces lows at
the corresponding port pins. Writing 0s has
no effect. Only bits enabled by 0 in
FIOMASK0 can be altered.
WO FIO0CLR - 0x3FFF C01C FIO1CLR - 0x3FFF C03C FIO2CLR - 0x3FFF C05C FIO3CLR - 0x3FFF C07C FIO4CLR - 0x3FFF C09C
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 37
Bảng 21 Địa chỉ thanh ghi interrupt GPIO
Generic
Name
Description Access Reset
value
PORTn Register
Address & Name
IntEnR GPIO Interrupt Enable for Rising edge. R/W 0x0 IO0IntEnR - 0xE002 8090 IO2IntEnR - 0xE002 80B0
IntEnF GPIO Interrupt Enable for Falling edge R/W IO0IntEnR - 0xE002 8094 IO2IntEnR - 0xE002 80B4
IntStatR GPIO Interrupt Status for Rising edge. RO IO0IntStatR - 0xE002 8084
IO2IntStatR - 0xE002 80A4
IntStatF GPIO Interrupt Status for Falling edge. RO IO0IntStatF - 0xE002 8088 IO2IntStatF - 0xE002 80A8
IntClr GPIO Interrupt Clear. WO IO0IntClr - 0xE002 808C IO2IntClr - 0xE002 80AC
IntStatus GPIO overall Interrupt Status. RO IOIntStatus - 0xE002 8080
I.9.3 Một số code mẫu sử dụng GPIO
Ví dụ 1: Truy cập tuần tự IOSET và IOCLR
Trạng thái cấu hình đầu ra GPIO PIN thì được xác định bằng cách ghi vào chân của thanh ghi
IOSET và IOCLR. Truy cập cuối cùng vào thanh ghi IOSET / IOCLR sẽ quyết định đầu ra cuối cùng
của một chân.
Code mẫu một chương trình đơn giản sử dụng đèn flash :
int main(void)
{
unsigned int delay;
unsigned int flasher = 0x00010000;
IODIR1 = 0x00FF0000; // set tất cả cổng output
Mỗi GPIO PIN thì được điều khiển gồm 4
thanh ghi GPIO.
Hướng đến dữ liệu có 3 thanh ghi là set,
clear, status
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 38
while(1)
{
for(delay = 0;delay<0x10000;delay++) // delay
{
;
}
IOCLR1 = ~flasher; //clear các cổng ouput
IOSET1 = flasher; //set trạng thái của các cổng
flasher = flasher <<1; //shift led
if(flasher&0x01000000) flasher = 0x00010000; // Tăng
flasher lại
}
}
I.10. Ethernet
Bảng 22 Bảng viết tắt, định nghĩa trong phần này
Chữ viết tắt Định nghĩa
AHB Advanced High-performance bus
CRC Cyclic Redundancy Check
DMA Direct Memory Access
Double-word 64 bit entity
FCS Frame Check Sequence (CRC)
Fragment A (part of an) Ethernet frame; one ormultiple fragments can add up to a single
Ethernet frame
Frame An Ethernet frame consists of destination address, source address, length
type field, payload and frame check sequence
Half-word 16 bit entity
LAN Local Area Network
MAC Media Access Control sublaye
MII Media Independent Interface
MIIM MII management
Octet An 8 bit data entity, used in lieu of "byte" by IEEE 802.3
Packet A frame that is transported across Ethernet; a packet consists of a preamble,
a start of frame delimiterand an Ethernet frame.
PHY Ethernet Physical Layer
RMII Reduced MII
Rx Receive
TCP/IP Transmission Control Protocol / Internet Protocol. The most common
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 39
high-level protocol used with Ethernet
Tx Transmit
VLAN Virtual LAN
WoL Wake-up on LAN
Word 32 bit entity
I.10.1 Đặc điểm chung
Ethernet có những hỗ trợ cơ bản sau:
10 or 100 Mbps PHY devices bao gồm 10 Base-T, 100 Base-TX, 100 Base-FX, and 100
Base-T4.
Phù hợp với IEEE 802.3 và 802.3xFull Duplex Flow Control and Half Duplex.
Truyền dẫn linh hoạt.
Hỗ trợ VLAN frame.
Quản lý bộ nhớ :
Truyền dẫn độc lập đồng thời nhận được bộ nhớ đệm ánh xạ vào shared SRAM.
Quản lý DMA với phân tán / tập hợp DMA kèm theo mảng mô tả khung.
Traffic được tối ưu hóa bằng buffering and pre-fetching.
Tính năng nâng cao:
Nhận và lọc dữ liệu.
Hỗ trợ frame Multicast và broadcast cho chả truyền và nhận.
Tự động chèn FCS (CRC) cho truyền.
Có thể lựa chọn frame hình truyền tự động padding.
Có thể nhận chế độ Promiscuous.
Tự động backoff khi đụng độ và truyền lại frame.
Hỗ trợ quản lý năng lượng bằng clock switching.
Hỗ trợ quản lý năng lượng bằng Wake-on-LAN.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 40
I.10.2 Kiến trức
Hình 18 Sơ đồ khối Etherrnet
Sơ đồ khối cho khối Ethernet bao gồm:
Các module thanh ghi host có chứa các thanh ghi trong giao diện phần mềm và xử lý AHB
để truy cập vào khối Ethernet. Thanh ghi host kết nối để truyền và nhận được đường dữ
liệu cũng như MAC.
DMA cung cấp một kết nối cho tổng thể AHB, cho phép khối Ethernet có thể truy cập vào
SRAM Ethernet để đọc các mô tả, viết trạng thái của dữ liệu, đọc và viết vào bộ đệm.
Khối Etherrnet MAC và RMII Adapter kết nối với off-chip PHY.
Đường dữ liệu truyền, bao gồm:
Quản lý Transmit DMA để đọc dữ liệu từ bộ nhớ và viết trạng thái vào bộ nhớ.
Khối transmit retry xử lý khối Ethernet retry và loại tình huống xấu.
Khối transmit flow control có thể chèm Ethernet pause frames
Đường dữ liệu nhận được, bao gồm:
Quản lý Receive DMA đọc từ bộ nhớ và dữ liệu, trạng thái vào bộ nhó.
Khối Ethernet MAC phân loại các frame dựa vào header của frame đó.
Khối receive filter có thể lọc các frame nhờ vào các chương trình lọc riêng biệt.
I.10.3 DMA
Khối Ethernet được thiết kế để cung cấp hiệu suất tối ưu hóa nhờ vào DMA. Các công cụ DMA
được kết nối độc lập với AHB bus truyền dữ liệu từ CPU ARM7.
Bộ mô tả (descriptors) được lưu trữ trong bộ nhớ đồng thời chứa thông tin về fragments đến
hoặc đi của Ethernet frames. Một fragment có thể là một phần dữ liệu hoặc toàn bộ frame. Mỗi bộ mô
tả chứa một con trỏ đến một bộ nhớ đệm chứa dữ liệu liên kết với một fragment, kích thước của bộ
đệm fragment, và chi tiết về cách fragment sẽ được truyền tải hoặc nhận.
Bộ mô tả được lưu trữ trong một mảng trong bộ nhớ và được xác định bằng cách ghi con trỏ
trong khối Ethernet. Các thanh ghi khác xác định kích thước của mảng đó, điểm đến tiếp theo của bộ
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 41
mô tả trong mỗi mảng đó sẽ được sử dụng bởi các công cụ DMA nào, và điểm đến tiếp theo của bộ
mô tả trong mỗi mảng đó sẽ được sử dụng bởi các thiết bị điều khiển Ethernet.
I.10.3 Gói trong Etherrnet
Hình 19 Ethernet packet fields
I.10.4 Mô tả chức năng các chân
Bảng 23 Ethernet RMII pin descriptions
Pin Name Type Pin Description
ENET_TX_EN Output Transmit data enable
ENET_TXD[1:0] Output Transmit data, 2 bits
ENET_RXD[1:0] Input Receive data, 2 bits
ENET_RX_ER Input Receive error.
ENET_CRS Input Carrier sense/data valid
ENET_REF_CLK Input Reference clock
Bảng 24 Ethernet MIIM pin descriptions
Pin Name Type Pin Description
ENET_MDC Output MIIM clock
ENET_MDIO Input/Output MI data input and output
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 42
I.10.5 Địa chỉ thanh ghi
Bảng 25 Địa chỉ thanh ghi Etherrnet
Symbol Address R/W Description
MAC registers
MAC1 0xFFE0 0000 R/W MAC configuration register 1.
MAC2 0xFFE0 0004 R/W MAC configuration register 2.
IPGT 0xFFE0 0008 R/W Back-to-Back Inter-Packet-Gap register.
IPGR 0xFFE0 000C R/W Non Back-to-Back Inter-Packet-Gap register.
CLRT 0xFFE0 0010 R/W Collision window / Retry register.
MAXF 0xFFE0 0014 R/W Maximum Frame register.
SUPP 0xFFE0 0018 R/W PHY Support register.
TEST 0xFFE0 001C R/W Test register.
MCFG 0xFFE0 0020 R/W MII Mgmt Configuration register.
MCMD 0xFFE0 0024 R/W MII Mgmt Command register.
MADR 0xFFE0 0028 R/W MII Mgmt Address register.
MWTD 0xFFE0 002C WO MII Mgmt Write Data register.
MRDD 0xFFE0 0030 RO MII Mgmt Read Data register.
MIND 0xFFE0 0034 RO MII Mgmt Indicators register.
0xFFE0 0038 to
0xFFE0 00FC
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
SA0 0xFFE0 0040 R/W Station Address 0 register.
SA1 0xFFE0 0044 R/W Station Address 1 register.
SA2 0xFFE0 0048 R/W Station Address 2 register.
0xFFE0 004C to
0xFFE0 00FC
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
Control registers
Command 0xFFE0 0100 R/W Command register.
Status 0xFFE0 0104 RO Status register.
RxDescriptor 0xFFE0 0108 R/W Receive descriptor base address register.
RxStatus 0xFFE0 010C R/W Receive status base address register.
RxDescriptorNumber 0xFFE0 0110 R/W Receivenumber of descriptors register.
RxProduceIndex 0xFFE0 0114 RO Receive produce index register.
RxConsumeIndex 0xFFE0 0118 R/W Receive consume index register.
TxDescriptor 0xFFE0 011C R/W Transmit descriptor base address register.
TxStatus 0xFFE0 0120 R/W Transmit status base address register.
TxDescriptorNumber 0xFFE0 0124 R/W Transmit number of descriptors register.
TxProduceIndex 0xFFE0 0128 R/W Transmit produce index register.
TxConsumeIndex 0xFFE0 012C RO Transmit consume index register
0xFFE0 0130 to
0xFFE0 0154
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
TSV0 0xFFE0 0158 RO Transmit status vector 0 register.
TSV1 0xFFE0 015C RO Transmit status vector 1 register.
RSV 0xFFE0 0160 RO Receive status vector register.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 43
0xFFE0 0164 to
0xFFE0 016C
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
FlowControlCounter 0xFFE0 0170 R/W Flow control counter register.
FlowControlStatus 0xFFE0 0174 RO Flow control status register.
0xFFE0 0178 to
0xFFE0 01FC
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
Rx filter registers
RxFliterCtrl 0xFFE0 0200 Receive filter control register.
RxFilterWoLStatus 0xFFE0 0204 Receive filter WoL status register.
RxFilterWoLClear 0xFFE0 0208 Receive filter WoL clear register.
0xFFE0 020C Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
HashFilterL 0xFFE0 0210 Hash filter table LSBs register.
HashFilterH 0xFFE0 0214 Hash filter table MSBs register.
0xFFE0 0218 to
0xFFE0 0FDC
Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
Module control registers
IntStatus 0xFFE0 0FE0 RO Interrupt status register.
IntEnable 0xFFE0 0FE4 R/W Interrupt enable register.
IntClear 0xFFE0 0FE8 WO Interrupt clear register.
IntSet 0xFFE0 0FEC WO Interrupt set register.
0xFFE0 0FF0 Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
PowerDown 0xFFE0 0FF4 R/W Power-down register.
0xFFE0 0FF8 Reserved, user software should not write ones
to reserved bits. The value read from a reserved
bit is not defined.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 44
I.11. CAN
I.11.1 Định nghĩa
Controller Area Network (CAN) là một giao thức truyền thông hiệu suất cao trong truyền thông
dữ liệu nối tiếp. CAN Controller được thiết kế nhằm mục đích cung cấp đủ chức năng của giao thức
CAN.
Vi điều khiển với bộ điều khiển CAN trên chip này được sử dụng để xây dựng mạng lưới khu
vực nào đó một cách mạnh nhất bằng các hỗ trợ thông qua kiểm soát thời gian thực với mức độ bảo
mật rất cao. Một số ứng dụng là : ô tô, công nghiệp, và các mạng tốc độ cao cũng như chi phí thấp,
ghép nối các hệ thống dây điện. Kết quả là hệ thống dây điện giảm mạnh và nâng cao khả năng sửa
chữa và giám sát.
Khối CAN được thiết kế với hỗ trợ đồng thời nhiều CAN bus ví dụ như gateway, switch, hoặc
router. Module CAN bao gồm hai yếu tố: the controller và the Acceptance Filter.
Tất cả các thanh ghi và bộ nhớ RAM được truy cập với 32 bit.
I.11.2 Kiến trúc
Khối điều khiển CAN bao gồm các khối :
APB Interface
Acceptance Filter
Vectored Interrupt Controller (VIC)
CAN Transceiver
Common Status Registers
Hình 20 Khối điều khiển CAN
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 45
Khối giao diện APB (AIB) cung cấp quyền truy cập vào tất cả các thanh ghi điều khiển CAN.
Bộ quản lý giao diện logic (IML) biên dịch các lệnh từ CPU, kiểm soát địa chỉ thanh ghi CAN
và cung cấp thông tin trạng thái và interrupt từ CPU.
Bộ đệm truyền dẫn (TXB) là giao diện giữa quản lý Interface Management Logic (IML) và Bit
Stream Processor (BSP). Mỗi Transmit Buffer có thể lưu trữ tất cả thông tin được truyền trên mạng
CAN được viết bởi CPU và đọc bởi BSP.
Hình 21 Giao diện bố trí của TXB từ cơ bản đến mở rộng
Bộ đệm nhận (RXB) có thể truy cập vào Double Receive Buffer, RXB nằm giữa CAN
Controller Core Block và APB Interface Block và stores chứa tất cả thông tin nhận được từ CAN Bus
line. Với sự hỗ trợ từ Double Receive Buffer thì RXB có thể xử lý một thông điệp trong khi một tin
nhắn đang được nhận.
Hình 22 Giao diện bố trí của RXB từ cơ bản đến mở rộng
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 46
Bộ quản lý lỗi Logic (EML) chịu trách nhiệm về hạn chế lỗi. EML được thông báo lỗi từ BSP
và sau đó thông báo cho BSP và IML về thống kê lỗi.
Bit Timing Logic (BTL) kiểm soát serial CAN Bus line và xử lý các Bus line liên quan đến Bit
Timing. BTL còn dùng để đồng bộ trên phần cứng (hard synchronization) cũng như tái đồng bộ trên
phần mềm (soft synchronization) nếu cần thiết trong tương lai.
Bit Stream Processor (BSP) là một chuỗi, kiểm soát luồng dữ liệu giữa Transmit Buffer,
Receive Buffers và CAN Bus.
CAN controller self-tests bao gồm hai tùy chọn sau : Global Self-Test (thiết lập các yêu cần tự
nhân bit trong chế độ bình thường - normal Operating Mode) và Local Self-Test (thiết lập các yêu cần
tự nhân bit trong chế độ tự kiểm tra - Self Test Mode).
I.11.3 Địa chỉ bộ nhớ
Bảng 26 Địa chỉ bộ nhớ của khối CAN
Address Range Used for
0xE003 8000 - 0xE003 87FF Acceptance Filter RAM.
0xE003 C000 - 0xE003 C017 Acceptance Filter Registers.
0xE004 0000 - 0xE004 000B Central CAN Registers.
0xE004 4000 - 0xE004 405F CAN Controller 1 Registers.
0xE004 8000 - 0xE004 805F CAN Controller 2 Registers.
I.11.4 Thanh ghi điều khiển CAN
Bảng 27 Địa chỉ thanh ghi điều khiển CAN
Generic
Name
Description Access CAN1 Register
Address &
Name
CAN2 Register
Address &
Name
MOD Controls the operating mode of the
CAN Controller.
R/W CAN1MOD -
0xE004 4000
CAN2MOD -
0xE004 8000
CMR Command bits that affect the state of
the CAN Controller.
WO CAN1MOD -
0xE004 4004
CAN2MOD -
0xE004 8004
GSR Global Controller Status and Error
Counters
RO CAN1MOD -
0xE004 4008
CAN2MOD -
0xE004 8008
ICR Interrupt status, Arbitration Lost
Capture, Error Code Capture
RO CAN1MOD -
0xE004 400C
CAN2MOD -
0xE004 800C
IER Interrupt Enable R/W CAN1MOD -
0xE004 4010
CAN2MOD -
0xE004 8010
BTR Bus Timing R/W CAN1MOD -
0xE004 4014
CAN2MOD -
0xE004 8014
EWL Error Warning Limit R/W CAN1MOD -
0xE004 4018
CAN2MOD -
0xE004 8018
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 47
SR Status Register RO CAN1MOD -
0xE004 401C
CAN2MOD -
0xE004 801C
RFS Receive frame status R/W CAN1MOD -
0xE004 4020
CAN2MOD -
0xE004 8020
RID Received Identifier R/W CAN1MOD -
0xE004 4024
CAN2MOD -
0xE004 8024
RDA Received data bytes 1-4 R/W CAN1MOD -
0xE004 4028
CAN2MOD -
0xE004 8028
RDB Received data bytes 5-8 R/W CAN1MOD -
0xE004 402C
CAN2MOD -
0xE004 802C
TFI1 Transmit frame info (Tx Buffer 1) R/W CAN1MOD -
0xE004 4030
CAN2MOD -
0xE004 8030
TID1 Transmit Identifier (Tx Buffer 1) R/W CAN1MOD -
0xE004 4034
CAN2MOD -
0xE004 8034
TDA1 Transmit data bytes 1-4 (Tx Buffer 1 R/W CAN1MOD -
0xE004 4038
CAN2MOD -
0xE004 8038
TDB1 Transmit data bytes 5-8 (Tx Buffer
1)
R/W CAN1MOD -
0xE004 403C
CAN2MOD -
0xE004 803C
TFI2 Transmit frame info (Tx Buffer 2) R/W CAN1MOD -
0xE004 4040
CAN2MOD -
0xE004 8040
TID2 Transmit Identifier (Tx Buffer 2) R/W CAN1MOD -
0xE004 4044
CAN2MOD -
0xE004 8044
TDA2 Transmit data bytes 1-4 (Tx Buffer
2)
R/W CAN1MOD -
0xE004 4048
CAN2MOD -
0xE004 8048
TDB2 Transmit data bytes 5-8 (Tx Buffer
2)
R/W CAN1MOD -
0xE004 404C
CAN2MOD -
0xE004 804C
TFI3 Transmit frame info (Tx Buffer 3) R/W CAN1MOD -
0xE004 4050
CAN2MOD -
0xE004 8050
TID3 Transmit Identifier (Tx Buffer 3) R/W CAN1MOD -
0xE004 4054
CAN2MOD -
0xE004 8054
TDA3 Transmit data bytes 1-4 (Tx Buffer
3)
R/W CAN1MOD -
0xE004 4058
CAN2MOD -
0xE004 8058
TDB3 Transmit data bytes 5-8 (Tx Buffer
3)
R/W CAN1MOD -
0xE004 405C
CAN2MOD -
0xE004 805C
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 48
I.12. USB
I.12.1 Định nghĩa
Universal Serial Bus (USB) là 1 bus có bốn dây hỗ trợ liên kết giữa một máy chủ với một hoặc
nhiều (lên đến 127) thiết bị ngoại vi. Bộ điều khiển máy chủ cấp phát băng thông cho USB với các
thiết bị gắn vào thông qua giao thức token. Các bus hỗ trợ cắm vào và cấu hình động cho các thiết bị.
Mọi giao dịch được vận hành bởi các bộ điều khiển máy chủ.
I.12.2 Kiến trúc
Hình 23 Sơ đồ khối thiết bị điều khiển USB
Bộ Truyền tín hiệu Analog: Các thiết bị điều khiển USB có tích hợp bộ thu phát tương tự
(ATX). ATX USB gửi / nhận được tín hiệu hai chiều D + và D- của USB bus.
Bộ Serial Interface Engine (SIE): là hardwired có tốc độ rất nhanh và không cần sự can thiệp
của firmware. Nó xử lý chuyển giao dữ liệu giữa các thiết bị đầu cuối trong bộ đệm EP_RAM và
USB bus. Các chức năng của khối này bao gồm: synchronization pattern recognition, parallel/serial
conversion, bit stuffing/de-stuffing, CRC checking/generation, PID verification/generation, address
recognition, and handshake evaluation/generation.
Bộ Endpoint RAM (EP_RAM): là bộ đệm đầu cuối được thực hiện như một SRAM dựa trên
giải thuật FIFO.
Bộ điều khiển địa chỉ EP_RAM: xử lý logic chuyển dữ liệu đi / đến EP_RAM. Ba nguồn có
thể truy cập nó: CPU, SIE, và DMA.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 49
Bộ giao diện thanh ghi: cho phép CPU điều khiển hoạt động của các thiết bị điều khiển USB.
Nó cũng cung cấp một cách để viết truyền dữ liệu đến bộ điều khiển và đọc nhận dữ liệu từ bộ điều
khiển.
Bô DMA và giao diện bus chủ: Khi được kích hoạt cho một thiết bị đầu cuối, dữ liệu chuyển
đến DMA giữa RAM nhờ vào AHB bus và bộ đệm của thiết bị đầu cuối trong EP_RAM.
GoodLink: Good USB connection indication được cung cấp thông qua công nghệ GoodLink.
Khi các thiết bị được cấu hình thành công thì các đèn LED sẽ ON vĩnh viễn và trong quà trình
suspend thì LED sẽ OFF.
I.12.3 Địa chỉ thanh ghi
Bảng 28 Địa chỉ thanh ghi thiết bị USB
Name Description Access Reset value
Address
Port select egister (LPC2378 only)
USBPortSel USB Port Select R/W 0x0000 0000
0xFFE0 C110
Clock control registers
USBClkCtrl USB Clock Control R/W 0x0000 0000 0xFFE0 CFF4
USBClkSt USB Clock Status RO 0x0000 0000 0xFFE0 CFF8
Device interrupt registers
USBIntSt USB Interrupt Status R/W 0x8000 0000 0xE01F C1C0
USBDevIntSt USB Device Interrupt Status RO 0x0000 0010 0xFFE0 C200
USBDevIntEn USB Device Interrupt Enable R/W 0x0000 0000 0xFFE0 C204
USBDevIntClr USB Device Interrupt Clear WO 0x0000 0000 0xFFE0 C208
USBDevIntSet USB Device Interrupt Set WO 0x0000 0000 0xFFE0 C20C
USBDevIntPri USB Device Interrupt Priority WO 0x00 0xFFE0 C22C
Endpoint interrupt registers
USBEpIntSt USB Endpoint Interrupt Status RO 0x0000 0000 0xFFE0 C230
USBEpIntEn USB Endpoint Interrupt Enable R/W 0x0000 0000 0xFFE0 C234
USBEpIntClr USB Endpoint Interrupt Clear WO 0x0000 0000 0xFFE0 C238
USBEpIntSet USB Endpoint Interrupt Set WO 0x0000 0000 0xFFE0 C23C
USBEpIntPri USB Endpoint Priority WO 0x0000 0000 0xFFE0 C240
Endpoint realization registers
USBReEp USB Realize Endpoint R/W 0x0000 0003 0xFFE0 C244
USBEpInd USB Endpoint Index WO 0x0000 0000 0xFFE0 C248
USBMaxPSize USB MaxPacketSize R/W 0x0000 0008 0xFFE0 C24C
USB transfer registers
USBRxData USB Receive Data RO 0x0000 0000 0xFFE0 C218
USBRxPLen USB Receive Packet Length RO 0x0000 0000 0xFFE0 C220
USBTxData USB Transmit Data WO 0x0000 0000 0xFFE0 C21C
USBTxPLen USB Transmit Packet Length WO 0x0000 0000 0xFFE0 C224
USBCtrl USB Control R/W 0x0000 0000 0xFFE0 C228
SIE Command registers
USBCmdCode USB Command Code WO 0x0000 0000 0xFFE0 C210
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 50
USBCmdData USB Command Data RO 0x0000 0000 0xFFE0 C214
DMA registers
USBDMARSt USB DMA Request Status RO 0x0000 0000 0xFFE0 C250
USBDMARClr USB DMA Request Clear WO 0x0000 0000 0xFFE0 C254
USBDMARSet USB DMA Request Set WO 0x0000 0000 0xFFE0 C258
USBUDCAH USB UDCA Head R/W 0x0000 0000 0xFFE0 C280
USBEpDMASt USB Endpoint DMA Status RO 0x0000 0000 0xFFE0 C284
USBEpDMAEn USB Endpoint DMA Enable WO 0x0000 0000 0xFFE0 C288
USBEpDMADis USB Endpoint DMA Disable WO 0x0000 0000 0xFFE0 C28C
USBDMAIntSt USB DMA Interrupt Status RO 0x0000 0000 0xFFE0 C290
USBDMAIntEn USB DMA Interrupt Enable R/W 0x0000 0000 0xFFE0 C294
USBEoTIntSt USB End of Transfer Interrupt
Status
RO 0x0000 0000 0xFFE0 C2A0
USBEoTIntClr USB End of Transfer Interrupt
Clear
WO 0x0000 0000 0xFFE0 C2A4
USBEoTIntSet USB End of Transfer Interrupt
Set
WO 0x0000 0000 0xFFE0 C2A8
USBNDDRIntSt USB New DD Request Interrupt
Status
RO 0x0000 0000 0xFFE0 C2AC
USBNDDRIntClr USB New DD Request Interrupt
Clear
WO 0x0000 0000 0xFFE0 C2B0
USBNDDRIntSet USB New DD Request Interrupt
Set
WO 0x0000 0000 0xFFE0 C2B4
USBSysErrIntSt USB System Error Interrupt
Status
RO 0x0000 0000 0xFFE0 C2B8
USBSysErrIntClr USB SystemError Interrupt
Clear
WO 0x0000 0000 0xFFE0 C2BC
USBSysErrIntSet USB SystemError Interrupt Set WO 0x0000 0000 0xFFE0 C2C0
I.13. UART
I.13.1 Giới thiệu
Trước hết UART là gì: Universal Asynchronous Receiver Transmitter.
Dùng để truyền và nhận dữ liệu nối tiếp. LPC2378 hỗ trợ 4 bộ truyền nhận nối tiếp UART0,
UART1, UART2 và UART3 (truyền nhận 16 byte với cơ chế FIFO). Tiếp theo chúng ta sẽ xem xét
đến phần kiến trúc của UART.
I.13.2 Kiến trúc
Mọi sự truyền nhận thông tin giữa CPU và UART đều thông qua APB
Việc nhận tín hiệu của UART : thông qua chân RXD và đi vào thanh ghi dịch (UnRSR) sau
đó dữ liệu sẽ được chuyển qua thanh ghi chứa dữ liệu (UART RX Buffer Register FIFO) và dữ liệu
sẽ ở đây chờ CPU tới đọc.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 51
Việc truyền tín hiệu của UART : cũng tương tự như thế, CPU truyền dữ liệu vào trong buffer
ở trong thanh ghi UnTHR (UART TX Holding Register FIFO), sau đó dữ liệu từ thanh ghi này được
chuyển sang thanh ghi dịch (UnTSR) và từ từ truyền ra ngoài thông qua chân TXD
Về tốc độ truyền dữ liệu UART cho phép cho thiết lập tốc độ baud thông qua các thanh ghi.
Và ta phải tự tìm ra tốc độ baud nào hợp lý nhất (tức xác suất lỗi trên đường truyền ít nhất) Vấn đề
này sẽ được thảo luận trong phần sau.
Các sự thiết lập interrupt ở trong thanh ghi UnIER và UnIIR
Thông tin từ việc truyền nhận (2 chân TX và RX) được lưu trong thanh ghi UnLSR.
Thông tin điều khiển nằm ở trong thanh ghi UnLCR
Hình 24 Sơ đồ khối LPC2300 UART0, 2 và 3
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 52
Hình 25 Sơ đồ khối LPC2300 UART1
UART giao tiếp với bên ngoài qua 2 chân TXD và RXD.
Bộ Interrupt : điều khiển việc interrupt, lưu trữ status và khi nào có interrupt sẽ đẩy ra chân
UnINTR
Bộ điều khiển Clock UnBRG điều khiển việc sinh ra CLK từ 2 dữ liệu vào là UnDLL và
UnDLM
Bộ truyền dữ liệu : UnTX có 2 thanh ghi : thanh ghi chứa dữ liệu và thanh ghi truyền serial ra
ngoài thông qua chân TXD
Bộ nhận dữ liệu : UnRX gồm có 2 thanh ghi là thanh ghi chứa dữ liệu và thanh ghi truyền
serial. Dữ liệu nhận vào ở chân RXD sẽ đẩy vào thanh ghi truyền serial rồi đưa vào thanh ghi nhận dữ
liệu.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 53
I.13.3 Địa chỉ thanh ghi
I.13.3.1 UnRBR - UART Receiver Buffer Register (U0RBR - 0xE000 C000, U1RBR
- 0xE001 C000, U2RBR - 0xE007 8000, U3RBR - 0xE007 C000 khi DLAB =0)
UnRBR là thanh ghi chỉ đọc (read only, chứa 8 bit data) chứa thong tin cũ nhất có thể
được đọc bới CPU. Để truy xuất được vào thanh ghi này thì bit DLAB trong thanh ghi LCR
phải là 0.
I.13.3.2 UnTHR - UART Transmit Holding Register (U0THR - 0xE000 C000,
U1THR - 0xE001 0000, U2THR - 0xE007 8000, U3THR - 0xE007 C000 khi DLAB = 0)
UnTHR cũng tương tự thanh ghi UnRBR nhưng nó dùng để truyền dữ liệu nên nó sẽ
là thanh ghi chứa dữ liệu mới nhất được truyền. UnTHR là thanh ghi chỉ ghi (write only, 8 bit
data) DLAB phải là 0 khi ta truy xuất vào thanh ghi này.
I.13.3.3 UnIER - UART Interrupt Enable Register (U0IER - 0xE000 C004, U1IER
- 0xE001 0004, U2IER - 0xE007 8004, U3IER - 0xE007 C004 khi DLAB = 0)
UnIER được sử dụng để kích hoạt 3 interrupt (RBR interrupt, THRE interrupt, RX Line
Status Interrupt) và cho phép auto-baud rate và time out. Chi tiết tham khảo trang 333.
I.13.3.4 UnIIR - UART Interrupt Identification Register (U0IIR - 0xE000 C008,
U1IIR - 0xE001 0008, U2IIR - 0xE007 8008, U3IIR - 0x7008 C008)
UnIIR cung cấp cho chúng ta đó là interrupt gì và độ ưu tiên của nó như thế nào. Nếu
một interrupt xảy ra trong quá trình truy cập UnIIR, interrupt sẽ được ghi nhận cho việc truy
cập UnIIR tiếp theo.
Về độ ưu tiên interrupt thì có 3 độ ưu tiên:
Receive Line Status (RLS) (ưu tiên cao nhất)
Receive Data available (RDA) (ưu tiên mức 2)
Character Time out Indicator (CTI) (ưu tiên mức 2)
THRE interrupt
I.13.3.5 UnDLL - UART Divisor Latch LSB Register và UnDLM - UART Divisor
Latch MSB Registers (U0DLL - 0xE000 C000, U1DLL - 0xE001 0000 , U1DLM - 0xE001
0004 , U2DLL - 0xE007 8000, U3DLL - 0xE007 C000 và U0DLM - 0xE000 C004, U2DLL
- 0xE007 8004, U3DLL - 0xE007 C004 khi DLAB = 1)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 54
UnDLL là một phần của UART Baud Rate Generator. Thanh ghi UnDLL và UnDLM
dùng để chia một số 16 bit, thanh ghi UnDLL chứa 8 bit thấp còn thanh ghi UnDLM chứa 8
bit cao.
I.13.3.6 UnFCR - UART FIFO Control Register (U0FCR - 0xE000 C008, U1FCR
- 0xE001 0008, U2FCR - 0xE007 8008, U3FCR - 0xE007 C008)
UnFCR thanh ghi điều khiển các hoạt động của UARTn Rx và TX FIFOs
I.13.3.7 UnLCR - UART Line Control Register (U0LCR - 0xE000 C00C, U1LCR -
0xE001 000C , U2LCR - 0xE007 800C, U3LCR - 0xE007 C00C)
UnLCR thiết lập các định dạng để truyền và nhận.
I.13.3.8 UnLSR - UART Line Status Register ((U0LSR - 0xE000 C014, U1LCR -
0xE001 000C, U2LSR - 0xE007 8014, U3LSR - 0xE007 C014)
UnLSR chứa các thông tin về việc truyền nhận (lỗi, thanh ghi chứa dữ liệu đang rỗng ).
I.13.3.9 UnSPR - UART Scratch Pad Register (U0SCR - 0xE000 C01C, U1SCR -
0xE001 001C , U2SCR - 0xE007 801C U3SCR - 0xE007 C01C)
UnSCR không ảnh hưởng đến hoạt động UARTn. Thanh ghi này cho phép viết and /
or và đọc theo quyết định của người dùng.
I.13.3.10 UnACR - UART Auto-baud Control Register (U0ACR - 0xE000 C020,
U1ACR - 0xE001 0020 , U2ACR - 0xE007 8020, U3ACR - 0xE007 C020)
UnACR kiểm soát quá trình đo tốc độ clock / dữ liệu và có thể được đọc và viết theo
ý của người dùng.
I.13.3.11 UFDR - UART Fractional Divider Register (U0FDR - 0xE000 C028,
U1FDR - 0xE001 0028 , U2FDR - 0xE007 8028, U3FDR - 0xE007 C028)
UFDR kiểm soát clock pre-scaler của các baud rate và có thể được đọc/viết theo ý
của người dùng.
I.13.3.12 Auto – Flow Chart
Để khởi động cho UART đầu tiên ta phải thiết lập chân TXD và RXD cho nó
UART0 (có chân TXD0 là P0.2 và RXD0 là P0.3)
UART1 (có chân TXD1 là P0.15 và RXD1 là P0.16)
UART2 (có chân TXD2 là P0.2 và RXD2 là P0.3)
UART3 (có chân TXD3 là P0.0 hay P4.28 và RXD3 là P0.1 hay P4.29)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 55
Như ta đã biết 1 chân có thể có nhiều chức năng và muốn nó làm chức năng gì ta phải
thiết lập cho nó thông qua thanh ghi PINSEL.
VD : ta thiết lập cho UART0 thì dùng câu lệnh sau :
PINSEL0 |= 0x00000050; /* RxD0 and TxD0 */
PINSEL0 &= ~0xA0;
Tiếp theo thiết lập thanh ghi điều khiển UnLCR (để tạo format cho việc truyền nhận)
(Như có sử dụng Parity checking không? Sử dụng bao nhiêu bit Stop bit …)
Set tốc độ baud
Các thanh ghi dùng để set tốc độ baud: UnACR, UnFDR,UnDLL, UnDLM
UnACR để thiết lập mode (Có 2 mode: mode 0 và mode 1), khởi động auto baud, kết
thúc auto baud
Mode 0: Baud rate được tính toán dựa trên 2 cạnh xuống của chân RX (1 cạnh
xuống là của Start bit và 1 cạnh xuống là của tín hiệu dữ liệu)
Hình 26 Autobaud ở mode 0
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 56
Mode 1: Baud rate được tính toán giữa cạnh xuống và cạnh lên của Start bit (nó
chính là độ dài của Start bit)
Hình 27 Autobaud ở mode 1
Auto baud có thể sinh ra 2 interupt: UnIIR ABTOInt interrupt (khi counter overflow)
và UnABEOInt interrupt khi mà auto baud thành công
Baud rate phải nằm trong khoảng này:
𝑟𝑎𝑡𝑒𝑚𝑖𝑛 = 2 × 𝑃𝐶𝐿𝐾
16 × 215 ≤ 𝑈𝐴𝑅𝑇𝑛𝑏𝑎𝑢𝑑𝑟𝑎𝑡𝑒 ≤
𝑃𝐶𝐿𝐾
16 × (2 + 𝑑𝑎𝑡𝑎𝑏𝑖𝑡𝑠 + 𝑝𝑎𝑟𝑖𝑡𝑦𝑏𝑖𝑡𝑠 + 𝑠𝑡𝑜𝑝𝑏𝑖𝑡𝑠)= 𝑟𝑎𝑡𝑒𝑚𝑎𝑥
Công thức tính tốc độ baud:
𝑈𝐴𝑅𝑇𝑛𝑏𝑎𝑢𝑑𝑟𝑎𝑡𝑒 = 𝑃𝐶𝐿𝐾
16 256 𝑈𝑛𝐷𝐿𝑀 × 𝑈𝑛𝐷𝐿𝐿 + (1+ 𝐷𝑖𝑣𝐴𝑑𝑑𝑉𝑎𝑙
𝑀𝑢𝑙𝑉𝑎𝑙)
Mặc dù có công thức để tính nhưng tốc độ baud vẫn không phải là tốc độ truyền sinh
ra ít lỗi nhất. Bây giờ ta sẽ xem xét 1 giải thuật tính toán để sinh ra được baud rate hợp lý nhất.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 57
Hình 28 Sơ đồ flow chart
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 58
Cài đặt hàm interrupt: Xem lại phần thiết lập các interrupt để biết rõ hơn
Công việc cuối cùng là kích hoạt cho UART bắt đầu hoạt động:
VD: cho UART0
#define IER_RBR 0x01
#define IER_THRE 0x02
#define IER_RLS 0x04
U0IER = IER_RBR | IER_THRE | IER_RLS;
Gửi dữ liệu:
Kiểm tra cờ cho phép gửi nếu cho phép thì đưa 1 byte dữ liệu vào thanh ghi
UnTHR, tắt cờ cho phép gửi.
Khi nào gửi xong thì cờ sẽ tự động bật lên (trong làm interrupt)
Tiếp tục gửi cho đến khi hết dữ liệu
Nhận dữ liệu: Được thực hiện luôn trong hàm interrupt
Kiểm tra thanh ghi UnLSR, nếu bit 0 Receive Data Ready RDR là 1 tức là đang có
dữ liệu
Đọc thanh UnRBR để lấy dữ liệu (Khi ta đọc thanh ghi này thì cờ interrupt trong
UnLSR tự động bị xóa đi)
VD khởi động UART0
#define IER_RBR 0x01
#define IER_THRE 0x02
#define IER_RLS 0x04
PINSEL0 |=0x00000050; //set RxD0 va TxD0
PINSEL0 &=~0xA0;
U0LCR=0x83 ; //8 bits, không parity,1 stop bit
Fdiv=(Fpclk /16) / baudrate;
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 59
I.14. SPI
I.14.1 Định nghĩa
SPI là giao diện kết nối full – duplex. SPI có thể xử lý masters và slaves được kết nối thông
qua các bus. Chỉ có thể giao tiếp giữa một master và một slave trên giao diện trong một truyền dữ
liệu nhất định. Trong một truyền dữ liệu, master luôn luôn gửi 8-16 bit dữ liệu cho các slave, và slave
luôn luôn gửi một byte dữ liệu đến master.
I.14.2 Truyền dữ liệu trong SPI
Hình sau đây là một sơ đồ thời gian để minh họa bốn định dạng truyền dữ liệu khác nhau mà
có sẵn với SPI. Sơ đồ thời gian này minh họa một truyền dữ liệu 8-bit duy nhất.
Hình 29 Truyền dữ liệu trong SPI (CPHA = 0 và CPHA = 1)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 60
Bảng 29 Mối quan hệ giữa dữ liệu SPI và giai đoạn của Clock
CPOL and CPHA
settings
First data driven Other data driven Data sampled
CPOL = 0, CPHA = 0 Prior to first SCK risingedge SCK falling edge SCK rising edge
CPOL = 0, CPHA = 1 First SCK rising edge SCK rising edge SCK rising edge
CPOL = 1, CPHA = 0 Prior to first SCK falling edge SCK rising edge SCK rising edge
CPOL = 1, CPHA = 1 First SCK falling edge SCK falling edge SCK rising edge
I.14.3 Địa chỉ thanh ghi
Bảng 30 Địa chỉ thanh ghi trong SPI
Name Description Access Reset
Value
Address
S0SPCR SPI Control Register. This register
controls the operation of the SPI.
R/W 0x00 0xE002 0000
S0SPSR SPI Status Register. This register shows
the status of the SPI.
RO 0x00 0xE002 0004
S0SPDR SPI Data Register. This bi-directional
register provides the transmit and
receive data for the SPI. Transmit data is
provided to the SPI0 by writing to this
register. Data received by the SPI0 can
be read from this register.
R/W 0x00 0xE002 0008
S0SPCCR SPI Clock Counter Register. This
register controls the frequency of a
master’s SCK0.
R/W 0x00 0xE002 000C
S0SPINT
SPI Interrupt Flag. This register contains
the interrupt flag for the SPI interface.
R/W 0x00 0xE002 001C
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 61
I.14.3.1 SPI Control Register (S0SPCR - 0xE002 0000)
S0SPCR thanh ghi điều khiển thiết lập các bit hoạt động của SPI0 như bảng dưới đây.
Bảng 31 Mô tả chức năng các bit của thanh ghi S0SPCR
Bit Symbol Value Description Reset
Value
1:0 - - Reserved, user software should not write ones to reserved
bits. The value read from a reserved bit is not defined.
NA
2 BitEnable 0 The SPI controller sends and receives 8 bits of data per
transfer.
0
1 The SPI controller sends and receives the number of bits
selected by bits 11:8.
3 CPHA 0 Clock phase control determines the relationship between
the data and the clock on SPI transfers, and controls when
a slave transfer is defined as starting and ending. Data is
sampled on the first clock edge of SCK. A transfer starts
and ends with activation and deactivation of the SSEL
signal.
0
1 Data is sampled on the second clock edge of the SCK. A
transfer starts with the first clock edge, and ends with the
last sampling edge when the SSEL signal is active.
4 CPOL 0 Clock polarity control.
SCK is active high.
0
1 SCK is active low.
5 MSTR 0 Master mode select.
The SPI operates in Slave mode.
0
1 The SPI operates in Master mode.
6 LSBF 0 LSB First controls which direction each byte is shifted 0
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 62
when transferred.SPI data is transferred MSB (bit 7) first.
1 SPI data is transferred LSB (bit 0) first.
7 SPIE 0 Serial peripheral interrupt enable.
SPI interrupts are inhibited.
0
1 A hardware interrupt is generated each time the SPIF or
MODF bits are activated.
11:8 BITS - When bit 2 of this registeris 1, this field controls the
number of bits per transfer:
0000
1000 8 bits per transfer
1001 9 bits per transfer
1010 10 bits per transfer
1011 11 bits per transfer
1100 12 bits per transfer
1101 13 bits per transfer
1110 14 bits per transfer
1111 15 bits per transfer
0000 16 bits per transfer
15:12 - - Reserved, user software should not write ones to reserved
bits. The value read from a reserved bit is not defined.
NA
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 63
I.14.3.2 SPI Status Register (S0SPSR - 0xE002 0004)
S0SPSR thanh ghi điều khiển thiết lập các bit hoạt động của SPI0 như bảng dưới đây.
Bảng 32 Mô tả chức năng các bit của thanh ghi S0SPSR
Bit Symbol Description Reset
Value
2:0 - Reserved, user software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
NA
3 ABRT Slave abort. When 1, this bit indicates that a slave abort has occurred. This
bit is cleared by reading this register.
0
4 MODF Mode fault. when 1, this bit indicates that a Mode fault error has occurred.
This bit is cleared by reading this register, then writing the SPI0 control
register.
5 ROVR Read overrun. When 1, this bit indicates that a read overrun has occurred.
This bit is cleared by reading this register.
6 WCOL Write collision. When 1, this bit indicates that a write collision has
occurred. This bit is cleared by reading this register, then accessing the SPI
data register.
7 SPIF SPI transfer complete flag. When1, this bit indicates when a SPI data
transfer is complete. When a master, this bit is set at the end of the last cycle
ofthe transfer. When a slave, this bit is set on the last data sampling edge
of the SCK. This bit is cleared by first reading this register, then accessing
the SPI data register.
Note:this is not the SPI interrupt flag. This flag is found in the
SPINT register.
I.14.3.3 SPI Data Register(S0SPDR - 0xE002 0008)
Thanh ghi dữ liệu 2 chiều cung cấp khả năng truyền và nhận cho SPI. Dữ liệu truyền
thì được cung cấp nhờ SPI và được viết vào thanh ghi này. Tương tự dữ liệu nhận từ SPI cũng
được đọc từ thanh ghi này. Khi một master hoạt động, thanh ghi sẽ bắt đầu việc viết dữ liệu,
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 64
khi SPIF status được set thì dữ liệu truyền bị block, đồng thời trạng thái thanh ghi sẽ không
được đọc nữa.
I.14.3.4 SPI Clock Counter Register (S0SPCCR - 0xE002 000C)
Thanh ghi này điều khiển tần số SCK, đồng thời cho số chu kì PCLK tạo nên 1 clock
SPI. Giá trị của thanh ghi này phải luôn luôn là số chẵn dẫn đến bit 0 luon luôn là 0. Đồng thời
giá trị của thanh ghi luôn luôn lớn hơn hoặc bằng 8.
I.14.3.5 SPI Test Control Register (SPTCR - 0xE002 0010)
Các bit của thanh ghi SPTCR chỉ nhằm vào mục địch nhất định, không sử động trong
các chức năng bình thường. Có thể tham khảo thêm bảng dưới đây.
Bảng 33 Mô tả các bit của thanh ghi SPTCR
Bit Symbol Description Reset
Value
0 - Reserved, user software should not write ones to reserved bits. The value
read from a reserved bit is not defined
NA
7:1 Test SPI test mode. When 0, the SPI operates normally. When 1, SCK will
always be on, independent of master mode select, and data availability
setting.
0
I.14.3.6 SPI Test Status Register (SPTSR - 0xE002 0014)
Các bit của thanh ghi SPTCR chỉ nhằm vào mục địch nhất định, không sử động trong
các chức năng bình thường. Có thể tham khảo thêm bảng dưới đây.
Bảng 34 Mô tả các bit của thanh ghi SPTSR
Bit Symbol Description Reset
Value
2:0 - Reserved, user software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
NA
3 ABRT Slave abort. 0
4 MODF Mode fault.
5 ROVR Read overrun.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 65
6 WCOL Write collision.
7 SPIF SPI transfer complete flag
I.14.3.7 SPI Interrupt Register (S0SPINT - 0xE002 001C)
Thanh ghi chứa các cờ của interrupt.
I.14.4 Kiến trúc
Hình 30 Sơ đồ khối SPI
Khối SPI bao gồm:
Bộ SPI REGISTER INTERFACE
Bộ SPI SHIFT REGISTER
Bộ SPI CLOCK GENERATOR &DETECTOR
Bộ SPI STATE CONTROL
Bộ OUTPUT ENABLE LOGIC
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 66
I.15. I2C
I.15.1 Giới thiệu
I2C là giao thức để kết nối với các thiết bị bên ngoài, như LCD, bộ nhớ ngoài, ...
Giao tiếp chuẩn I2C, có thể thiết lập ở chế độ Master, Slave hay Master/Slave.
Cơ chế trọng tài, cho phép truyền nhận dữ liệu liên tục mà không bị gián đoạn dữ liệu.
Xung có thể thay đổi phù hợp với tốc độ truyền.
Truyền nhận 2 chiều giữa Master và Slave.
Đồng bộ bằng xung tuần tự cho phép nhiều thiết bị với tốc độ truyền nhận khác nhau
giao tiếp trên cùng một kênh.
I.15.2 Nguyên lý hoạt động của I2C
Có 2 loại dữ liệu được chấp nhận trên kênh truyền I2C.
Dữ liệu được gửi từ Master đến Slave. Byte đầu tiên là địa chỉ của Slave. Sau đó là chuỗi
byte dữ liệu cần truyền. Slave cần gửi trả về ACK đối với mỗi byte đã nhận.
Dữ liệu gửi từ Slave đến Master. Slave nhận byte đầu tiên, cũng là địa chỉ của Slave, được
gửi bởi Master. Slave trả về ACK. Sau đó Salve gửi chuỗi byte dữ liệu cần truyền. Master
cần gửi trả về ACK đối với mỗi byte đã nhận, ngoại trừ byte dữ liệu cuối cùng. Sau khi nhận
tất cả các byte dữ liệu, Master sẽ gửi NACK. Master cũng là thiết bị tạo ra tất cả các xung
đồng bộ và tín hiệu START / STOP. Trước khi tín hiệu START (cũng là tín hiệu bắt đầu
của một quá trình chuyển dữ liệu tuầu tự khác), kênh truyền I2C sẽ vẫn được tích cực.
Giao thức I2C hướng đến byte, và hoạt động ở 4 chế độ : Master truyền, Master nhận, Slave
truyền và Slave nhận. LPC2300 có 3 giao tiếp I2C, riêng bộ I2C[0] có thể điều khiển tắt thiết bị
LPC2300 mà không ảnh hưởng đến các thiết bị còn lại trên kênh truyền.
I.15.3 Các chế độ hoạt động của I2C
I.15.3.1 Master truyền.
Khi đó Master ở chế độ truyền và Slave ở chế độ nhận. Thanh ghi I2CONSET phải
được thiết lập như sau. I2EN phải được gán = 1 để kích hoạt chức năng I2C. Nếu bit AA = 0
thì giao tiếp I2C sẽ nhận ra bất cứ địa chỉ nào nếu có một thiết bị khác đang là Master trên kênh
truyền.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 67
Bảng 35 Thanh ghi I2CnCONSET được sử dụng trong chế độ Master
Bit 7 6 5 4 3 2 1 0
Symbol - I2EN STA STO SI AA - -
Value - 1 0 0 0 0 - -
Trong chế độ này, bit R/W nên là 0, tức là “ghi”. Byte đầu tiên gửi đi chứ địa chỉ của
thiết bị nhận (7 bit) và bit R/W quyết định chiều của dữ liệu. Giao tiếp I2C sẽ khởi động vào
chế độ Master truyền khi chương trình phần mềm gán STA = 1. Giao tiếp I2C sẽ gửi tín hiệu
START khi kênh truyền rãnh. Sau khi START được truyền, bit SI sẽ được gán = 1, và giá trị
của thanh ghi I2STAT là 0x08. Byte gồm địa chỉ của Slave và bit R/W được truyền vào thanh
ghi I2DAT, sau đó bit SI được xoá = 0. Bit SI được xoá bằng cách gán 1 vào bit SIC trong
thanh ghi I2CONCLR.
Sau khi truyền byte chứa địa chỉ Slave và bit R/W, và ACK được trả về, bit SI lại được
gán = 1, thanh ghi I2STAT lúc này có thể mang giá trị 0x18, 0x20 hay 0x38 (ở chế độ Master);
0x66, 0x78 hay 0xB0 (ở chế độ Slave).
Hình 31 Định dạng ở chế độ Master truyền
I.15.3.2 Master nhận.
Ở chế độ này, dữ liệu được Slave gửi về. Quá trình truyền nhận tương tự ở chế độ
Master truyền. Tuy nhiên, bit R/W được gán = 1, tức là “đọc”. Khi địa chỉ của Slave và bit
R/W được gửi, ACK sẽ được trả về, bit SI lại được gán = 1, thanh ghi I2STAT lúc này có thể
mang giá trị 0x40, 0x48 hay 0x38 (ở chế độ Master); 0x68, 0x78 hay 0xB0 (ở chế độ Slave).
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 68
Hình 32 Định dạng ở chế độ Master nhận
Nếu tín hiệu START được khởi tạo một lần nữa, giao tiếp I2C của LPC2300 có thể trở
về chế độ Master truyền.
Hình 33 Chế độ Master nhận chuyển thành Master truyền sau khi gửi START lặp lại
I.15.3.3 Chế độ Slave nhận
Dữ liệu sẽ được gửi từ Master đến, để thiết lập chế độ này, thanh ghi I2ADR và
I2CONSET phải được thiết lập như sau:
Bảng 36 Thanh ghi I2CnCONSET được sử dụng trong chế độ Slave
Bit 7 6 5 4 3 2 1 0
Symbol - I2EN STA STO SI AA - -
Value - 1 0 0 0 1 - -
Sau khi các thanh ghi I2ADR và I2CONSET được thiết lập, giao tiếp I2C sẽ chờ đến
khi nó được gán địa chỉ. Nếu bit R/W là 0, giao tiếp này là Slave nhận, ngược lại, nó sẽ trở
thành Slave truyền. Sau khi byte chứa địa chỉ Slave và bit R/W được nhận, SI được gán = 1 và
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 69
I2STAT được xác lập. Thanh ghi này có thể đọc để nhận giá trị thể hiện tình trạng của kênh
truyền.
Hình 34 Định dạng ở chế độ Slave nhận
I.15.3.4 Chế độ Slave truyền.
Ở chế độ này, bit R/W có giá trị 1. Phần cứng sẽ tự động nhận dạng địa chỉ của chính
nó. Khi địa chỉ này được phát hiện, một ngắt sẽ được yêu cầu. Nếu vi xử lý yêu cầu vào chế
độ Master thì phải chờ cho đến khi kênh truyền rãnh. Và nếu cơ chế trọng tài bị mất đi thì giao
tiếp I2C lập tức chuyển thành chế độ Slave.
Hình 35 Định dạng ở chế độ Slave truyền
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 70
I.15.4 Kết nối vật lý
Hình 36 Cấu hình bus I2C
Bảng 37 I2C PIN
Pin Type Description
SDA0,1,2 Input/Ouput I2C serial Data
SCL0,1,2 Input/Ouput I2C serial Clock
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 71
I.15.5 Sơ đồ khối của I2C
Hình 37 Sơ đồ khối I2C
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 72
I.15.5.1 Bộ lọc ngõ vào và điều chỉnh ngõ ra.
Những tín hiệu ở ngõ vào được đồng bộ với xung nội bộ, và các gai tín hiệu ngắn hơn
3 xung đồng hồ sẽ được loại bỏ.
Ngõ ra cho I2C cũng được thiết kế đặc biệt để đáp ứng đặc tả của I2C.
I.15.5.2 Thanh ghi địa chỉ I2ADDR
Thanh ghi này sẽ chứa 7 bit địa chỉ và được dùng trong trường hợp thiết bị là Slave
(truyền hay nhận). Bit cuối cùng (LSB) được dùng để nhận dạng lời gọi địa chỉ chung (0x00).
I.15.5.3 Bộ so sánh.
Bộ so sánh sẽ phát hiện và yêu cầu ngắt khi 7 bits địa chỉ Slave trùng với địa chỉ Slave
của chính nó (7 bits cao trong thanh ghi I2ADR). Bộ so sánh cũng phát hiện trường hợp byte
nhận đầu tiên là lời gọi địa chỉ tổng quát (0x00). Khi có yêu cầu ngắt, các bit trạng thái cũng
được gán giá trị.
I.15.5.4 Thanh ghi dịch I2DAT.
Thanh ghi 8 bits này chứa một byte dữ liệu cần truyền hay vừa nhận được. Dữ liệu
trong I2DAT luôn dịch từ phải sang trái (bit MSB được dịch đầu tiên). Thanh ghi I2DAT luôn
chứa giá trị byte cuối cùng xuất hiện trên kênh truyền.
I.15.5.5 Xung đồng bộ.
Hình 38 Xung clock đồng bộ
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 73
I.15.5.6 Bộ tạo xung tuần tự
Bộ tạo xung này hoạt động khi thiết bị đóng vai trò Master, và được tắt khi thiết bị
đóng vai trò Slave. Tần số và tỉ lệ xung tích cực có thể lập trình thông qua việc gán giá trị cho
2 thanh ghi là I2CSCLL và I2CSCLH.
I.15.5.7 Điều khiển và định thời.
Bộ điều khiển/ định thời có chức năng tạo ra xung để dịch thanh ghi I2DAT, kích khởi
bộ so sánh, tạo ra hay phát hiện tín hiệu START/ STOP, nhận và truyền bit ACK, điều khiển
chế độ Master hay Slave, phát hiện những điều kiện để yêu cầu ngắt và theo dõi tình trạng của
kênh truyền I2C.
I.15.5.8 Thanh ghi điều khiển I2CONSET và I2CONCLR
Các thanh ghi này chứa những bit mà giá trị của chúng quyết định chức năng của các
khối I2C, bắt đầu, khởi tạo hay kết thúc việc truyền tín hiệu tuần tự. Các thanh ghi này cũng
quyết định tốc độ truyền, phát hiện địa chỉ và tín hiện ACK.
I.15.6 Địa chỉ thanh ghi
Hình 39 Địa chỉ thanh ghi I2C
Generic
Name
Description Access Reset
value
I2Cn Register Name &
Address
I2CONSE
T
I2C Control Set Register.When a one is
written to a bit of this register, the
corresponding bit in the I2C control
register is set. Writing a zero has no
effect on the corresponding bit in the
I2C control register.
R/W 0x00 I2C0CONSET - 0xE001 C000
I2C1CONSET - 0xE005 C000
I2C2CONSET - 0xE008 0000
I2STAT I2C Status Register.During I2C
operation, this register provides detailed
status codes that allow software to
determine the next action needed.
RO 0xF8 I2C0STAT - 0xE001 C004
I2C1STAT - 0xE005 C004
I2C2STAT - 0xE008 0004
I2DAT I2C Data Register.During master or
slave transmit mode, data to be
R/W 0x00 I2C0DAT - 0xE001 C008
I2C1DAT - 0xE005 C008
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 74
transmitted is written to this register.
During master or slave receive mode,
data that has been received may be read
from this register.
I2C2DAT - 0xE008 0008
I2ADR I2C Slave Address Register.Contains
the 7 bit slave address for operation of
the I2C interface in slave mode, and is
not used in master mode. The least
significant bit determines whether a
slave responds to the general call
address.
I2C0ADR - 0xE001 C00C
I2C1ADR - 0xE005 C00C
I2C2ADR - 0xE008 000C
I2SCLH SCH Duty Cycle Register High Half
Word.Determines the high time of the
I2C clock
R/W 0x04 I2C0SCLH - 0xE001 C010
I2C1SCLH - 0xE005 C010
I2C2SCLH - 0xE008 0010
I2SCLL SCL Duty Cycle Register Low Half
Word.Determines the low time of the
I2C clock. I2nSCLL and I2nSCLH
together determine the clock frequency
generated by an I2C master and certain
times used in slave mode.
R/W 0x04 I2C0SCLL - 0xE001 C014
I2C1SCLL - 0xE005 C014
I2C2SCLL - 0xE008 0014
I2CONCL
R
I2C Control Clear Register.When a one
is written to a bit of this register, the
corresponding bit in the I2C control
register is cleared. Writing a zero has no
effect on the corresponding bit in the
I2C control register.
WO NA I2C0CONCLR - 0xE001 C018
I2C1CONCLR - 0xE005 C018
I2C2CONCLR - 0xE008 0018
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 75
I.15.6.1 I2C Control Set Register (I2C[0/1/2]CONSET: 0xE001 C000, 0xE005
C000, 0xE008 0000)
I2CCONSET là thanh ghi điều khiển các bit của thanh ghi I2CON như bảng dưới đây.
Bảng 38 Mô tả các bit của thanh ghi I2CCONSET
Bit Symbol Description Reset
Value
1:0 - Reserved. User software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
NA
2 AA Assert acknowledge flag. 0
3 SI I2C interrupt flag. 0
4 STO STOP flag. 0
5 STA START flag. 0
6 I2EN I2C interface enable. 0
7 - Reserved. User software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
-
I.15.6.2 I2C Control Clear Register (I2C[0/1/2]CONCLR: 0xE001 C018, 0xE005
C018, 0xE008 0018)
I2CCONCLR là thanh ghi điều khiển các bit của thanh ghi I2CON như bảng dưới đây.
Bảng 39 Mô tả các bit của thanh ghi I2CCONCLR
Bit Symbol Description Reset
Value
1:0 - Reserved. User software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
NA
2 AA Assert acknowledge Clear bit 0
3 SIC I2C interrupt Clear bit. 0
4 - Reserved. User software should not write ones to reserved bits. The
value read from a reserved bit is not defined.
0
5 STAC START flag Clear bit. 0
6 I2ENC I2C interface Disable bit. 0
7 - Reserved. User software should not write ones to reserved bits. The value
read from a reserved bit is not defined.
-
I.15.6.3 I2C Status Register (I2C[0/1/2]STAT - 0xE001 C004, 0xE005 C004,
0xE008 0004)
Mỗi thanh ghi I2CSTAT phản ánh trạng thái tương ứng của I2C.
I.15.6.4 I2C Data Register (I2C[0/1/2]DAT - 0xE001 C008, 0xE005 C008, 0xE008
0008)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 76
I2CDAT có nhiệm vụ chứa các dữ liệu được truyền hoặc các dữ liệu vừa nhận được.
CPU cũng có thể đọc và ghi vào thanh ghi này. Dữ liệu trong I2CDAT luôn luôn chuyển từ
phải sang trái: bit đầu tiên được truyền đi là MSB (bit 7), và sau khi một byte đã được nhận,
bit đầu tiên của dữ liệu nhận được đặt tại MSB của I2CDAT.
I.15.6.5 I2C Slave Address Register (I2C[0/1/2]ADR - 0xE001 C00C,
0xE005 C00C, 0xE008 000C)
I2CADR chỉ được thiết lập ở chế độ Slave, ở chế độ master thanh ghi này không có
hiệu lực.
I.15.6.6 I2C SCL High Duty Cycle Register (I2C[0/1/2]SCLH - 0xE001
C010, 0xE0015 C010, 0xE008 0010)
Tính cho SCL lựa chọn khoảng thời gian HIGH
I.15.6.7 I2C SCL Low Duty Cycle Register (I2C[0/1/2]SCLL - 0xE001 C014,
0xE0015 C014, 0xE008 0014)
Tính cho SCL lựa chọn khoảng thời gian LOW
I.15.6.8 Lựa chọn c tốc độ dữ liệu I2C và duty cyclethích hợp
Phần mềm phải set giá trị của I2SCLH và I2SCLL để lựa chọn tốc độ dữ liệu và duty
cycle thích hợp.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 77
I.16. TIMER
I.16.1 Giới thiệu
Có 2 chức năng chính : ta có thể dùng làm đồng hồ để chạy thời gian, có thể đếm số sự kiện
(bên trong hay bên ngoài). Sau mỗi khoảng thời gian được quy định trước hay sau 1 số sự kiện thì
timer sẽ sinh ra 1 interrupt (chương trình sẽ nhảy đến địa chỉ chứa hàm interrupt và thực thi hàm đó)
LPC2378 hỗ trợ 4 bộ timer 0,1,2,3 , tất cả đều 32 bit
I.16.2 Hoạt động của TIMER
Thanh ghi TC : là thanh ghi đếm (thời gian hay sự kiện). Cứ sau thời gian hay sự kiện thì thanh
ghi TC sẽ tăng lên. Tăng đến khi bằng giá trị trong thanh ghi MRn (n = 0-3) thì sẽ sinh ra 1 interrupt.
Interrupt này có thể reset TC, stop timer ... (Tùy vào chúng ta thiết lập giá trị là bao nhiêu cho thanh
ghi TnMCR).
I.16.3 Địa chỉ thanh ghi
I.16.3.1 Interrupt Register (T[0/1/2/3]IR - 0xE000 4000, 0xE000 8000, 0xE007 0000,
0xE007 4000)
TnIR gồm 4 bit interrupt. Khi một interrupt được tạo ra thì các bit của TnIR được set
ở mức cao, nếu không là mức thấp.
I.16.3.2 Timer Control Register (T[0/1/2/3]CR - 0xE000 4004, 0xE000 8004,
0xE007 0004, 0xE007 4004)
TCR được sử dụng để kiểm soát các hoạt động của Timer / Counter.
I.16.3.3 Count Control Register (T[0/1/2/3]CTCR - 0xE000 4070, 0xE000 8070,
0xE007 0070, 0xE007 4070)
TnCTCR được sử dụng để lựa chọn giữa chế độ Timer và Counter, và trong chế độ
Counter để chọn chân và cạnh để đếm.
I.16.3.4 Timer Counter registers (T0TC - T3TC, 0xE000 4008, 0xE000 8008,
0xE007 0008, 0xE007 4008)
TnTC sẽ tăng lên khi được kích hoạt đếm.
I.16.3.5 Prescale register (T0PR - T3PR, 0xE000 400C, 0xE000 800C, 0xE007
000C, 0xE007 400C)
TnPR quy định cụ thể giá trị tối đa của Prescale Counter
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 78
I.16.3.6 Prescale Counter register (T0PC - T3PC, 0xE000 4010, 0xE000 8010,
0xE007 0010, 0xE007 4010)
TnPC kiểm soát phân chia PCLK bởi một số giá trị không đổi trước khi nó được áp
dụng cho Timer Counter. Điều này cho phép kiểm soát độ phân giải của bộ đếm thời gian so
với thời gian tối đa trước khi tràn bộ đếm thời gian.
I.16.3.7 Match Registers (MR0 - MR3)
MRn liên tục so sánh giá trị với Timer Counter : khi hai giá trị bằng nhau thì các hoạt
động sẽ tự kích hoạt. Hoạt động có thể là tạo ra một interrupt, reset Timer Counter, đừng bộ
đếm và được điều khiển bởi thanh ghi MCR.
I.16.3.8 Match Control Register (T[0/1/2/3]MCR - 0xE000 4014, 0xE000 8014,
0xE007 0014, 0xE007 4014)
MCR được sử dụng để kiểm soát những gì hoạt động được thực hiện khi một MRn
bằng giá trị Timer Counter.
I.16.3.9 Capture Registers (CR0 - CR3)
Mỗi Capture đăng ký được kết hợp với một thiết bị chân và có thể được load giá trị
Timer Counter khi một vấn đề nào đó xảy ra trên chân đó. Các thiết lập trong thanh ghi
Capture Control Register sẽ xác định chức năng sẽ được kích hoạt, và liệu có capture nào tích
cực cạnh lên/cạnh xuống của chân hay không.
I.16.3.10 Capture Control Register (T[0/1/2/3]CCR - 0xE000 4028, 0xE000 8028,
0xE007 0028, 0xE007 4028)
TnCCR được sử dụng để kiểm soát xem một trong bốn thanh ghi Capture đồng thời
nạp với giá trị vào Timer Counter khi Capture giữ xảy ra, và có một interrupt cũng được tạo
ra.
I.16.3.11 External Match Register (T[0/1/2/3]EMR - 0xE000 403C, 0xE000 803C,
0xE007 003C, 0xE007 403C)
TnEMR cung cấp cả kiểm soát và tình trạng của các chân trong EM
I.16.4 Ví dụ hoat động của Timer
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 79
Hình 40 Chu kì của một timer với PR=2, MRx=6 và interrupt, reset đã được kích hoạt
Hình 41 Chu kì của một timer với PR=2, MRx=6 và interrupt, stop đã được kích hoạt
I.16.5 Kiến trúc
Nhìn vào hình bên dưới ta có thể thấy 1 cách tổng quát hoạt động của timer:
Đầu tiên clock PCLK đưa vào Prescale Counter (thanh ghi này sẽ điều khiển việc chia clock
PCLK) cụ thể là mỗi PCLK vào thì thanh ghi Prescale Counter sẽ tăng lên 1, nó tăng lên đến khi nào
bằng giá trị trong thanh ghi Precale Register thì thanh ghi TC sẽ tăng lên 1. Thanh ghi TC cứ tăng lên
như thế cho đến khi nào bằng với giá trị trong thanh ghi MRn thì sẽ sinh ra 1 interrupt.
Ngoài ra thì còn có thanh ghi TCR (để điều khiển có cho timer chạy hay không)
Và các thanh ghi Capter Register để load giá trị thanh ghi TC vào khi cần thiết.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 80
Hình 42 Sơ đồ khối của Timer
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 81
II. CÁCH SỬ DỤNG BOARD MCB2300
II.16.1 Giới thiệu board thực tập MCB 2300
Board thí nghiệm MCB2300 cho phép tạo ra và chạy những chương trình trên họ thiết bị
LPC23xx của NXP. Board gồm có 2 giao diện serial, load, đầu vào analog, 2 giao diện CAN, màn
hình LCD, USB, Ethernet, và 8 đèn LED, tất cả là sự khỏi đầu để phát triển các ARM tiếp theo. Board
thí nghiệm có các phiên bản khác nhau là MCB2360, MCB2370, MCB 2387 và MCB 2388.
Board MCB 2360 thông dụng với vi điều khiển NXP LPC2368.
Board MCB 2370 thông dụng với vi điều khiển NXP LPC2378.
Board MCB 2387 thông dụng với vi điều khiển NXP LPC2387.
Board MCB 2388 thông dụng với vi điều khiển NXP LPC2388.
Board MCB 2370 sử dụng vi điều khiển NXP LPC2378 trong đó có một gói kích thước lớn
hơn và số lượng pin hơn so với NXP LPC2368 hoặc LPC2387. Board MCB 2387 và 2388 có thêm
USB "A" và kết nối mini-USB để hỗ trợ USB-OTG.
II.16.2 Kit thí nghiệm MCB2300
Bên trong một bộ kit thí nghiệm MCB 2300 bao gồm
Board thí nghiệm MCB 2300.
Hướng dẫn nhanh Vision IDE.
Bản giới thiệu tổng quan về công cụ phát triển của ARM.
Một CD-ROM chứa:
o Bản dùng thử chương trình “RealView MDK-ARM Microcontroller
Development Kit”.
o Một số chương trình ví dụ chạy trên board MCB2300.
o File hướng dẫn sử dụng của board MCB2300.
Chương trình ví dụ chạy trên board MCB2300 có thể tìm thấy ở
KEIL\ARM\RV30\BOARDS\KEIL\MCB2300 trên CD-ROM. Tất cả các ví dụ này đều có
thể dịch và chạy trên bản dùng thử.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 82
II.16.3 Đặc điểm chính của MCB2300.board
LPC2300 MCUs
58KB On-chip RAM (for MCB2370)
98KB On-chip RAM (for MCB2388)
512KB On-chip FLASH
Có hai cổng giao tiếp serial.
Có hai cổng giao tiếp CAN.
Cổng Ethernet.
LCD hiển thị.
LF Amplifier.
Điều khiển điện áp tương tự cho cổng vào
ADC.
Giao diện JTAG để nạp và chạy debug.
Hình 43 Board MCB 2370
II.16.4 Chuẩn bị về phần cứng.
Để sử dụng board MCB2300, chúng ta cần chuẩn bị:
Board thí nghiệm MCB2300.
Máy tính chuẩn IBM còn trống:
2 cổng USB : 1 cổng cung cấp nguồn điện và một cổng dùng để download/debug.
1 cổng COM RS-232 nếu sử dụng cách nạp bằng ISP thông qua cổng giao tiếp
serial.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 83
Bộ giao tiếp JTAG : bao gồm Adapter JTAG và 2 dây cáp nối USB.
Trong TH cần sử dụng tiện ích “Flash Magic Utility” một dây cáp serial, 1 đầu đực/1 đầu
cái, ngắn hơn 3m.
II.16.5 Chuẩn bị về phần mềm.
Hệ điều hành Microsoft Windows.
Phần mềm “Keil Vision”
Phần mềm “RealView MDK-ARM Evaluation Tools”.
Các ví dụ viết cho MCB2300 được kèm theo các bộ MDK-ARM, DB-ARM và Keil ARM
Evalution Toolkits.
II.16.6 Cài đặt board thí nghiệm MCB2300.
Sau khi đã chuẩn bị đầy đủ các yêu cầu về phần cứng và phần mềm, chúng ta có thể tiến
hành các bước sau đây để cài đặt và sẵn sàng thí nghiệm trên board MCB2300.
II.16.6.1 Cài đặt board.
Board MCB2300 dùng nguồn điện từ cổng USB.
Hình 44 Board MCB2300 với cổng USB
Board MCB2300 kết nối trực tiếp đến phần mềm “Keil Vision Debugger” bằng adapter “Keil
ULINK USB-JTAG”, không cần cài đặt thêm bất cứ phần mềm nào trên board.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 84
II.16.6.2 Các thành phần quan trọng trên board MCB2300.
Hình 45 Board MCB2300 với chú thích trên hình
II.16.6.3 Kết nối với U-LINK.
Hình 46 Board MCB2300 với kết nối ULink
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 MCB2300.
Bước 3: cấp nguồn cho board MCB2300 bằng cabke USB.
Bước 4: thiết lập mức xung JTAG cho adapter U-LINK.
Cho hoạt động board MCB2300.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 85
Trong phần mềm Vision, thiết lập bộ Debug trong hộp thoại Project\Options for
Target\Debug.
Chọn “Use: ULINK ARM Debugger” trong danh sách thả xuống.
Click lên nút “Setting” để mở hộp thoại “ARM Target Driver Setup”.
Danh sách thà xuống “Max JTAG Clock” dùng để chỉ định xung JTAG cao nhất
được dùng để giao tiếp với board thí nghiệm. Nên chọn giá trị 200 kHz để board
MCB2300 hoạt động tốt nhất.
ULINK2 JTAG có thêm chân RTCK (Return Clock). Nếu sử dụng adapter ULINK2, chúng ta
có thể thiết lập Max JTAG Clock là 200 kHz hoặc RTCK.
Hình 47 Setup ARM
II.16.6.4 Kết nối thông qua giao tiếp Serial
Bước 1, thiết lập jumper trên board MCB2300
J9 và J10 : ON.
J13 : OFF.
Bước 2, cấp nguồn cho board MCB2300 bằng cabke USB.
Bước 3, Kết nối board MCB2300 vào máy tính qua cổng COM từ cổng COM0 trên board.
Bước 4, Xác nhận kết nối bằng tiện ích “Flash Magic”.
Chạy “Flash Magic” và thiết lập thông số như sau:
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 86
Xác nhận cổng COM bằng lệnh ISP – Read Device Signature.
Cừa sổ sau đây sẽ hiển thị thông số kết nối.
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 87
II.16.7 Thiết lập jumper trên board MCB2300.
Các jumper trên board MCB2300, đây cũng là thông số mặc định trong TH kết nối board thông
qua ULINK2.
Jumper State Description
J1 - USB (D-) ON Connects USB Line D- to the USB connector.
J2 - USB (D+) ON Connects USB Line D+ to the USB connector.
J3 - AOUT ON Connects AOUT via LF amplifier to the loudspeaker.
J4 - -- Not used
J5 - UMODE ON Allows soft-connect of the USB device by issuing a software restart via
P0.14
J6 - AD0.0 ON Connects POT1 potentiometer to AIN0 for analog input demonstration.
J8 - INT0 ON Enable INT0 Push Button.
J9 - RST ON Enables Reset via COM0.
J10 - ISP OFF Disables In-System Programming via COM0.
J11 - LED ON Enables Port2.0 - Port2.7 LEDs.
J13 - ETM ON Enables the Embedded Trace Macrocell (so that the USB soft-connect and
the LED's can be used)
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 88
PHỤ LỤC
ĐIỀU KHIỂN LED
Trên board MCB2300 gồm có 8 con led nhỏ, từ P2.0 đến P2.7. Để sử dụng ta chỉ việc set các chân
đó là chân output. Điều này có thể được thực hiện thông qua hàm LED_Init.
/* Function that initializes LEDs */
void LED_Init(void) {
PINSEL10 = 0; /* Disable ETM interface, enable LEDs */
FIO2DIR = 0x000000FF; /* P2.0..7 defined as Outputs */
FIO2MASK = 0x00000000;
}
Ngoài ra để điều khiển cũng như xuất giá trị nhất định ra LED ta dùng hàm bật - LED_On, tắt -
LED_Off và xuất - LED_Out.
/* Function that turns on requested LED */
void LED_On (unsigned int num) {
FIO2SET = (1 << num);
}
/* Function that turns off requested LED */
void LED_Off (unsigned int num) {
FIO2CLR = (1 << num);
}
/* Function that outputs value to LEDs */
void LED_Out(unsigned int value) {
FIO2CLR = 0xFF; /* Turn off all LEDs */
FIO2SET = (value & 0xFF); /* Turn on requested LEDs */
}
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 89
ĐIỀU KHIỂN LCD
Trên board MCB2300 có một LCD 16x2 (16 cột và 2 hàng) và biến trở dùng để chỉnh độ tương
phản. Việc sử dụng LCD này sẽ khá đơn giản nếu như ta có các hàm bổ trợ từ thư viện LCD.h và
LCD_4bit.c với các hàm tương ứng với chức năng nhất định như sau:
Thiết lập LCD controller
void lcd_init (void);
Xóa màn hình LCD
void lcd_clear (void);
Xuất kí tự ra LCD
void lcd_putchar (char c);
Thiết lập vị trí của cursor trên LCD, column và line tương ứng với số cột và hàng của LCD.
void set_cursor (unsigned char column, unsigned char line);
Xuất chuỗi bất kì ra LCD.
void lcd_print (unsigned char const *string);
KHOA HỌC & KỸ THUẬT MÁY TÍNH Đồ án Thiết Kế Luận Lý – GVHD : Nguyễn Quốc Tuấn
Thực hiện : Nguyễn Thanh Bi – Đỗ Minh Chiến Trang 90
KẾT LUẬN
Tài liệu tham khảo
[1] Trang WEB www.nxp.com
[2] Trang WEB www.keil.com
[3] User manual LPC23xx
[4] Đĩa cd LPC_3_2007
[5] “Tổng quan vi xử lý LPC2378. Hướng dẫn sử dụng board MCB2300” – Đặng Việt Hùng,
Trần Trung Tín.
Kết luận
Công việc đã làm được:
Nghiên cứu kiến trúc và tập lệnh ARM7
Nghiên cứu và sử dụng board MCB2300
Nghiên cứu 1 số chức năng cơ bản của LPC2378
Interrupt
Ethernet
Timer
CAN
USB
UART
SPI
I2C
Chương trình demo:
Chạy led
Đồng hồ hiển thị LCD