Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
1,87 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM KHOA CÔNG NGHỆ THÔNG TIN MÔN: HỆ THỐNG NHÚNG ĐỀ TÀI ỨNG DỤNG CMSIS VÀO THỰC TIỄN GVHD: Ths Đinh Công Đoan NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… …………………………………………………………………………………… TP Hồ Chí Minh, tháng 12 năm 2019 Giảng viên hướng dẫn (Ký tên) Đinh Công Đoan MỤC LỤC PHẦN MỞ ĐẦU Lời nói đầu Đặt vấn đề .5 2.1 Tóm lược nghiên cứu ngồi nước 2.2 Tính cấp thiết cần nghiên cứu đề tài .7 2.3 Một số tài liệu có liên quan 2.4 Lý chọn đề tài 2.5 Mục tiêu đề tài .8 2.6 Đối tượng phạm vi nghiên cứu 2.7 Phương pháp nghiên cứu 2.8 Nội dung đề tài PHẦN NỘI DUNG .10 CHƯƠNG 1: GIỚI THIỆU VỀ VI XỬ LÝ 10 1.1 Giới thiệu vi xử lí ARM .10 1.2 Đặc điểm vi xử lí ARM 10 1.2.1 Hiệu suất cao 10 1.2.2 Dễ sử dụng, phát triển ứng dụng nhanh chóng, hiệu .11 1.2.3 Giảm chi phí phát triển lượng tiêu thụ .11 1.2.4 Tích hợp khả dị lỗi theo vết lập trình 12 1.2.5 Chuyển từ dòng xử lý ARMv7 sang Cortex-M4 để hoạt động sử dụng lượng hiệu 12 1.3 Kiến trúc tính vi xử lí Cortex-M4 .12 1.3.1 Lõi Cortex-M4 12 1.3.2 Bộ điều khiển vector ngắt lồng (NVIC) 16 1.3.3 Gỡ lỗi (Debug) theo vết (Trace) 18 1.3.4 Ma trận bus giao diện liên kết .20 1.3.5 Đơn vị bảo vệ nhớ (MPU) 20 1.3.6 Kiến trúc tập lệnh Thumb-2 21 CHƯƠNG 2: CẤU TRÚC CHUNG CỦA KIT 23 2.1 Cấu trúc KIT STM32F103C8T6 23 2.1 Sơ đồ mạch chi tiết STM32F103C8T6 .23 2.2 Các tài nguyên phần cứng giao thức hỗ trợ 24 TÀI LIỆU KHAM KHẢO 65 PHẦN MỞ ĐẦU Lời nói đầu Hệ thống nhúng (tiếng Anh: Embedded System) thuật ngữ để hệ thống có khả tự trị, nhúng vào mơi trường hay hệ thống mẹ Đó hệ thống tích hợp phần cứng phần mềm phục vụ toán chuyên dụng nhiều lĩnh vực cơng nghiệp, tự động hố điều khiển, quan trắc truyền tin Đặc điểm hệ thống nhúng hoạt động ổn định có tính tự động hoá cao Hệ thống nhúng thường thiết kế để thực chức chuyên biệt Khác với máy tính đa chức năng, chẳng hạn máy tính cá nhân, hệ thống nhúng thực một vài chức định, thường kèm với yêu cầu cụ thể bao gồm số thiết bị máy móc phần cứng chun dụng mà ta khơng tìm thấy máy tính đa nói chung Vì hệ thống xây dựng cho số nhiệm vụ định nên nhà thiết kế tối ưu hóa nhằm giảm thiểu kích thước chi phí sản xuất Các hệ thống nhúng thường sản xuất hàng loạt với số lượng lớn Hệ thống nhúng đa dạng, phong phú chủng loại Đó thiết bị cầm tay nhỏ gọn đồng hồ kĩ thuật số máy chơi nhạc MP3, sản phẩm lớn đèn giao thông, kiểm soát nhà máy hệ thống kiểm soát máy lượng hạt nhân Ngày nay, hệ thống nhúng phát triển theo hướng đa xử lý, gia tăng tính phức tạp, mức độ tích hợp cao đảm bảo yêu cầu an toàn hiệu suất cao, ra, hiệu thời gian chạy lượng phải đảm bảo Việc nghiên cứu giảng dạy hệ thống nhúng dần dược trọng ngành nghề mà công ty công nghệ lưu tâm tuyển dụng Để chuẩn bị kiến thức sau trường trình học tập, nghiên cứu việc giao tiếp với phận, thiết bị hệ thống nhúng Và để hiểu hoạt động thư viện CMSIS (Cortex Microcontroller Software Interface Standard) thực tiễn, nhóm chọn đề tài ứng dụng CMSIS mạch cảm biến nhiệt độ độ ẩm hiển thị lên LCD Đặt vấn đề 2.1 Tóm lược nghiên cứu nước - Ngoài nước: Hệ thống nhúng Apollo Guidance Computer (Máy tính Dẫn đường Apollo) phát triển Charles Stark Draper phịng thí nghiệm trường đại học MIT Hệ thống nhúng sản xuất hàng loạt máy hướng dẫn cho tên lửa quân vào năm 1961 Nó máy hướng dẫn Autonetics D-17, xây dựng sử dụng bóng bán dẫn đĩa cứng để trì nhớ Khi Minuteman II đưa vào sản xuất năm 1996, D-17 thay với máy tính sử dụng mạch tích hợp Tính thiết kế chủ yếu máy tính Minuteman đưa thuật tốn lập trình lại sau để làm cho tên lửa xác hơn, máy tính kiểm tra tên lửa, giảm trọng lượng cáp điện đầu nối điện Vào thập niên 80, kỹ thuật mạch tích hợp đạt trình độ cao dẫn đến nhiều thành phần đưa vào chip xử lý Các vi xử lý gọi vi điều khiển chấp nhận rộng rãi Với giá thấp, vi điều khiển trở nên hấp dẫn để xây dựng hệ thống chuyên dụng Đã có bùng nổ số lượng hệ thống nhúng tất lĩnh vực thị trường số nhà đầu tư sản xuất theo hướng Ví dụ, nhiều chip xử lý đặc biệt xuất với nhiều giao diện lập trình kiểu song song truyền thống để kết nối vi xử lý Vào cuối năm 80, hệ thống nhúng trở nên phổ biến hầu hết thiết bị điện tử khuynh hướng tiếp tục - Trong nước: Hiện nay, lĩnh vực hệ thống nhúng Việt Nam có bước chập chững ban đầu Công việc chủ yếu gia công phần mềm cho nước ngồi, chiếm tỷ lệ lớn thị trường Nhật, Mỹ châu Âu Rất nhiều hãng sản xuất phần mềm lớn “đổ bộ” vào thị trường Việt Nam để tận dụng lợi nguồn nhân lực giá rẻ khai thác thị trường tiềm IBM, CSC, Altera… Tuy nhiên, Việt Nam đối đầu với thách thức lớn, “đầu vào” nguồn nhân lực cho thị trường phần mềm nói chung phần mềm cho hệ thống nhúng nói riêng Ở lĩnh vực phần mềm đơn thuần, nhân viên vào nghề cần từ ba đến sáu tháng huấn luyện làm tốt cơng việc giao Cịn ngành gia cơng phần mềm cho hệ thống nhúng, nhân viên cần sáu tháng đến năm để bắt đầu làm việc có hiệu quả, từ hai đến ba năm làm việc thành thạo Việc tuyển người đào tạo khó, việc giữ người lại khó Đặc thù ngành đòi hỏi nhân viên phải có kiên trì bền bỉ để nắm bắt kiến thức cần thiết, đồng thời cần thời gian dài thấy thành Đó lý tỷ lệ chuyển nghỉ việc lĩnh vực cao, trung bình 12-20% Tuy nhiên, người gắn bó với ngành có phần thưởng tương xứng, tích lũy nhiều kiến thức phần mềm phần cứng liên quan, thường xuyên có đổi mới, tránh nhàm chán công việc Một điểm yếu khác góp phần làm hạn chế phát triển ngành gia cơng phần mềm Việt Nam nhân viên thiếu khả giao tiếp tiếng Anh kỹ mềm khả thuyết trình, làm việc theo nhóm, quản lý thời gian… Như nói, nhân viên ngành hệ thống nhúng cần phải có giao tiếp chặt chẽ với khách hàng nhóm làm việc nước ngồi khác Tiếng Anh kỹ mềm tiếng nói chung giúp người hiểu làm việc với hữu hiệu Tuy nhiên, trình độ tiếng Anh sinh viên trường phần lớn không đáp ứng yêu cầu nhà tuyển dụng, cịn kỹ mềm khơng trọng Bên cạnh việc đào tạo kỹ thuật, cơng ty cịn cần phải huấn luyện thêm nhiều tiếng Anh kỹ mềm để nhân viên theo kịp đáp ứng yêu cầu môi trường làm việc đa văn hóa Muốn phát triển ngành phần mềm hệ thống nhúng lên tầm cao sản xuất, ứng dụng thực tế xuất phần mềm nhúng Việt Nam, điều tiên phải tập trung phát triển lĩnh vực nghiên cứu phát triển (R&D) Hiện có số chương trình hợp tác với hãng lớn nước Toshiba, Panasonic, STMicroelectronics, Samsung… để phát triển theo hướng Tuy nhiên, chương trình cịn hạn chế khơng có định hướng chiến lược chung Việt Nam cần phải đẩy mạnh vấn đề định hướng nghiên cứu phát triển cho ngành hệ thống nhúng từ trường đại học trung tâm nghiên cứu, trang bị kiến thức tổng quát lĩnh vực cho sinh viên trẻ, đáp ứng nhu cầu ngày cao nhà tuyển dụng Trong tương lai, Việt Nam muốn nâng cao khả cạnh tranh với nước chuyên gia công phần mềm lớn khác Trung Quốc, Ấn Độ…, cần phải tập trung giải tốn tăng cường tính hiệu nguồn nhân lực, phát triển tập trung theo chiều sâu thay chiều rộng Trình độ chun mơn lĩnh vực phần mềm nhúng tương đối “chắp vá” theo kiểu đâu làm đó, thiếu đầu tư chiến lược phát triển hợp lý Chúng ta cần có thêm nhiều chương trình đào tạo chun ngành hệ thống nhúng từ trường đại học sở đào tạo quy Đồng thời, mở rộng cửa đón nhà đầu tư để học hỏi kỹ thuật chuyển giao công nghệ, trình phải thực cách có chọn lọc kiểm sốt, tránh tình trạng biến Việt Nam thành “bãi đáp” tiếp nhận công nghệ lỗi thời số ngành cơng nghiệp khác 2.2 Tính cấp thiết cần nghiên cứu đề tài - Mục tiêu mơn hệ thống nhúng nhằm hình thành phát triển sinh viên kiến thức kỹ ứng dụng hệ thống nhúng phẩm chất trí tuệ cần thiết để tiếp tục học lên vào sống lao động Đó quan điểm chủ điểm (thematic approach) đề cao phương pháp học tập tích cực chủ động sinh viên - Các kỹ thiết kế board mạch, viết chương trình ứng dụng vào thực tiễn quan tâm phối hợp tập hoạt động lớp - Một kỹ mà người học nói chung, thường gặp khó khăn định q trình học ứng dụng vào thực tiễn - Ngày nay, 75% CPU nhúng 32-bit thuộc họ ARM, điều khiến ARM trở thành cấu trúc 32-bit sản xuất nhiều giới Tập đoàn ST Microelectronic cung cấp cho thư viện trực tiếp cho dòng ARM (gọi CMSIS – Cortex Microcontroller Software Interface Standard) Chính phổ biến đồ sộ thư viện CMSIS nên nhóm em định chọn đề tài tìm hiểu ứng dụng thư viện CMSIS vào thực tiễn 2.3 Một số tài liệu có liên quan [1] Jonathan W Valvano, Embedded Systems: Introduction to Arm® Cortex (TM)-M Microcontrollers (Volume 1), 2012 [2] Jonathan W Valvano, Embedded Systems: Real-Time Interfacing to Arm® Cortex™- M Microcontroller, 2012 [3] Joseph Yiu, “The Definitive Guide to the ARM Cortex-M4”, Elsevier Newnes, 2007 [4] Đinh Công Đoan, Bài giảng Hệ thống nhúng, khoa CNTT đại học SPKT TP.HCM [5] Hệ thống nhúng phát triển lĩnh vực công nghệ cao "3C" - TS Nguyễn Hữu Công - Trưởng khoa Điện tử - Trường ĐHKTCN [6] Hệ thống nhúng phát triển công nghệ thông tin - PGS TSKH Phạm Thượng Cát - Viện Công nghệ Thông Tin-Viện Khoa học Công nghệ Việt nam [7] Doulos, Getting started with CMSIS, 2009 2.4 Lý chọn đề tài Trong q trình học tập mơn Hệ thống nhúng, chúng em trao dồi kiến thức nhiều loại mạch khác nhau, nhiều loại vi xử lý khác Chúng em hứng thú với việc ứng dụng vi xử lý thực tiễn Và thư viện CMSIS mạng mẽ, công cụ tuyệt vời giúp chúng em thực điều Đây lý cho chúng em chọn đề tài ứng dụng thư viện CMSIS vào thực tiễn 2.5 - Mục tiêu đề tài Đề tài đời với mục đích giúp sinh viên tổng hợp lại kiến thức tiếp thu q trình học mơn Hệ thồng nhúng, đồng thời có nhìn tổng quan ngành lập trình nhúng - Có kiến thức board mạch, giao tiếp thiết bị, bước đệm tốt hướng đến công việc sau trường - Tìm hiểu cách hoạt động CMSIS ứng dụng thực tiễn - Tạo ứng dụng thực việc hiển thị nhiệt độ, độ ẩm lên hình LCD 2.6 Đối tượng phạm vi nghiên cứu 2.6.1 Đối tượng nghiên cứu: - Thư viện CMSIS - Cảm biến DHT11 - Board mạch STM32F103C8T6 hãng ARM - Màn hình LCD - Các thiết bị hỗ trợ: dây cáp kết nối - Các thiết bị kết nối, làm nguồn: 220V 2.6.2 Phạm vi nghiên cứu: - Tìm hiểu cấu trúc chung, ngun lí hoạt động DHT11, LCD - Tìm hiểu Nghiên cứu mức lập trình cho thí nghiệm kit STM32F103C8T6 - Viết code nạp vào board - Hiểu nguyên lý hoạt động board mạch thí nghiệm giao tiếp làm 2.7 Phương pháp nghiên cứu - Đi từ kiến thức board mạch, cách vận hành cấu hình đến lập trình nhúng - Tìm hiểu cách giao tiếp với kit STM32F103C8T6 { /* write a data byte to the display */ /* wait until LCD not busy */ lcd_Busy_Wait(); /* set RS to "data" */ SET_LCD_RS_Line(); /* set R/W to "write" */ CLR_LCD_RW_Line(); /* set data I/O lines to output (8bit) */ lcd_data_line_conf(Output); /* output data, 8bits */ lcd_data_line_write(data); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); } u8 lcd_Data_Read(void) { /* read a data byte from the display */ register u8 data; /* wait until LCD not busy */ lcd_Busy_Wait(); /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); /* set RS to "data" */ SET_LCD_RS_Line(); 51 /* set R/W to "read" */ SET_LCD_RW_Line(); /* input data, 8bits */ data = lcd_data_line_read(); /* leave data lines in input mode to save power consumption */ /* set data I/O lines to input (8bit) */ lcd_data_line_conf(Input); return data; } void lcd_Init(void) { /* initialize hardware */ lcd_Init_HW(); /* Set 4-bits interface */ lcd_Control_Write(0x33); delay(10); lcd_Control_Write(0x32); delay(10); /* Start to set LCD function */ lcd_Control_Write(LCD_DISP_INIT); /* clear LCD */ lcd_Control_Write(LCD_CLEAR_DISPLAY); /* wait 60ms */ /* set entry mode */ 52 lcd_Control_Write(LCD_INC_MODE); /* set display to on */ lcd_Control_Write(LCD_DISP_ON); /* move cursor to home and set data address to */ lcd_Control_Write(LCD_RETRN_HOME); } void lcd_Home(void) { // move cursor to home lcd_Control_Write(LCD_RETRN_HOME); delay(10); } void lcd_Clear(void) { lcd_Control_Write(LCD_CLEAR_DISPLAY); delay(5); } void lcd_GotoXY(u8 x, u8 y) { register u8 DDRAMAddr; // remap lines into proper order switch(x) { case 0: DDRAMAddr = LCD_LINE0_ADDR+y; break; case 1: DDRAMAddr = LCD_LINE1_ADDR+y; break; //case 2: DDRAMAddr = LCD_LINE2_ADDR+y; break; 16x4 or 20x4 only //case 3: DDRAMAddr = LCD_LINE3_ADDR+y; break; 53 // for LCD default: DDRAMAddr = LCD_LINE0_ADDR+y; } // set data address lcd_Control_Write(LCD_DD_RAM_PTR | DDRAMAddr); delay(5); } void lcd_Print_Data(char* data, u8 nBytes) { register u8 i; /* check to make sure we have a good pointer */ if (!data) return; /* print data */ for(i=0; iCTRL|=SysTick_CTRL_TICKINT_Msk; SysTick->LOAD=reload; 56 SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; #else fac_ms=(u16)fac_us*1000; #endif } void delay_us(u32 nus) { u32 ticks; u32 told,tnow,tcnt=0; u32 reload=SysTick->LOAD; ticks=nus*fac_us; tcnt=0; delay_osschedlock(); told=SysTick->VAL; while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow=ticks)break; } }; delay_osschedunlock(); } void delay_ms(u16 nms) { 57 if(delay_osrunning&&delay_osintnesting==0) { if(nms>=fac_ms) { delay_ostimedly(nms/fac_ms); } nms%=fac_ms; } delay_us((u32)(nms*1000)); } void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; SysTick->VAL=0x00; SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; { temp=SysTick->CTRL; }while((temp&0x01)&&!(temp&(1VAL =0X00; } void delay_ms(u16 nms) { u32 temp; SysTick->LOAD=(u32)nms*fac_ms; SysTick->VAL =0x00; SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; { temp=SysTick->CTRL; 58 }while((temp&0x01)&&!(temp&(1VAL =0X00; } #include "dht11.h" #include "delay.h" void DHT11_Rst(void) { DHT11_IO_OUT(); DHT11_DQ_OUT=0; delay_ms(20); //SET OUTPUT //DQ=0 //18ms DHT11_DQ_OUT=1; delay_us(30); //DQ=1 //20~40us } u8 DHT11_Check(void) { u8 retry=0; DHT11_IO_IN();//SET INPUT while (DHT11_DQ_IN&&retry=100)return 1; else retry=0; while (!DHT11_DQ_IN&&retry=100)return 1; return 0; } u8 DHT11_Read_Bit(void) { u8 retry=0; while(DHT11_DQ_IN&&retry