do an

97
ĐẠI HC QUC GIA THÀNH PHHCHÍ MINH TRƯỜNG ĐẠI HC BÁCH KHOA KHOA KHOA HC & KTHUT MÁY TÍNH ---------- Đồ án môn hc Thiết Kế Lun Lý. TNG QUAN VI XLÝ LPC2300 HƯỚNG DN SDNG BOARD MCB 2300 TP. HCM, 12/2013 Giảng viên hướng dn Nguyn Quc Tun Sinh viên thc hin Nguyn Thanh Bi 51100264 Đỗ Minh Chiến - 51100372

Upload: chien-dominh

Post on 14-May-2017

230 views

Category:

Documents


10 download

TRANSCRIPT

Page 1: Do an

ĐẠ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

Page 2: Do an

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

Page 3: Do an

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

Page 4: Do an

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

Page 5: Do an

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

Page 6: Do an

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

Page 7: Do an

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

Page 8: Do an

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

Page 9: Do an

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.

Page 10: Do an

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.

Page 11: Do an

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

Page 12: Do an

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

Page 13: Do an

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

Page 14: Do an

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

Page 15: Do an

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

Page 16: Do an

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

Page 17: Do an

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)

Page 18: Do an

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

Page 19: Do an

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

Page 20: Do an

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

Page 21: Do an

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

Page 22: Do an

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

Page 23: Do an

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ị.

Page 24: Do an

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

Page 25: Do an

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.

Page 26: Do an

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

Page 27: Do an

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.

Page 28: Do an

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).

Page 29: Do an

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ớ

Page 30: Do an

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.

Page 31: Do an

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.

Page 32: Do an

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.

Page 33: Do an

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

Page 34: Do an

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

Page 35: Do an

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

Page 36: Do an

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.

Page 37: Do an

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

Page 38: Do an

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.

Page 39: Do an

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

Page 40: Do an

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

Page 41: Do an

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.

Page 42: Do an

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

Page 43: Do an

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

Page 44: Do an

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

Page 45: Do an

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

Page 46: Do an

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.

Page 47: Do an

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ộ

Page 48: Do an

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

Page 49: Do an

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.

Page 50: Do an

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.

Page 51: Do an

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

Page 52: Do an

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

Page 53: Do an

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

Page 54: Do an

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

Page 55: Do an

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.

Page 56: Do an

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

Page 57: Do an

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.

Page 58: Do an

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

Page 59: Do an

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.

Page 60: Do an

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)

Page 61: Do an

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)

Page 62: Do an

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

Page 63: Do an

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.

Page 64: Do an

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

Page 65: Do an

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;

Page 66: Do an

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)

Page 67: Do an

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

Page 68: Do an

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

Page 69: Do an

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

Page 70: Do an

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,

Page 71: Do an

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.

Page 72: Do an

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

Page 73: Do an

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.

Page 74: Do an

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).

Page 75: Do an

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à

Page 76: Do an

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

Page 77: Do an

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

Page 78: Do an

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

Page 79: Do an

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ộ

Page 80: Do an

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

Page 81: Do an

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

Page 82: Do an

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)

Page 83: Do an

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.

Page 84: Do an

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

Page 85: Do an

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

Page 86: Do an

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.

Page 87: Do an

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

Page 88: Do an

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ử.

Page 89: Do an

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.

Page 90: Do an

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.

Page 91: Do an

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.

Page 92: Do an

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:

Page 93: Do an

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.

Page 94: Do an

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)

Page 95: Do an

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 */

}

Page 96: Do an

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);

Page 97: Do an

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