tài liệu vi điều khiển NUC 140

219 143 9
tài liệu vi điều khiển NUC 140

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO VI ĐIỀU KHIỂN NÂNG CAO Biên soạn: ThS Phạm Quốc Phương Tài Liệu Lưu Hành Tại HUTECH www.hutech.edu.vn VI ĐIỀU KHIỂN NÂNG CAO Ấn 2014 MỤC LỤC I MỤC LỤC MỤC LỤC HƯỚNG DẪN BÀI 1: TỔNG QUAN VỀ ARM 1.1 GIỚI THIỆU 1.1.1 Tổng quan ARM 1.1.2 Cấu trúc xử lý 1.2 ARM COTEX M0 NUVOTON 1.2.1 Đặc tính kỹ thuật MCU 32-bit lõi ARM Cortex-M0 1.2.2 Phân loại 1.2.3 Cấu trúc 1.2.4 Tính kỹ thuật TÓM TẮT 14 CÂU HỎI ÔN TẬP 15 BÀI 2: HỌ NUMICRO™ NUC140 16 2.1 ĐẶC TÍNH HỌ NUMICRO NUC140 16 2.1.1 Mã lựa chọn MCU 16 2.1.2 Sơ đồ chân 17 2.1.3 Sơ đồ khối NuMicro NUC140 26 2.2 HỆ THỐNG QUẢN LÝ NUC140 27 2.2.1 Tổng quan 27 2.2.2 Reset hệ thống 27 2.2.3 Nguồn 28 2.2.4 Bộ nhớ hệ thống 29 2.2.5 Các ghi điều khiển hệ thống 31 TÓM TẮT 44 CÂU HỎI ÔN TẬP 45 BÀI 3: INPUT – OUTPUT 46 3.1 TỔNG QUAN 46 3.1.1 Một số tính 46 3.1.2 Địa chức ghi I-O 48 3.1.3 Chức ghi I-O 55 3.2 TẠO PROJECT TRONG KEIL C 4.0 61 II MỤC LỤC 3.2.1 Các bước thực hiện: .61 3.2.2 Thư viện hàm I-O (DrvGPIO.h) 76 3.3 BÀI TẬP MẪU 77 TÓM TẮT 85 CÂU HỎI ÔN TẬP 86 BÀI 4: TIMER – WDT - RTC 87 4.1 TIMER 87 4.1.1 Một số tính Timer .87 4.1.2 Các ghi cấu hình Timer 89 4.1.3 Chức ghi cấu hình Timer 90 4.2 WATCHDOG TIMER 100 4.2.1 Một số tính Watchdog Timer 100 4.2.2 Giản đồ thời gian ngắt Reset 101 4.2.3 Sơ đồ khối 101 4.2.4 Các ghi chức 102 4.3 RTC (REAL TIME CLOCK) 106 4.3.1 Một số tính RTC Counter 106 4.3.2 Sơ đồ khối RTC 107 4.3.3 Các ghi chức 107 4.3.4 Mô tả chức ghi 108 4.4 BÀI TẬP MẪU 121 TÓM TẮT 124 BÀI TẬP 125 BÀI 5: ADC 126 5.1 TỔNG QUAN 126 5.1.1 ĐẶC TÍNH BỘ CHUYỂN ĐỔI ADC 126 5.1.2 CHỨC NĂNG 127 5.1.3 Lưu đồ giải thuật chuyên đổi ADC 130 5.2 BÀI TẬP MẪU 130 TÓM TẮT 133 BÀI TẬP 134 BÀI 6: PULSE WIDTH MODULE - CAPTURE 135 6.1 TỔNG QUAN 135 6.1.1 CÁC TÍNH NĂNG PWM 135 6.1.2 CÁC TÍNH NĂNG CAPTURE TIMER 136 MỤC LỤC III 6.1.3 SƠ ĐỒ KHỐI 136 6.1.4 HOẠT ĐỘNG PWM - TIMER 139 6.1.5 CAPTURE TIMER 141 6.1.6 THIẾT LẬP PWM – CAPTURE 142 6.1.7 Bảng ghi PWM-Capture 144 6.1.8 Mô tả chức ghi 146 6.2 BÀI TẬP MẪU 151 TÓM TẮT 156 BÀI TẬP 157 BÀI 7: GIAO TIẾP UART – I2C - SPI 160 7.1 UART 160 7.1.1 Chức UART Numicro MCU 161 7.1.2 Chọn xung clock 162 7.1.3 Sơ đồ khối 162 7.1.4 Thiết lập UART 163 7.1.5 Các ghi chức 164 7.2 BÀI TẬP MẪU 171 7.3 GIAO TIẾP I2C 173 7.3.1 Đặc điểm giao tiếp I2C 173 7.3.2 Truyền nhận liệu Master – Slave 174 7.3.3 Các ghi chức I2C NuMicro NUC140 178 7.3.4 Thư viện Driver I2C.c 183 7.4 BÀI TẬP MẪU 187 7.5 GIAO TIẾP SPI 192 7.5.1 Một số tính SPI Numicro MCU 193 7.5.2 Sơ đồ khối 194 7.5.3 Chu kỳ ghi SPI 194 7.5.4 Chu kỳ đọc SPI 195 7.5.5 Các ghi chức 195 7.5.6 SPI NuMicro NUC140 203 7.6 BÀI TẬP MẪU 204 TÓM TẮT 207 CÂU HỎI ÔN TẬP 208 TÀI LIỆU THAM KHẢO 210 IV HƯỚNG DẪN HƯỚNG DẪN MÔ TẢ MÔN HỌC Vi điều khiển nâng cao môn học tiên nhằm cung cấp kiến thức cho người học muốn nghiên cứu chuyên sâu lập trình áp dụng thuật tốn điều khiển đại cổ điển Môn học trang bị kiến thức từ đến nâng cao dòng vi điều khiển mạnh ARM NỘI DUNG MÔN HỌC  Bài Tổng quan ARM: Bài cung cấp cho học viên số khái niệm ARM Ngồi ra, học viên cịn phân biệt kiến trúc RISC CISC, so sánh dòng vi điều khiển ARM Cortex M0 Nuvoton Nắm tính dịng NUC130/140  Bài Họ NuMicroTM NUC140: Bài giúp học viên nắm vững tổ chức nhớ Vi điều khiển họ NUC140 phân biệt nhớ chương trình nhớ liệu Ngồi ra, cịn hiểu rõ địa chỉ, chức bit ghi đặc biệt  Bài 3: Input - Output: Bài trình bày cấu trúc ghi điều khiển I-O Hướng dẫn cách tạo project sử dụng phần mềm Keil C Học xong học viên viết số chương trình ứng dụng  Bài 4: Timer – Watchdog Timer – Real Time Clock: Trong trình bày sơ đồ khối ghi liên quan đến Timer Hướng dẫn cách khởi tạo cấu hình Timer, tính tốn giá trị cho Timer Counter Học viên viết số chương trình ứng dụng Timer  Bài 5: ADC: Bài giúp học viên phân biệt tín hiệu digital analog, trình bày sơ đồ khối ghi liên quan đến ADC Hướng dẫn cách khởi tạo cấu hình ADC Học viên viết số chương trình ứng dụng ADC  Bài 6: PWM – Capture: Bài giúp học viên phân biệt mode Capture – PWM Ngồi ra, cịn trình bày cấu trúc ghi liên quan đến PWM Hướng dẫn HƯỚNG DẪN V cách khai báo viết chương trình dùng Keil C Viết số chương trìnhứng dụng thực tế  Bài 7: Truyền thông UART – I2C – SPI: Bài giúp học viên nắm khái niệm truyền thông UART, I2C, SPI Cách khởi tạo cấu hình giao thức truyền thông Giao tiếp PC MCU, MCU-MCU viết số chương trình ứng dụng KIẾN THỨC TIỀN ĐỀ Các môn học tiên (những môn phải học trước mơn này): Mơn học bố trí vào giai đoạn lựa chọn chuyên ngành, sau kết thúc môn ngành Các môn học (những môn học sau môn này): Kỹ thuật lập trình nâng cao, hệ thống nhúng U CẦU MƠN HỌC Người học phải dự học đầy đủ buổi lên lớp làm tập đầy đủ nhà CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC Để học tốt môn này, người học cần ôn tập học, trả lời câu hỏi làm đầy đủ tập; đọc trước tìm thêm thông tin liên quan đến học Đối với học, người học đọc trước mục tiêu tóm tắt học, sau đọc nội dung học Kết thúc ý học, người đọc trả lời câu hỏi ơn tập kết thúc tồn học, người đọc làm tập PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC Kiểm tra – đánh giá q trình: Có trọng số chung 30%, bao gồm điểm đánh sau:  Điểm chuyên cần: Cấm thi vắng 20% tiết lên lớp  Điểm đánh giá nhận thức thái độ tham gia thảo luận, Seminar: 20% VI HƯỚNG DẪN  Điểm thi kỳ: 10%  Điểm thi cuối kỳ: 70%  Điểm đánh giá khối lượng tự học, tự nghiên cứu sinh viên (hoàn thành tốt nội dung, nhiệm vụ mà giảng viên giao cho cá nhân/ tuần; tập nhóm/ tháng; tập cá nhân/ học kì,…) Kiểm tra - đánh giá cuối kỳ: Điểm thi kết thúc học phần có trọng số 70%  Hình thức thi: tự luận  Thời lượng thi: 90 phút  Sinh viên tham khảo tài liệu hay không thi: tham khảo tài liệu BÀI 1: TỔNG QUAN VỀ ARM BÀI 1: TỔNG QUAN VỀ ARM Sau học xong này, học viên có thể:  Nắm lịch sử phát triển, khái niệm vi điều khiển ARM  Phân biệt kiến trúc RISC CISC  Phân biệt dòng vi điều khiển ARM Cortex M0 Nuvoton  Nắm tính dòng NUC130/140 1.1 GIỚI THIỆU 1.1.1 Tổng quan ARM Ngày 26/4/1985, mẫu sản phẩm ARM sản xuất công ty kĩ thuật VLSI, SanJose, bang Califonia chuyển tới trung tâm máy tính Acorn Cambridge, Anh Quốc Một vài sau, chương trình thử nghiệm thành công Tên đủ hãng ARM Holdings đóng trụ sở Anh Quốc Ban đầu, chữ ARM viết tắt cho cụm từ Acorn RISC Machine, sau chữ Acorn thay chữ Advanced Kiến trúc ARM phát triển lần vào thập niên 1980 để dùng cho máy tính để bàn Tính đến thời điểm (2013), ARM kiến trúc 32 bit phổ biến giới, vượt qua kiến trúc x86 Intel (tính theo số lượng chip sản xuất) Theo ARM Holdings, tính riêng năm 2010, kiến trúc họ có mặt 95% số smartphone, 35% số TV set-top box, 10% số máy tính di động bán Các chip dùng kiến trúc ARM tạo dựa thiết kế RISC (Reduced instruction set computing) Thiết kế giúp giảm đáng kể số lượng bóng bán dẫn cần thiết để vận hành máy tính so với kiểu CISC (complex instruction set 196 BÀI 7: GIAO TIẾP UART – I2C - SPI  Chức bit ghi BÀI 7: GIAO TIẾP UART – I2C - SPI 197 198 BÀI 7: GIAO TIẾP UART – I2C - SPI BÀI 7: GIAO TIẾP UART – I2C - SPI 7.5.5.2 Thanh ghi SPI_DIVIDER  Chức bit ghi 199 200 BÀI 7: GIAO TIẾP UART – I2C - SPI 7.5.5.3 Thanh ghi SPI_SSR  Chức bit ghi BÀI 7: GIAO TIẾP UART – I2C - SPI 7.5.5.4 Thanh ghi SPI_RX 201 202 BÀI 7: GIAO TIẾP UART – I2C - SPI  Chức bit ghi 7.5.5.5 Thanh ghi SPI_TX  Chức bit ghi BÀI 7: GIAO TIẾP UART – I2C - SPI 7.5.6 SPI NuMicro NUC140  SPI0  SPI0CS/GPC0 : chân 45  SPI0CLK/GPC1 : chân 44  SPI0DI(MISO)/GPC2 : chân 43  SPI0DO(MOSI)/GPC3 : chân 42  SPI1  SPI1CS/GPC8 : chân 61  SPI1CLK/GPC9 : chân 60  SPI1DI(MISO)/GPC10 : chân 59  SPI1DO(MOSI)/GPC11 : chân 58  SPI2  SPI2CS/GPD0 : chân 81  SPI2CLK/GPD1 : chân 82  SPI2DI(MISO)/GPD2 : chân 83  SPI2DO(MOSI)/GPD3 : chân 84  SPI3  SPI3CS/GPD8 : chân 13  SPI3CLK/GPD9 : chân 14  SPI3DI(MISO)/GPD10 : chân 15  SPI3DO(MOSI)/GPD11 : chân 16 203 204 BÀI 7: GIAO TIẾP UART – I2C - SPI 7.6 Bài tập mẫu Bài 1: Viết chương trình giao tiếp NU-LB-NUC140 hình QC12864B   Một số hàm hỗ trợ Hàm void LCD_WriteCommand(uint8_t cmd) { SPI1->SSR.SSR=1; SPI1->TX[0] =0x00F8; SPI1->CNTRL.GO_BUSY = 1; While ( SPI1->CNTRL.GO_BUSY == ); SPI1->TX[0] =0x00F0 & cmd; SPI1->CNTRL.GO_BUSY = 1; while ( SPI1->CNTRL.GO_BUSY == ); SPI1->TX[0] =0x00F0 & (cmdCNTRL.GO_BUSY == ); SPI1->SSR.SSR=0; } Hàm void LCD_WriteData(unsigned char data) { BÀI 7: GIAO TIẾP UART – I2C - SPI SPI1->SSR.SSR=1; SPI1->TX[0] =0x00FA; SPI1->CNTRL.GO_BUSY = 1; while ( SPI1->CNTRL.GO_BUSY == ); SPI1->TX[0] =0x00F0 & data; SPI1->CNTRL.GO_BUSY = 1; While ( SPI1->CNTRL.GO_BUSY == ); SPI1->TX[0] =0x00F0 & (dataCNTRL.GO_BUSY == ); SPI1->SSR.SSR=0; } Hàm void Init_QC12864B(void) { LCD_WriteCommand(0x30); DrvSYS_Delay(50); LCD_WriteCommand(0x0c); DrvSYS_Delay(50); } Hàm void Clear_QC12864B(void) { LCD_WriteCommand(0x01); } Hàm void Print_QC12864B(uint8_t line, unsigned char *string) { 205 206 BÀI 7: GIAO TIẾP UART – I2C - SPI uint8_t i, addr; if(line==0) addr = 0x80; else if (line==1) addr = 0x90; else if (line==2) addr = 0x88; else if (line==3) addr = 0x98; else addr = 0x80; LCD_WriteCommand(addr); for (i=0; i

Ngày đăng: 24/10/2020, 07:52

Tài liệu cùng người dùng

Tài liệu liên quan