lập trình vi xử lý arm

57 1.1K 5
lập trình vi xử lý arm

Đ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

MỤC LỤC DANH MỤC HÌNH VẼ LỜI MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG VÀ QUY TRÌNH PHÁT TRIỂN HỆ THỐNG NHÚNG 1.1 Tổng quan hệ thống nhúng 1.1.1 Một số khái niệm 1.1.2 Một số ứng dụng 1.2 Quy trình phát triển hệ thống nhúng 1.2.1 Các mô hình phát triển hệ nhúng 1.2.2 Các giai đoạn phát triển hệ thống nhúng .12 1.2.2.1 Xác định yêu cầu sản phẩm 12 1.2.2.2 Lựa chọn chip 13 1.2.2.3 Phân chia phần cứng phần mềm 14 1.2.2.4 Giai đoạn phát triển 15 1.2.2.5 Tích hợp phần cứng phần mềm 15 1.2.2.6 Kiểm thử mức hệ thống nhúng 17 CHƯƠNG 2: KIẾN TRÚC ARM VÀ VI ĐIỀU KHIỂN LÕI ARM 18 2.1 Tổng quan vi xử lý ARM vi điều khiển lõi ARM 18 2.2 Kiến trúc ARM Cortex M3 .20 2.2.1 Giới thiệu ARM Cortex-M3 20 2.2.2 Kiến trúc ARM cortex M3 21 2.2.3 Mô hình giao tiếp ARM .23 2.2.4 Một số giao tiếp ARM 24 2.2.5 Tập ghi 26 2.3 Vi điều khiển STM32 29 CHƯƠNG 3: LẬP TRÌNH MÔ PHỎNG HỆ THỐNG NHÚNG 31 3.1 Thiết kế mạch với Proteus 31 3.1.1 Lấy linh kiện 31 3.1.2 Thiết kế mạch .32 3.2 Lập trình nhúng Keil C 34 3.2.1 Môi trường phát triển 34 3.2.2 Lập trình ứng dụng Keil C 38 3.2.2.1 Nguồn Clock STM32 38 3.2.2.2 Tạo thư viện Delay sử dụng SYSTICK STM32 .39 3.2.2.3 Lập trình GPIO điều khiển led đơn 41 3.2.2.4 Lập trình hiển thị LCD 43 3.2.2.5 Lập trình điều khiển USART 45 3.2.3 Nạp code cho vi điều khiển 46 CHƯƠNG 4: THỰC NGHIỆM 49 4.1 Thực nghiệm – Hiển thị LCD 49 4.2 Thực nghiệm – Giao tiếp nút nhấn điều khiển led 51 4.3 Thực nghiệm – Giao tiếp UART, LCD .53 KẾT LUẬN 55 TÀI LIỆU THAM KHẢO 57 DANH MỤC HÌNH VẼ Hình 1.1: Quan hệ hệ nhúng thời gian thực Hình 1.2: Quy trình phát triển hệ thống nhúng theo phương pháp truyền thống .9 Hình 1.3: Quy trình phát triển hệ thống nhúng theo phương pháp đồng thiết kế 10 Hình 1.4: Quy trình thiết kế xây dựng phần cứng 11 Hình 1.5: Các mức trừu tượng platform phần cứng 12 Hình 1.6: Mô tả platform phần mềm 12 Hình 1.7: Minh họa vấn đề big endian/little endian 16 Hình 2.1 Quá trình phát triển dòng vi xử lý dựa ARM7 .19 Hình 2.2 Các thành phần ARM Cortex – M3 22 Hình 2.3 Mô hình giao tiếp ARM 23 Hình 2.4 Bản đồ nhớ .24 Hình 2.5 Bộ điều khiển ngắt FIQ IRQ 25 Hình 2.6 Kiến trúc load store vi xử lý ARM Cortex-M3 .26 Hình 2.7 Tập ghi vi xử lý ARM Cortex-M3 .27 Hình 2.8 Thanh ghi trạng thái chương trình vi xử lý Cortex-M3 .27 Hình 2.9 Kiến trúc STM32 nhánh Performance Access 30 Hình 3.1 Công cụ thiết kế mạch nguyên lý – Proteus 31 Hình 3.2 Lấy linh kiện 32 Hình 3.3 Khung tìm kiếm, lựa chọn thiết bị .32 Hình 3.4 Môi trường thiết kế mạch nguyên lý 33 Hình 3.5 Sơ đồ nguyên lý mạch điều khiển đèn led 34 Hình 3.6 Lựa chọn vi xử lý 35 Hình 3.7 Thiết lập cấu trúc project 36 Hình 3.8 Cấu trúc file package project ARM .37 Hình 3.9 Thiết lập đường dấn thư viện 38 Hình 3.10a Thiết lập cấu hình debug 47 Hình 3.10b Thiết lập cấu hình thiết bị 48 Hình 3.10c Load mã hexa 48 Hình 4.1a Sơ đồ mạch 50 Hình 4.1b Định nghĩa lại chân LCD kết nối ARM 50 Hình 4.1c Hiển thị liệu lên LCD 51 Hình 4.2 Sơ đồ mạch đèn led nút bấm 51 Hình 4.2a Định nghĩa chân vào GPIO .52 Hình 4.2a Chương trình giao tiếp nút nhấn điều khiển led 53 Hình 4.2b Mạch thực nghiệm 53 Hình 4.3 Mô truyền nhận uart 54 LỜI MỞ ĐẦU Hệ thống nhúng phát triển mạnh mẽ lĩnh vực điện tử công nghệ thông tin, với ứng dụng rộng rãi công nghiệp đời sống Điều đòi hỏi hệ thống nhúng phải có cấu trúc mạnh mẽ, đáp ứng thời gian thực, nhớ lớn, tiêu thụ lượng, ổn định tích hợp nhiều thiết bị ngoại vi Vi điều khiển ARM đánh giá dòng vi điều khiển mạnh, đáp ứng yêu cầu hệ thống nhúng ngày nay, sử dụng rộng rãi giới nghiên cứu phát triển Việt Nam Trong đề tài này, tập trung nghiên cứu mô hình, kiến trúc ARM Cortex M3, quy trình phát triển hệ thống nhúng Các công cụ, môi trường thiết kế, mô mạch môi trường phát triển phần mềm nhúng sử dụng để xây dựng chương trình mô Đề tài “Nghiên cứu thử nghiệm kỹ thuật xây dựng hệ thống nhúng dựa vi điều khiển lõi ARM” bước đầu tiếp cận nhóm Qua tìm hiểu nhiều kiến thức quý báu vi điều khiển ARM, lập trình nhúng ARM đồng thời điều kiện tốt để chuẩn bị kiến thức, tài liệu quan trọng phục vụ cho đào tạo đầu chuyên ngành “Kỹ thuật phần mềm nhúng di động” Trong báo cáo này, trình bày nội dung nghiên cứu kết đạt nhóm đề tài 04 chương: Chương 1: Tổng quan hệ thống nhúng quy trình phát triển hệ thống nhúng Trong chương này, trình bày khái niệm bản, ứng dụng hệ thống nhúng đặc biệt đề xuất quy trình phát triển hệ thống nhúng Chương 2: Kiến trúc ARM Chương kiến trúc ARM nói chung kiến trúc, thành phần ARM Cortex M3 Bên cạnh đó, đặc điểm tập ghi giới thiệu chi tiết Chương 3: Lập trình mô hệ thống nhúng Chương giới thiệu công cụ thiết kế, mô mạch Proteus, thao tác bản, thành phần rõ Đồng thời việc lập trình phần mềm môi trường Keil C, kỹ thuật xuất liệu LCD, điều khiển nút nhấn hay truyền liệu USART trình bày chi tiết Chương 4: Thực nghiệm Trong phần thực nghiệm, tiến hành cài đặt chương trình thực nghiệm mô hiển thị liệu LCD, điều khiển nút bấm hiển thị đèn led truyền liệu USART Trong chương trình giao tiếp nút nhấn để điều khiển hiển thị led cài đặt nạp trực tiếp lên mạch thật chip STM32F103R, chương trình lại nạp vào mạch mô thiết kế proteus Trong trình thực đề tài, nhóm cố gắng làm việc nghiêm túc, khoa học Tuy nhiên, hạn chế thời gian kiến thức vấn đề với phát triển mạnh mẽ công nghệ nên không tránh khỏi thiếu sót, hạn chế Chúng mong nhận đóng góp nhà khoa học, cấp quản lý đồng nghiệp để chỉnh sửa bổ sung hoàn thiện Chúng xin chân thành cảm ơn Ban giám đốc, phòng Sau Đại Học, khoa Công nghệ thông tin, phòng chức thuộc Học viện Kỹ thuật Mật mã bạn đồng nghiệp tạo điều kiện thuận lợi cho việc nghiên cứu hoàn thiện đề tài Hà Nội, tháng 12/2015 CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG VÀ QUY TRÌNH PHÁT TRIỂN HỆ THỐNG NHÚNG Phần trình bày tổng quan vấn đề phát triển hệ thống nhúng Đầu tiên, trình bày khái niệm hệ thống nhúng, phần mềm nhúng hệ thống nhúng thời gian thực Sau đó, tóm lược phạm vi ứng dụng loại hệ thống nhúng điển hình Cuối cùng, trình bày giai đoạn quy trình phát triển hệ thống nhúng 1.1 Tổng quan hệ thống nhúng 1.1.1 Một số khái niệm i Hệ thống nhúng Hệ thống nhúng hệ thống tính toán gồm phần cứng phần mềm gắn theo hệ thống khác để điều khiển hoạt động xử lý thông tin hệ thống ii Hệ thống nhúng thời gian thực Hệ thống thời gian thực hệ thống mà tính đắn toàn hệ thống phụ thuộc vào tính đắn chức tính đắn thời gian Tính đắn thời gian hiểu yêu cầu hệ thống phải đảm bảo thoả mãn tính tiền định hoạt động hệ thống Tính tiền định nói lên hành vi hệ thống thực khung thời gian cho trước hoàn toàn xác định Hệ thống thời gian thực phân làm hai loại khái niệm thời gian thực cứng (hard real-time) mềm (soft real-time) - Thời gian thực cứng hệ thống hoạt động với yêu cầu thoả mãn ràng buộc khung thời gian cứng tức vi phạm dẫn đến hoạt động toàn hệ thống bị sai bị phá huỷ - Thời gian thực mềm hệ thống hoạt động với yêu cầu thoả mãn ràng buộc khung thời gian mềm, vi phạm sai lệch nằm khoảng cho phép hệ thống hoạt động chấp nhận Thực tế thấy hầu hết hệ thống nhúng hệ thời gian thực hầu hết hệ thời gian thực hệ nhúng Điều phản ánh mối quan hệ mật thiết hệ nhúng hệ thời gian thực, tính thời gian thực trở thành thuộc tính tiêu biểu hệ thống nhúng Quan hệ hệ thống nhúng hệ thống nhúng thời gian thực Hình 1.1 Hệ nhúng Hệ nhúng thời gian thực Hệ thời gian thực Hình 1.1: Quan hệ hệ nhúng thời gian thực iii Phần mềm nhúng Phần mềm nhúng phần mềm tích hợp hệ thống nhúng Mục đích phần mềm nhúng nhằm điều khiển phần cứng, cho phép đáp ứng tương tác người dùng cung cấp môi trường để phát triển phần mềm nhúng tích hợp khác 1.1.2 Một số ứng dụng Hiện nay, ứng dụng hệ thống nhúng sử dụng rộng rãi xu tăng mạnh Một số lĩnh vực, sản phẩm ứng dụng hệ thống nhúng: • Các thiết bị điều khiển, đo lường • Ô tô, tàu điện • Truyền thông • Thiết bị y tế • Các thiết bị thông minh: smart home, smart phone, • Các thiết bị điện tử tiêu dùng • Robots 1.2 Quy trình phát triển hệ thống nhúng 1.2.1 Các mô hình phát triển hệ nhúng Do đặc thù riêng nên quy trình phát triển hệ thống nhúng có số điểm khác biệt so với vòng đời phần mềm Tùy thuộc vào phương pháp tiếp cận phát triển hệ thống nhúng mà quy trình phát triển khác Có ba phương pháp phổ biến phát triển hệ thống nhúng là: phương pháp truyền thống, phương pháp đồng thiết kế phương pháp dựa platform i Phương pháp truyền thống Quy trình phát triển hệ thống nhúng theo phương pháp truyền thống mô tả Hình 1.2 sau: Hình 1.2: Quy trình phát triển hệ thống nhúng theo phương pháp truyền thống Quy trình phát triển hệ thống nhúng theo phương pháp truyền thống minh họa Hình 1.2 Căn vào đặc tả yêu cầu, mỗi tác vụ hệ thống phân thành tác vụ phần cứng tác vụ phần mềm Các tác vụ phần cứng thực theo mạch tích hợp có sẵn xây dựng tác vụ phần mềm thực CPU Phát triển phần cứng giai đoạn sau phân chia phần cứng – phần mềm Giai đoạn phát triển phần mềm thực sau phát triển phần cứng Tiếp đến giai đoạn tích hợp phần mềm lên hệ thống phần cứng, kiểm thử hệ thống, làm mẫu sản xuất Phương pháp truyền thống có hai hạn chế thời gian phát triển lâu không linh động phần mềm phát triển cho phần cứng cố định thay đổi việc phân chia phần cứng – phần mềm ii Phương pháp đồng thiết kế Phương pháp phát triển hệ thống nhúng truyền thống có thời gian phát triển lâu tách biệt phát triển phần cứng, phần mềm thành giai đoạn khác phù hợp phần cứng, phần mềm bị hạn chế Đồng thời việc đánh giá, cải tiến phân chia phần cứng – phần mềm phương pháp truyền thống gặp khó khăn Để khắc phục vấn đề này, phương pháp đồng thiết kế phần cứng – phần mềm đề xuất, triển khai Quy trình phát triển theo hướng tiếp cận đồng thiết kế Hình 1.3 Theo phương pháp này, giai đoạn thiết kế hệ thống nhúng đặc tả phân chia phần cứng – phần mềm; sau tiến hành song song mô hình phần cứng, mô hình phần mềm; sau mô hình, tiến hành liên kết phần cứng, phần mềm thực mô để đánh giá hệ thống; sau đánh giá hệ thống quay lại cải tiến, tối ưu phân chia phần cứng – phần mềm Theo đó, phương pháp rút ngắn thời gian phát triển hệ thống, tăng liên kết, phù hợp phần cứng – phần mềm thực tối ưu mức hệ thống giai đoạn thiết kế dựa phân chia phần cứng – phần mềm Hình 1.3: Quy trình phát triển hệ thống nhúng theo phương pháp đồng thiết kế Hai phương pháp phát triển hệ thống nhúng gồm ba giai đoạn phát triển phần cứng, phát triển phần mềm tích hợp Quy trình phát triển phần mềm nhúng phát triển phần mềm thông thường, gồm bước theo mô hình thác nước phân tích, thiết kế, lập trình, kiểm thử, triển khai bảo trì Điểm khác biệt việc lập trình phần mềm nhúng thường gắn với CPU thường phải sử dụng môi trường phát triển chéo Phát triển phần cứng hệ thống nhúng thường thực theo mô hình chữ Y Hình 1.3 Phát triển phần cứng hệ thống nhúng chia thành bốn mức từ mức mạch đến mức hệ thống thiết kế theo ba khía cạnh chức năng, cấu trúc bố cục vật lý Trong mức hệ thống, dựa vào thành phần CPU, RAM, ROM, cache, v.v để thiết kế, xây dựng lên hệ thống nhúng Trong mức CPU, phần tử đơn vị chức ALU, CU, cộng, nhân, ghi, v.v kết hợp để thiết kế, xây dựng CPU thành phần mức khác Các phần tử mức CPU lại thiết kế xây dựng từ cổng lôgic AND, OR, NOT, XOR, v.v mức lôgic Các cổng lôgic lại thiết kế xây dựng từ thiết bị bán dẫn mức mạch 10 if(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0)) { while(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0)); if(u8Led) { u8Led=0; } else { u8Led=1; } } } if(u8Led){ GPIO_SetBits(GPIOB, GPIO_Pin_9); //turn off the led Delay(2); GPIO_ResetBits(GPIOB, GPIO_Pin_9); //turn on the led } else{ GPIO_ResetBits(GPIOB, GPIO_Pin_9); //on led D1 } } 3.2.2.4 Lập trình hiển thị LCD Vi điều khiển STM32F103 giao tiếp với LCD qua bus liệu (8bit) từ D0 – D7 kết nối với chân PC0 – PC7; tín hiệu điều khiển RS (lựa chọn ghi liệu hay ghi lệnh LCD) nối với chân PC8; tín hiệu điều khiển RW (lựa chọn chiều trao đổi liệu read/write) nối với chân PC9; tín hiệu điều khiển EN (cho phép bus liệu 8bit LCD tích cực) nối với PC11 Trước tiên cần khởi tạo chân vào kết nối với LCD qua hàm lcd_init_IO() void lcd_Init_HW(void) { GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIO clocks for LCD control pins */ RCC_APB2PeriphClockCmd(LCD_RS_GPIO_CLK | LCD_RW_GPIO_CLK | LCD_EN_GPIO_CLK, ENABLE); /* initialize LCD control lines to output */ GPIO_InitStructure.GPIO_Pin = LCD_RS_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_RS_GPIO_PORT, &GPIO_InitStructure); 43 GPIO_InitStructure.GPIO_Pin = LCD_RW_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LCD_RW_GPIO_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = LCD_EN_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(LCD_EN_GPIO_PORT, &GPIO_InitStructure); /* Enable GPIO clocks for LCD data pins */ RCC_APB2PeriphClockCmd(LCD_DATA_GPIO_CLK, ENABLE); /* initialize LCD data port to input */ GPIO_InitStructure.GPIO_Pin = LCD_DATA_GPIO_PINS; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LCD_DATA_GPIO_PORT, &GPIO_InitStructure); } Hàm void lcd_Control_Write(param) thực việc ghi lệnh điều khiển tới LCD Để thiết lập LCD cho phép xuất kí tự ta cần khởi tạo hàm hiển thị LCD thông qua việc gọi làm với tham số param = LCD_DISP_INIT; Kế tiếp xóa hình LCD enable chế độ hiển thị thông qua tham số param = LCD_CLEAR_DISPLAY param = LCD_DISP_ON Việc hiển thị liệu hình LCD thực đơn giản với hàm printf ví trí Cụ thể sau: void main(void) { /* Configure the system clocks */ RCC_Configuration(); /* initialize LCD */ lcd_Init(); /* print message on LCD */ lcd_GotoXY(0,0); printf("CHAO MUNG DEN =>"); lcd_GotoXY(1,0); printf(" WWW.ACTVN.EDU.VN"); while (1) { /* Insert delay */ Delay(100); 44 } } 3.2.2.5 Lập trình điều khiển USART Giao tiếp USART việc truyền thông không đồng vi điều khiển với thiết bị khác (máy tính, vi điều khiển khác, …) Trong STM32 F103, chân TX làm nhiệm vụ truyền liệu nối với PA9, RX nối với PA10 thực việc nhận liệu Để lập trình điều khiển USART, ta cấu hình chân PA9, PA10 USSART sau: GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //TX - USART1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; // RX - USART1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); Hàm USARTx_Configuration(USART1): Đây hàm khởi tạo cho USART1(nằm File user_uart), cách cấu hình thông số cho USART1 hàm này: void USARTx_Configuration(USART_TypeDef* USARTx) { USART_InitTypeDef USART_InitStructure; if(USARTx==USART1) RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); else if(USARTx==USART2) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); else if(USARTx==USART3) RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE); USART_DeInit(USARTx); USART_InitStructure.USART_BaudRate = 9600; // Cau hinh BaudRate USART_InitStructure.USART_WordLength = USART_WordLength_8b; // Cau hinh so Bit du lieu USART_InitStructure.USART_StopBits = USART_StopBits_1; // Cau hinh so Bit STOP khung truyen USART_InitStructure.USART_Parity = USART_Parity_No; // Cau hinh su dung che Parity USART_InitStructure.USART_HardwareFlowControl= USART_HardwareFlowControl_None; // Cau hinh che dieu khien theo luong USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; 45 // Cau hinh che truyen nhan USART_Init(USARTx, &USART_InitStructure); // Cau hinh USART1 USART_ITConfig(USARTx, USART_IT_RXNE, ENABLE); USART_ITConfig(USARTx, USART_IT_TXE, ENABLE); USART_Cmd(USARTx, ENABLE); //kich hoat usart } Sau cấu hình thông số USART, ta thực việc truyền, nhận chuỗi kí tự với hàm USART_SendString(USART1,str); USART_ReceiveData(USART1); Đoạn chương trình thực việc truyền chuỗi ký tự lên PC nhận ký tự từ PC gửi xuống để điều khiển đèn led: void main() { char str[50],i; SystemInit(); NVIC_Configuration(); GPIO_Configuration(); TIMER1_Configuration(); USART1_Configuration(); delay_init(72); USART_SendString(USART, "Chao mung den voi ARM\r\n"); sprintf(str,"\n\rDEMO USART\n\r"); USART_SendString(USART1,str); while(1) { unsigned char c; c=USART_ReceiveData(USART1); if(c=='1'){ PORTB=0x00;} if(c=='2'){ PORTB=0xFF;} } } 3.2.3 Nạp code cho vi điều khiển Sau biên dịch chương trình Keil C, thu file hex nạp trực tiếp lên vi điều khiển để thực thi Việc nạp vào vi điều khiển thực với công cụ ST- Link Trước tiên cần cấu hình thiết bị đích để việc biên dịch mã hexa phù hợp với thiết bị nạp Hình 3.10 bước thực cấu hình cho debug, tab debug lựa chọn ST-Link debugger, tiếp đến thiết lập số setting cổng load liệu thông số vi xử lý cần nạp 46 Hình 3.10a Thiết lập cấu hình debug 47 Hình 3.10b Thiết lập cấu hình thiết bị Sau thiết lập thông số cần thiết bước trên, cần load mã hexa lên để chương trình thực thi vi điều khiển hình 3.10c đây: Hình 3.10c Load mã hexa 48 CHƯƠNG 4: THỰC NGHIỆM Trong chương này, nhóm đề tài cài đặt thực nghiệm số nội dung sau: - Chương trình điều khiển hoạt động đèn led đơn, cho phép nháy led theo chế độ khác - Chương trình điều khiển nút bấm Khi người dùng bấm nút nhấn s2 nhấp nháy đèn led - Chương trình hiển thị liệu lên LCD Trong trình thực nghiệm, sử dụng công cụ Proteus để thiết kế, mô mạch Chương trình điều khiển viết ngôn ngữ C môi trường Keil C Mã nguồn chương trình biên dịch mã hexa, nạp trực tiếp lên mạch mô để thử nghiệm Bên cạnh đó, cài đặt thử nghiệm việc nạp code lên mạch thật với vi xử lý STM32F103R với chương trình đầu tiên: nhấp nháy đèn led tương tác nút bấm để điều khiển đèn led đơn 4.1 Thực nghiệm – Hiển thị LCD Trong phần giới thiệu thực nghiệm mô hiển thị liệu LCD Chương trình hiển thị lên hình LCD dòng chữ: “Le Cuong => CNTT – KMA” Trong thực nghiệm nhóm đề tài mô mạch proteus 7.10, sơ đồ mạch nguyên lý thiết kế mô hình 4.1a Trong chân D4 – D7 chân data, chân RS, RW, E chân điều khiển Lập trình điều khiển việc hiển thị liệu LCD trước tiên cần định nghĩa lại chân kết nối lên LCD file lcd.h hình 4.1b Sau định nghĩa, việc xuất liệu hình LCD thực đơn giản thông qua câu lệnh: /* initialize LCD */ lcd_Init(); /* print message on LCD */ lcd_GotoXY(0,0); printf(" Le cuong "); lcd_GotoXY(1,0); printf(" CNTT - kma"); 49 Hình 4.1a Sơ đồ mạch Hình 4.1b Định nghĩa lại chân LCD kết nối ARM Sau nạp chương trình cho mạch mô thực thi thu kết hình 4.1c Màn hình LCD hiển thị nội dung dòng: Le cuong CNTT – kma 50 Hình 4.1c Hiển thị liệu lên LCD 4.2 Thực nghiệm – Giao tiếp nút nhấn điều khiển led Thực nghiệm thứ điều khiển nút bấm để thay đổi kiểu nhấp nháy đèn led Chương trình thực chu trình lặp, nhấp nháy led D2 bấm nút S1 led D1 nhấp nháy Sơ đồ mạch đèn led nút nhấn vi điều khiển STM32F103R mô tả hình 4.2, đèn led D1 D2 nối với chân PB9 PB8, nút nhấn S2 nối PC0 S3 nối với PC1 Hình 4.2 Sơ đồ mạch đèn led nút bấm 51 Việc cài đặt chương trình điều khiển cho đèn nút nhấn trước tiên phải thực định nghĩa chân tương ứng sau: Hình 4.2a Định nghĩa chân vào GPIO Điều khiển giao tiếp nút nhấn việc kiểm tra trạng thái nút nhấn S1 có nhấn hay không thông qua việc gọi hàm GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_0) từ thư viện cung cấp ST Trong nút nhấn thực câu lệnh nhấp nháy led hình 4.2a 52 Hình 4.2a Chương trình giao tiếp nút nhấn điều khiển led Chương trình biên dịch mã hexa, nạp cho vi điều khiển STM32F103R thực thi với yêu cầu, theo hình 4.2b Hình 4.2b Mạch thực nghiệm 4.3 Thực nghiệm – Giao tiếp UART, LCD Trong phần này, cài đặt chương trình thực nghiệm mô Proteus, mô việc trao đổi liệu vi xử lý với máy tính Chương trình máy tính mô virtual terminal, vi xử lý kết nối với hình LCD cài đặt chương trình cho phép mã hóa/giải mã liệu đến theo thuật toán đơn giản Trên virtual terminal, người dùng nhập liệu truyền đến vi xử lý Vi xử lý nhận liệu vào yêu cầu mã hóa hay giải mã để thực hành động tương ứng sau hiển thị liệu gốc lên LCD, đồng thời gửi liệu trả cho terminal Hình 4.3 mô việc truyền nhận UART vi xử lý máy tính (virtual terminal) Dữ liệu người dùng nhập terminal truyền đến vi xử lý, việc mã hóa thực theo cách đơn giản đảo ngược chuỗi liệu gửi trả cho terminal Đồng thời vi xử lý gửi liệu nhận lên hình LCD 53 Hình 4.3 Mô truyền nhận uart 54 KẾT LUẬN Trong trình thực đề tài, nhóm nghiên cứu gặp không khó khăn lần tiếp cận với hướng nghiên cứu Kiến thức điện tử ỏi hạn chế lớn Tuy nhiên sau thời gian nỗ lực tìm tòi, nghiên cứu nhóm đạt số kết sau: - Tìm hiểu tổng quan ARM đề xuất mô hình phát triển phần mềm nhúng Việc phát triển phần mềm nhúng có đặc điểm khác biệt với phát triển phần mềm thông thường phải can thiệp, nghiên cứu phần cứng lẫn phần mềm - Nghiên cứu kiến trúc ARM nói chung kiến trúc, thành phần ARM Cortex M3, dòng chip phổ dụng, dễ tiếp cận - Nghiên cứu mô vi điều khiển công cụ Proteus lập trình phần mềm điều khiển môi trường Keil C Các thành phần, kỹ thuật thiết kế mạch nguyên lý lập trình điều khiển giao tiếp số thiết bị nhóm làm rõ điều khiển đèn led, hiển thị LCD, giao tiếp với nút bấm - Thực nghiệm: nhóm đề tài cài đặt số thực nghiệm minh họa cho nội dung tìm hiểu Đặc biệt cài đặt nạp code lên kit thực tế, thực thi tốt Với nội dung đạt trên, đề tài tạo điều kiện để nhóm nghiên cứu nắm bắt kiến thức, kỹ phát triển hệ thống nhúng ARM mà tài liệu quan trọng để xây dựng số môn học liên quan chương trình đào tạo đầu chuyên ngành “Kỹ thuật phần mềm nhúng di động” Bên cạnh đề tài đề xuất quy trình phát triển phần mềm nhúng, góp phần nâng cao chất lượng phần mềm nhúng, sở tiến đến kỹ thuật tối ưu hóa hệ thống nhúng khâu thiết kế phần cứng kết hợp phần mềm Hướng phát triển Trong thời gian tới tiếp tục nghiên cứu sâu lập trình nhúng vi điều khiển ARM Cortex M3 Nghiên cứu sâu sắc vấn đề thiết kế mạch để từ bổ sung kiến thức quý báu điện tử, hỗ trợ tốt việc lập trình ứng dụng vi điều khiển lõi ARM Chúng tiếp tục nghiên cứu, xây dựng chương trình ứng dụng điều khiển thiết bị khác cách toàn diện hơn, sâu sắc Từ xây dựng ứng dụng mang tích thực tiễn 55 Việc lập trình phần mềm nhúng vi điều khiển nhiều tổ chức, cá nhân quan tâm Tuy nhiên phát triển phần mềm nhúng theo quy trình để đảm bảo chất lượng phần mềm bỏ ngỏ Đặc biệt việc kiểm thử chương trình nhúng chưa quan tâm Vì nhóm tiếp tục quan tâm nghiên cứu đến khía cạnh nhằm đảm bảo, nâng cao chất lượng phần mềm nhúng 56 TÀI LIỆU THAM KHẢO Tài liệu tiếng việt [1] Ngô Diên Tập, Vi điều khiển với lập trình C, NXB Khoa học kỹ thuật Hà Nội (2006) Tài liệu tiếng anh [1] ARM Developer Suite -Assemler Guide, 2011 [2] Andy Wu, ARM SOC Architecture, 2003 [3] Michael G Morrow, ARM7TDMI Instruction Set Reference, 2009 [4] Joseph Yiu, The Definitive Guide to the ARM Cortex-M3, 2007 [5] Steve Furber, ARM-SoC Architecture, Addison Wesley [6] STMicrocontroller, datasheet STM32F103R [7] STMicrocontroller, LC Studio board user’s manual & Schematic, 2013 [8] STMicrocontroller, Reference manual advanced ARM-based 32-bit MCUs, 2011 57 [...]... tìm kiếm một vi xử lý cho dự án PDA của họ Sau nhiều lần thương thảo dẫn tới kết quả là nhóm thiết kế vi xử lý của Acorn tách ra khỏi Acorn vào cuối năm 1990 để trở thành công ty Advanced RISC Machines Ltd, hay gọi tắt là ARM Ltd 2.1 Tổng quan về vi xử lý ARM và vi điều khiển lõi ARM ARM (Advanced RISC Machines) là bộ vi xử lý với kiến trúc tập lệnh RISC cải tiến Vi xử lý ARM đầu tiên là ARM1 , ra đời... ĐIỀU KHIỂN LÕI ARM Vi xử lý ARM có nguồn gốc trong một công ty máy tính của Anh có tên là Acorn Vào giữa những năm 1980, người ta tìm kiếm vi xử lý để thay thế cho vi xử lý 6502 được dùng rộng rãi trong các trường học ở Anh Không có kiến trúc 16-bit nào thỏa mãn các yêu cầu ở thời điểm đó Vì thế vi xử lý 32-bit đã được thiết kế cho mục đích này Những công ty khác cũng quan tâm tới vi xử lý này, bao gồm... lượng, bộ ngắt mạch, UPS, tự động hóa nhà máy - Đầu đọc thẻ, máy ATM, máy tính tiền, máy bán hàng Họ ARM7 gồm có các vi xử lý: ARM7 TDMI-S, ARM7 TDMI, ARM7 EJ-S Quá trình phát triển và các dòng vi xử lý dựa trên ARM7 được mô tả như trong Hình 2.1 18 Hình 2.1 Quá trình phát triển và các dòng vi xử lý dựa trên ARM7 Một trong những lĩnh vực quan trọng của hệ thống nhúng là điều khiển và tự động hóa Để rút ngắt... Access 30 CHƯƠNG 3: LẬP TRÌNH MÔ PHỎNG HỆ THỐNG NHÚNG Trong chương này sẽ giới thiệu kỹ thuật và công cụ thiết kế mạch, chạy mô phỏng mạch trên Proteus, tiếp đến là lập trình phát triển hệ thống nhúng trên môi trường Keil C Các vi xử lý lõi ARM ngày nay rất phong phú và đa dạng, vi c phát triển các ứng dụng trên đó đang được quan tâm mạnh mẽ Lập trình điều khiển vi xử lý ARM được vi t bởi ngôn ngữ C... hiện công vi c Nếu hệ thống phải thực hiện vi c xử lý quan trọng, xử lý bộ đệm, hoặc những tính toán khác thì tỉ lệ cập nhật sẽ giảm xuống Liệu có một mạch tích hợp đơn (IC) hoặc một thiết bị logic khả trình (PLD) thực hiện được công vi c không? nếu có thì sử dụng bộ vi xử lý là không cần thiết Hệ thống có nhiều đầu vào và ra, như công tắc hay màn hình hiển thị không? nếu có thì bộ vi xử lý sẽ giải... lựa chọn thay vì sử dụng bộ vi xử lý Thiết kế có được sửa đổi khi hoàn thành hoặc thay đổi trong quá trình thiết kế Có cần phải tuỳ biến sản phẩm cho những phiên bản đặc biệt không Những yêu cầu này đều ảnh hưởng đến vi c có lựa chọn bộ vi xử lý hay không Giả sử chúng ta đã quyết định sử dụng bộ vi xử lý cho hệ thống nhúng của mình thì vấn đề tiếp theo là lựa chọn bộ vi xử lý cho phù hợp với hệ thống... được hiệu suất cao của tập lệnh ARM 32-bit với mật độ mã chương trình tối ưu của tập lệnh Thumb 16 bit Tập lệnh Thumb-2 được thiết kế đặc biệt dành cho trình biên dịch C/C++, tức là các ứng dụng dựa trên nền Cortex hoàn toàn có thể được vi t bằng ngôn ngữ C mà không cần đến chương trình khởi động vi t bằng Assembly như ARM7 và ARM9 2.2.2 Kiến trúc ARM cortex M3 Vi xử lý ARM cortex M3 gồm một nhân cortex... SAM3S SAM3N SAM3A SAM3X Stellari 2.2 Kiến trúc ARM Cortex M3 2.2.1 Giới thiệu ARM Cortex-M3 Bộ vi xử lý ARM Cortex-M3 là bộ xử lý ARM thế hệ mới cho các hệ thống nhúng Nó được phát triển để cung cấp một nền tảng chi phí thấp, đáp ứng yêu cầu thực thi của MCU với vi c giảm số bóng bán dẫn trong lõi ARM Cortex dẫn tới tiêu thụ năng lượng thấp và giảm giá thành vi xử lí, đồng thời cung cấp hiệu năng tính toán... là một giải pháp tốt Vi điều khiển là một dạng cụ thể của SoC Vi điều khiển là một vi mạch tích hợp bao gồm một vi xử lý và bộ nhớ ROM, RAM và flash Có nhiều họ vi điều khiển khác nhau như AVR, PIC, v.v nhưng vi điều khiển lõi ARM vẫn được dùng rộng rãi với các mức khác nhau của phần mềm nhúng từ các chương trình nhúng đơn, đến mức máy ảo và mức hệ điều hành Họ vi điều khiển lõi ARM được tổng hợp trong... trực tiếp các chỉ thị dấu phảy động trong chương trình Nếu PC không có một đơn vị xử lý dấu phẩy động, thì mã chương trình dịch phải chuyển những chỉ thị dấu phảy động thành tập chỉ thị xử lý dấu phẩy tĩnh tương đương Nói cách khác, hệ thống sẽ thực hiện vấn đề xử lý dấu phảy động trên phần mềm Tuy nhiên điều này sẽ chậm hơn nhiều so với có đơn vị xử lý dấu phảy động trên bảng mạch Mặt khác, những yêu

Ngày đăng: 22/09/2016, 22:25

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan