nghiên cứu về chip ARM cortex m3 LM3S8962 của hãng texas instruments

77 198 0
  • Loading ...
1/77 trang

Thông tin tài liệu

Ngày đăng: 21/04/2017, 00:12

Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử LỜI MỞ ĐẦU Ngày với phát triển nghành khoa học kỹ thuật, kỹ thuật điện tử mà kỹ thuật vi điều khiểm đóng vai trò quan trọng lĩnh vực khoa học, kỹ thuật, quản lí, công nghiệp tự động hoá, cung cấp thông tin,… Do phải nắm bắt vận dụng cách có hiệu nhằm góp phần vào phát triển khoa học kỹ thuật nói chung phát triển kỹ thuật điện tử nói riêng Các dòng vi điều khiển 8051 sinh viên sử dụng nhiều với tính đơn giản, dễ sử dụng; AVR sử dụng nhiều thi Robocon nhờ tốc độ xử lý cao, ổn định; PIC với ưu tốc độ cao, chi phí thấp nghiên cứu, sử dụng nhiều, đặc biệt thi lập trình tay nghề khu vực giới… Nhưng vài năm trở lại họ vi điều khiển ARM, Với nhiều hệ đời, với nhiều tính năng,công dụng khác ngày nắm vị trí quan trọng lĩnh vực đòi hỏi tốc độ xử lý cao điện tử viễn thông, giám sát, an ninh Chíp ARM nghiên cứu phát triển ứng dụng rộng rãi đo lường điều khiển Đặc biệt chíp ARM nghiên cứu ứng dụng để sản xuất thiết bị cầm tay điện thoại, máy ảnh thiết bị đòi hỏi tốc độ xử lý cao tivi, thiết bị xử lý tín hiệu số… Với nhiều tính vượt trội ARM xu lựa chọn dòng vi điều khiển Việt Nam nên đề tài nghiên cứu khoa học này, giúp đỡ cô Dương Thị Hằng, chúng em thực đề tài nghiên cứu chip ARM Cortex M3 LM3S8962 hãng Texas Instruments GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử LỜI CẢM ƠN Chúng em xin chân thành cảm ơn cô Dương Thị Hằng, thầy Phạm Văn Chiến, thầy Nguyễn Văn Tùng, thầy Nguyễn Anh Dũng thầy cô khoa Điện Tử hướng dẫn, tư vấn, giảng dạy, cung cấp tài liệu phần mềm bổ ích tạo điều kiện hết mức trình học học thực hành nhờ mà chúng em hoàn thành đề tài nghiên cứu này! Trong trình làm đề tài hạn chế thời gian ,nguồn tài liệu tham khảo, kiến thức hạn hẹp nên đề tài nghiên cứu nhiều thiếu sót, nhiều lỗi kỹ thuật báo cáo, nên mong đóng góp ý kiến Hội đồng bảo vệ thầy cô để đề tài nghiên cứu chúng em hoàn thiện Em xin chân thành cảm ơn! Sinh viên thực hiện: Trịnh Đình Chương GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Chương I: Tổng quan kiến trúc ARM Cortex M3 Các dòng vi điều khiển Stellaris – ARM ® ™ Cortex-M3 - mang lại ứng dụng vi điều khiển nhúng hiệu suất cao 32-bit Những phận tiên phong cung cấp cho khách hàng 32-bit hoạt động chi phí tương đương với vi điều khiển kế thừa bit 16bit Các Stellaris cung cấp hiệu suất hiệu hội nhập sâu rộng, thiết bị định vị thuận lợi với chi phí hợp lý, ứng dụng đòi hỏi phải kiểm soát trình đáng kể khả kết nối Dòng Stellaris LM3S8000 kết hợp công nghệ Bosch Controller Area Network với 10/100 Ethernet Media Access Control (MAC) lớp vật lý (PHY) Các vi điều khiển LM3S8962 mục tiêu cho ứng dụng công nghiệp, bao gồm giám sát từ xa, máy bán điện tử, thiết bị kiểm tra đo lường, thiết bị mạng thiết bị chuyển mạch, nhà máy tự động hóa, HVAC kiểm soát tòa nhà, thiết bị chơi game, điều khiển chuyển động, thiết bị y tế, cứu hỏa an ninh Đối với ứng dụng yêu cầu tiết kiệm lượng, LM3S8962 đề cao mô-đun pin hiệu theo, đưa lượng tiêu hao LM3S8962 đến trạng thái lượng thấp thời gian dài không hoạt động Với chuỗi power-up/power-down, đồng hồ thời gian thực lien tục (RTC), cặp ghi phù hợp, giao diện APB với bus hệ thống, nhớ không bay dành riêng, mô-đun Hibernation, vi điều khiển LM3S8962 hoàn hảo cho ứng dụng pin Ngoài ra, vi điều khiển LM3S8962 cung cấp lợi ARM phổ biến rộng rãi với công cụ phát triển, System-on-Chip (SoC) ứng dụng sở hạ tầng IP, cộng đồng lớn người dùng Ngoài ra, vi điều khiển ARM sử dụng Thumb ® tương thích Thumb-2 hướng dẫn thiết lập để giảm nhớ yêu cầu và, chi phí giảm theo Cuối cùng, vi điều khiển LM3S8962 mã tương thích cho tất thành viên gia đình Stellaris rộng, cung cấp linh hoạt để phù hợp xác nhu cầu khách hàng 1.1 Tính sản phẩm Các vi điều khiển LM3S8962 bao gồm tính sau: GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử ■ 32-bit RISC - 32-bit ARM Cortex ® ™-M3 v7M kiến trúc tối ưu hóa với chân linh kiện nhỏ cho ứng dụng nhúng - Hệ thống hẹn (SysTick), cung cấp đơn giản, 24-bit tự động nạp lại, tạo kiện ngắt đếm xuống mức zero, truy cập với chế điều khiển linh hoạt, thiết kế cho hệ điều hành thời gian thực - Thumb ® tương thích Thumb-2-nhằm đạt hiệu suất cao tập lệnh ARM-32bit với mật độ ma chương trình tối ưu tập lệnh Thumb 16bit - Hoạt động 50-MH - Chia phần cứng khuếch đại chu trình đơn - Tích hợp Bộ điều khiển vector ngắt lồng (NVIC) cung cấp tính định xử lý ngắt - 36 ngắt với tám cấp độ ưu tiên - Khối bảo vệ nhớ (MPU), cung cấp chế độ đặc quyền cho cấu trúc hệ điều hành bảo vệ - Truy cập liệu độc lập, cho phép liệu đóng gói vào nhớ hiệu - Thao tác bit (dải bit), cung cấp sử dụng nhớ tối đa kiểm soát thiết bị ngoại vi hợp lý ■ ARM Cortex ® ™-M3 Processor Core - Lõi thu gọn - Thumb-2, cung cấp tính cao dự kiến lõi ARM kích thước nhớ thường kết hợp với - 16-bit thiết bị; thường khoảng vài kilobyte nhớ cho ứng dụng lớp vi điều khiển - Nhanh chóng thực thông qua ứng dụng kiến trúc Harvard bus đặc trưng riêng biệt cho điều khiển liệu - Xử lý gián đoạn vượt trội, cách thực thao tác ghi cần thiết để xử lý gián đoạn phần cứng - Tính định, xử lý ngắt nhanh chóng: 12 chu kỳ, có chu kỳ với kỹ thuật tail-chaining GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử - Đơn vị bảo vệ nhớ (MPU) cung cấp chế độ ưu tiên để thực ứng dụng phức tạp - Dịch chuyển từ gia đình xử lý ARM7 ™ cho hiệu tốt hiệu lượng - Đầy đủ tính giải pháp gỡ rối • JTAG Debug Serial Port (SWJ-DP) • Flash Patch Breakpoint (FPB) đơn vị để thực điểm ngắt • DataWatchpoint Trigger (DWT) đơn vị thực watchpoints, nguồn trigger hệ thống hồ sơ • Instrumentation Trace Macrocell (ITM) để hỗ trợ gỡ rối kiểu printf • Trace Port Interface Unit (TPIU) để chuyển tiếp đến Trace Port Analyzer - Tối ưu hóa cho việc sử dụng flash đơn chu kỳ - Ba chế độ ngủ với điện thấp - Hướng dẫn đơn chu kỳ phân chia phần cứng - Hoạt động nguyên tử - ARM Thumb2 16-/32-bit tập lệnh hỗn hợp - 1.25 DMIPS/MHz ■ JTAG - IEEE 1.149,1-1990 tương thích điều khiển Test Access Port (TAP) - Bốn-bit ghi điều khiển (IR) để lưu trữ thị JTAG - Tiêu chuẩn thị IEEE: BYPASS, IDCODE, SAMPLE/PRELOAD, EXTEST INTEST - ARM thêm thị: APACC, DPACC ABOR - Tích hợp ARM Serial Wire Debug (SWD) ■ Hibernation - Hệ thống điều khiển công suất sử dụng điều chỉnh bên riêng biệt - Pin chuyên dụng để báo tín hiệu bên - Phát pin thấp, báo hiệu tạo ngắt - Đồng hồ thời gian thực (RTC) 32-bit - Hai ghi RTC 32-bit phù hợp cho thức dậy tạo ngắt GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử - Xung nhịp nguồn từ dao động bên 32,768-kHz thạch anh 4,194304-MHz - RTC vi chỉnh để điều chỉnh tốt với tỷ lệ xung nhịp - 64 từ nhớ 32-bit không bay - Có thể lập trình ngắt cho RTC phù hợp, đánh thức bên ngoài, kiện pin thấp ■ Bộ nhớ - 256 KB flash - 64 kB SRAM ■ GPIOs - 5-42 GPIOs, tùy thuộc vào cấu hình - 5-V, tùy vào cấu hình đầu vào - Có thể lập trình điều khiển cho ngắt GPIO • Tạo ngắt • Gây ngắt theo sườn: lên, xuống hai • Ngắt theo mức : cao thấp - Đọc ghi hoạt động bit thông qua dòng địa - Có thể bắt đầu chuỗi mẫu ADC - Các Pin cấu đầu vào kỹ thuật số Schmitt-Trigger - Có thể lập trình điều khiển để cấu hình chân GPIO • Điện trở kéo lên nguồn, kéo xuống mass • 2-mA, 4-mA, 8-mA để giao tiếp kỹ thuật số; cấu hình lên đến 18-mA cho ứng dụng cần dòng lớn • Cho phép đầu vào kỹ thuật số ■ General-Purpose Timers - General-Purpose Timer Modules (GPTM), cung cấp hai timer/counter 16-bit Mỗi GPTM cấu hình để hoạt động độc lập: • Là đếm thời gian 32-bit • Là đồng hồ thời gian thực 32-bit (RTC) để nắm bắt kiện • Dùng cho điều chế rộng xung (PWM) • Để kích hoạt chuyển đổi tương tự - số GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử - Chế độ Timer 32-bit • Có thể lập trình one-shot thời gian • Có thể lập trình theo chu kỳ thời gian • Real-Time Clock sử dụng xung nhịp 32,768-KHz bên đầu vào • Người dùng dừng trình gỡ rối • Kích hoạt ADC - Chế độ Timer 16-bit • Chức độ định thời với chia 8-bit (cho chế độ one-shot chế độ theo chu kỳ) • Có thể lập trình one-shot thời gian • Có thể lập trình theo chu kỳ thời gian • Người dùng dừng trình gỡ rối • Kích hoạt ADC - Chế độ Input Capture 16-bit • Capture đầu vào theo sườn • Capture đầu vào theo thơi gian - Chế độ PWM 16bit • Chế độ PWM đơn giản với đầu lập trình phần mềm tín hiệu PWM ■ Watchdog Timer - Bộ đếm xuống 32-bit với ghi tải lập trình - Xung watchdog riêng biệt - Có thể lập trình tạo ngắt - Khóa ghi bảo vệ từ phần mềm sai - Thiết lập lại logic với phép / vô hiệu hóa - Người dùng dừng trình gỡ rối ■ ADC - Bốn kênh đầu vào analog - Cảm biến nhiệt độ bên on-chip - Tốc độ lấy mẫu 500.000 mẫu / giây GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử - Dễ dàng cấu hình chuyển đổi tương tự - số - Linh hoạt kích hoạt điều khiển • Bộ điều khiển (phần mềm) • Timers • So sánh tương tự • PWM • GPIO - Phần cứng trung bình lên đến 64 mẫu để cải thiện độ xác - Chuyển đổi sử dụng tham chiếu 3-V nội - Nguồn mass cho mạch tương tự tách biệt với nguồn mass mạch kỹ thuật số ■ UART - Hai chuẩn lập trình đầy đủ 16C550-loại UARTs với hỗ trợ IrDA - 16x8 truyền (TX) nhận (RX) FIFOs riêng biệt để giảm tải ngắt CPU - Có thể lập trình cho phép tốc độ lên tới 3,125 Mbps - Các mức độ FIFO / 8, / 4, / 2, / 4, / - Tiêu chuẩn giao tiếp không đồng với bit bắt đầu, dừng lại, tính chẵn lẻ - Phát sửa lỗi đường truyền - Lập trình đầy đủ đặc tính giao diện nối tiếp • 5, 6, 7, bit liệu • Tạo kiểm tra bit chẵn, lẻ không • Tạo bit dừng - Cung cấp mã hóa / giải mã IrDA serial -IR (SIR) • Lập trình sử dụng IrDA Serial Infrared (SIR) đầu vào / đầu UART • Hỗ trợ chức mã hóa / giải mã IrDA SIR cho tốc độ liệu lên đến 115,2 Kbps bán song công • Hỗ trợ mức lượng / 16 bình thường mức lượng thấp (1,41-2,23 μs) thời lượng bit GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử • Có thể lập trình lấy xung clock chia 1-256 cho chế độ lượng thấp ■ Giao diện nối tiếp đồng (SSI) - Hoạt động master slave - Có thể lập trình xung nhịp tốc độ bit chia xung nhịp - Truyền nhận FIFOs riêng biệt, 16 bit rộng, vị trí sâu - Có thể lập trình giao diện hoạt động giao diện nối tiếp đồng Freescale SPI, MICROWIRE, hay Texas Instruments - Lập trình khung liệu 4-16 bit - Chế độ kiểm tra ngược bên để kiểm tra phán đoán / gỡ rối ■ I2C - Các thiết bị bus I2C định master slave • Hỗ trợ việc gửi nhận liệu master slave • Hỗ trợ hoạt động đồng thời master slave - Bốn chế độ I2C • Master truyền • Master nhận • Slave truyền • Slave nhận - Hai tốc độ truyền dẫn: Tiêu chuẩn (100 Kbps) nhanh (400 Kbps) - Nguồn ngắt master slave • Master tạo ngắt hoạt động truyền nhận hoàn thành (hoặc hủy bỏ lỗi) • Slave tạo ngắt liệu gửi yêu cầu master - Master với phân xử xung nhịp đồng bộ, hỗ trợ đa chủ, chế độ 7-bit địa ■ Controller Area Network (CAN) - CAN giao thức phiên 2.0 A / B - Tốc độ bit lên đến Mbps - 32 tin nhắn với nhận dạng mask cá nhân - Ngắt mask GVHD: Dương Thị Hằng Page: SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử - Vô hiệu hoá chế độ tự động gửi lại cho ứng dụng Time-Triggered CAN (TTCAN) - Lập trình kiểm tra ngược cho chế độ tự kiểm tra - Cho phép lập trình FIFO lưu trữ nhiều đối tượng nhắn tin - Kèm theo giao diện CAN bên thông qua tín hiệu CANnTX CANnRX ■ 10/100 Ethernet Controller - Phù hợp với đặc điểm kỹ thuật IEEE 802,3-2002 • 10Base-T/100Base-TX IEEE-802,3 • 10Base-T/100Base-TX ENDEC, 100BASE-TX Scrambler / descrambler - Nhiều chế độ hoạt động • Song công bán song công 100 Mbps • Song công bán song công 10 Mbps • Chế độ tiết kiệm điện giảm công suất xuống - Cấu hình cao • Lập trình địa MAC • Lựa chọn hoạt động LED • Hỗ trợ chế độ pha tạp • Điều khiển loại bỏ lỗi CRC •Người dùng cấu hình ngắt - Thao tác truyền thông vật lý • Tự động MDI / MDI-X qua chỉnh sửa • Tự động điều chỉnh phân cực tiếp nhận tín hiệu 10BASE-T - IEEE 1588 Giao thức Thời gian xác - cung cấp thời gian xác cao cho gói cá nhân Bộ so sánh tương tự - Tích hợp so sánh tương tự - Cấu hình cho đầu để điều khiển chân đầu ra, tạo ngắt, bắt đầu mẫu ADC trình tự - So sánh đầu vào chân bên để lập trình điện áp tham chiếu bên GVHD: Dương Thị Hằng Page: 10 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Ta kết nối hình – Chân DS (chân 14: nhận liệu) chân nhận liệu nối tiếp từ VĐK – Chân SH_CP (chân 11: đk nhận) chân nhận xung dịch liệu Khi VĐK xuất liệu qua chân DS ta cần xung chân SH_CP liệu dịch vào 74HC595 – Chân ST_CP (chân 12: đk xuất) chân nhận xung xuất liệu Khi liệu dịch vào 74HC595 ta cần xung chân ST_CP liệu dich ngõ – Chân MR (Master Reset) chân tích cực mức thấp Ta nối lên nguồn VCC – Chân OE (Output Enable) chân cho phép ngõ Chân tích cực mức thấp Ta nối xuống GND _Các chân từ Q0, Q1, Q2,…Q7 chân ngõ 74HC595 _ chân Q7 (chân 9) ngõ liệu nối tiếp Khi dùng nhiều 74HC595 mắc nối tiếp chân đưa vào đầu vào (DS) dịch đủ bit Chú ý: Khi dịch liệu vào ghi 8-STAGE SHIFT REGISTER, chưa tạo xung STCP ghi 8-BIT STORAGE REGISTER giữ nguyên trạng thái ngõ giữ nguyên trạng thái Khi chân MR mức liệu ghi 8-STAGE SHIFT REGISTER bị xóa, ghi 8-BIT STORAGE REGISTER giữ nguyên trạng thái ngõ giữ nguyên trạng thái Với IC 74HC595 mở rộng ngõ (như ta thêm ngõ ) Để mở rộng nhiều ngõ nữa, ta ghép nối tiếp nhiều IC 74HC595 lại với nhau, mà sử dung I/O VĐK GVHD: Dương Thị Hằng Page: 63 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Cảm biến nhiệt độ LM35 loại cảm biến tương tự hay ứng dụng ứng dụng đo nhiệt độ thời gian thực Vì hoạt động xác với sai số nhỏ, đồng thời với kích thước nhỏ giá thành rẻ ưu điểm Vì cảm biến tương tự (analog sensor) nên ta dễ dàng đọc giá trị hàm analogRead() LM35 cảm biến nhiệt độ analog Nhiệt độ xác định cách đo hiệu điện ngõ LM35 → Đơn vị nhiệt độ: °C → Nhiệt độ thay đổi tuyến tính: 10mV/°C GVHD: Dương Thị Hằng Page: 64 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Sơ đồ chân LM35 LM35 không cần phải canh chỉnh nhiệt độ sử dụng Độ xác thực tế: 1/4°C nhiệt độ phòng 3/4°C khoảng 2°C tới 150°C LM35 có hiệu cao, công suất tiêu thụ 60uA Cảm biến LM35 hoạt động cách cho giá trị hiệu điện định chân Vout (chân giữa) ứng với mức nhiệt độ Như vậy, cách đưa vào chân bên trái cảm biến LM35 hiệu điện 5V, chân phải nối đất, đo hiệu điện chân pin A0 arduino (giống y hệt cách đọc giá trị biến trở), bạn có nhiệt độ (0100ºC) công thức: float temperature = (5.0*analogRead(A0)*100.0/1024.0); Với LM35, bạn tự tạo cho mạch cảm biến nhiệt độ sử dụng LM35 tự động ngắt điện nhiệt độ vượt ngưỡng tối đa, đóng điện nhiệt độ thấp ngưỡng tối thiểu thông qua module rơ le GVHD: Dương Thị Hằng Page: 65 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử Ứng dụng thực tế : ĐO NHIỆT ĐỘ MÔI TRƯỜNG THỰC VÀ HIỂN THỊ HỌ TÊN , MÃ SINH VIÊN , GIÁO VIÊN HƯỚNG DẪN TRÊN LCD OLED //#include "lm3s8962.h" #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "inc/hw_ints.h" #include #include "driverlib/rit128x96x4.c" #include "driverlib/gpio.c" #include "driverlib/sysctl.c" #include "driverlib/adc.c" #include "define_lm3s89xx.h" #include "driverlib/interrupt.c" unsigned char const font[] = { 0xFF,0xFF,0xC3,0xDD,0xDD,0xDD,0xA3,0xFF, //a 0xFB,0xFB,0xC3,0xBB,0xBB,0xBB,0xC3,0xFF, //b 0xFF,0xFF,0x87,0xFB,0xFB,0xFB,0x87,0xFF, //c 0xDF,0xDF,0xC3,0xDD,0xDD,0xDD,0xC3,0xFF, //d 0xFF,0xFF,0xC3,0xBD,0xC1,0xFD,0xC3,0xFF, //e 0xFF,0xFF,0xC7,0xFB,0xE3,0xFB,0xFB,0xFB, //f 0xFF,0xFF,0xC3,0xDD,0x83,0xCF,0xD7,0xE7, //g 0xFB,0xFB,0xCB,0xB3,0xBB,0xBB,0xBB,0xFF, //h 0xF7,0xFF,0xF7,0xF7,0xF7,0xD7,0xEF,0xFF, //i 0xEF,0xFF,0xEF,0xEF,0xEF,0xEB,0xF7,0xFF, //j 0xFB,0xFB,0xDB,0xE3,0xEB,0xDB,0xBB,0xFF, //k 0xFF,0xFF,0xD1,0xAD,0xAD,0xAD,0xAD,0xFF, //m 0xFF,0xFF,0xCB,0xB3,0xBB,0xBB,0xBB,0xFF, //n 0xFF,0xFF,0xE3,0xDD,0xDD,0xDD,0xE3,0xFF, //o 0xFF,0xFF,0xC3,0xBB,0xBB,0xC3,0xFB,0xFB, //p GVHD: Dương Thị Hằng Page: 66 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử 0xFF,0xFF,0xC3,0xDD,0xDD,0xC3,0xDF,0xDF, //q 0xFF,0xFF,0xEB,0xD3,0xFB,0xFB,0xFB,0xFF, //r 0xFF,0xFF,0xC3,0xFD,0xC3,0xBF,0xC1,0xFF, //s 0xF7,0xF7,0xE3,0xF7,0xF7,0xD7,0xEF,0xFF, //t 0xFF,0xFF,0xBB,0xBB,0xBB,0xBB,0x87,0xFF, //u 0xFF,0xFF,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //v 0xFF,0xFF,0xDD,0xDD,0xD5,0xD5,0xEB,0xFF, //w 0xFF,0xFF,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF, //x 0xFF,0xFF,0xBB,0xD7,0xEF,0xF7,0xFB,0xFF, //y 0xFF,0xFF,0x83,0xDF,0xEF,0xF7,0x83,0xFF, //z 0xFF,0xE3,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //0 0xFF,0xEF,0xE7,0xEF,0xEF,0xEF,0xEF,0xFF, //1 0xFF,0xC7,0xBB,0xBF,0xC7,0xFB,0x83,0xFF, //2 0xFF,0xC7,0xBB,0xCF,0xBF,0xBB,0xC7,0xFF, //3 0xFF,0xEF,0xF7,0xDB,0x83,0xDF,0xDF,0xFF, //4 0xFF,0x83,0xFB,0xC3,0xBF,0xBF,0xC3,0xFF, //5 0xFF,0xC3,0xFD,0xE1,0xDD,0xDD,0xE3,0xFF, //6 0xFF,0x83,0xBF,0xDF,0xEF,0xF7,0xFB,0xFF, //7 0xFF,0xC3,0xBD,0xC3,0xBD,0xBD,0xC3,0xFF, //8 0xFF,0xC7,0xBB,0x87,0xBF,0xBB,0xC7,0xFF, //9 } ; #define RELAY1 GPIO_PIN_4 // D4 #define RELAY2 GPIO_PIN_0 // B0 #define RELAY1ON GPIOPinWrite(GPIO_PORTD_BASE,RELAY1,RELAY1) //d4 #define RELAY1OFF GPIOPinWrite(GPIO_PORTD_BASE,RELAY1,0) // d4 GVHD: Dương Thị Hằng Page: 67 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử #define RELAY2ON GPIOPinWrite(GPIO_PORTB_BASE,RELAY2,RELAY2) // B0 #define RELAY2OFF GPIOPinWrite(GPIO_PORTB_BASE,RELAY2,0) // B0 #define LED1 GPIO_PIN_2 // E1 #define LED2 GPIO_PIN_3 // B0 #define LED1ON GPIOPinWrite(GPIO_PORTF_BASE,LED1,LED1) // F2 #define LED1OFF GPIOPinWrite(GPIO_PORTF_BASE,LED1,0) // F2 #define LED2ON GPIOPinWrite(GPIO_PORTF_BASE,LED2,LED2) // F3 #define LED2OFF GPIOPinWrite(GPIO_PORTF_BASE,LED2,0) // F3 // khai bao chan dk cho matrix #define SCK1 #define DATA1 #define LAT1 GPIO_PIN_7 // C7 GPIO_PIN_6 // C6 GPIO_PIN_5 // C5 // khai bao chan dk cho LED #define SCK2 #define DATA2 GPIO_PIN_5 // B5 GPIO_PIN_4 // B4 #define LAT2 GPIO_PIN_6 // B6 #define SEG1 GPIO_PIN_6 // D6 #define SEG2 GPIO_PIN_7 // D7 unsigned char const bcd[10] = {0x90,0xF5,0x1C,0x34,0x71,0x32,0x12,0xF4,0x10,0x30} ; unsigned char const hang[9] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF} ; unsigned int nhietDo,nhietDoMin,nhietDoMax,demsp,demInt; GVHD: Dương Thị Hằng Page: 68 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử unsigned char text[50],i,mode,vitri,time[10]; void delay_us(unsigned int us); // delay microsec void delay_ms(unsigned int ms); // delay minisec void delay_us(unsigned int us) { while(us );SysCtlDelay(1500); } void delay_ms(unsigned int ms) { while(ms )delay_us(1000); } // Init Adc void initAdc(void) { SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); Enable ADC /* */ SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); 125KSps clk for ADC /* */ ADCSequenceDisable(ADC_BASE, 0); ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceEnable(ADC_BASE, 0); } // read ADC ( set channel) int readAdc(char channel) { unsigned long value; SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC); GVHD: Dương Thị Hằng Page: 69 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS); 125KSps clk for ADC /* */ ADCSequenceDisable(ADC_BASE, 0); ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceStepConfigure(ADC_BASE, 0, 0, channel | ADC_CTL_END); ADCSequenceEnable(ADC_BASE, 0); ADCProcessorTrigger(ADC_BASE, 0); while( (HWREG(ADC_BASE + ADC_O_X_SSFSTAT) & 0x00000100) ); ADCSequenceDataGet(ADC_BASE, 0, &value); //SysCtlPeripheralDisable(SYSCTL_PERIPH_ADC); return((unsigned int)(value)); } void init_gpio(void) { // unsigned long delayLoop; // khai bao bien SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC| SYSCTL_XTAL_8MHZ|SYSCTL_OSC_MAIN); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF); // Buoc Thiet lap cho GPIO GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, 0x7F); // GPIODirModeSet(GPIO_PORTB_BASE, 0x79); GPIOPadConfigSet(GPIO_PORTB_BASE,0x7F, GVHD: Dương Thị Hằng Page: 70 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU); GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_BHIGH); GPIOPadConfigSet(GPIO_PORTC_BASE,GPIO_BHIGH, GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_OD); GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, 0x13); GPIOPadConfigSet(GPIO_PORTD_BASE,0x13, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, 0x0C); GPIOPadConfigSet(GPIO_PORTF_BASE,0x0C, GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU); } void khaiBaoNgatPortEF(void) { GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_BLOW); GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_BLOW, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); GPIOPinIntEnable(GPIO_PORTE_BASE, GPIO_BLOW); GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1| GPIO_PIN_0); GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_0, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_0); IntEnable(INT_GPIOE); IntEnable(INT_GPIOF); IntMasterEnable(); } GVHD: Dương Thị Hằng Page: 71 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử void GPIOFIntHandler (void) { if(GPIOPinIntStatus(GPIO_PORTF_BASE,true)==GPIO_PIN_0) { GPIOPinIntClear(GPIO_PORTF_BASE,GPIO_PIN_0); } if(GPIOPinIntStatus(GPIO_PORTF_BASE,true)==GPIO_PIN_1) // Select { vitri = 0; RIT128x96x4Clear(); delay_ms(50); GPIOPinIntClear(GPIO_PORTF_BASE,GPIO_PIN_1); } } void GPIOEIntHandler (void) { if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_0) // Phim UP { if(vitri==1)nhietDoMin++; if(vitri==2)nhietDoMax++; if (nhietDoMin >= nhietDoMax)nhietDoMin=nhietDoMax-1; GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_0); // UP } if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_1) // Phim DOWN { if(vitri==1)nhietDoMin ; GVHD: Dương Thị Hằng Page: 72 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử if(vitri==2)nhietDoMax ; if (nhietDoMax2)vitri=1; GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_3); // RIGHT } if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_2) // Phim LEFT { if(vitri>1)vitri ; else vitri=2; GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_2); // LEFT } } void doNhiet_relay(void) { // adc = 1023*Vout/3.3 (= 3lan gia tri nhiet thuc ) // nhu vay phai doc lan, duoc gia tri gap 10 lan nhiet nhietDo = readAdc(0); nhietDo += readAdc(0); nhietDo += readAdc(0); nhietDo -= nhietDo/13; // can chinh thuc te RIT128x96x4StringDraw( "DH Cong nghiep Ha Noi",0,10,15); GVHD: Dương Thị Hằng Page: 73 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử sprintf(text,"LOW: %2.2d.%d - HIGH:%2.2d %d",nhietDoMin/10,nhietDoMin%10,nhietDoMax/10,nhietDoMax%10); RIT128x96x4StringDraw( text,0,20,15); sprintf(text," Nhiet do: %3.2d.%d ",nhietDo/10,nhietDo%10); RIT128x96x4StringDraw( text,0,35,15); if(vitri==1)RIT128x96x4StringDraw( " Dat Nhiet Min ",0,50,15); if(vitri==2)RIT128x96x4StringDraw( " Dat Nhiet Max ",0,50,15); if(vitri>0) RIT128x96x4StringDraw( " Select => Exit ",0,70,15); if(nhietDonhietDoMax)RELAY1ON; else RELAY1OFF; delay_ms(500); } void hienThiOLED(void) { RIT128x96x4StringDraw( " ",0,10,15); RIT128x96x4StringDraw( "DHCNHN",i,10,15); RIT128x96x4StringDraw( "SVTH:TRINH DINH CHUONG",0,30,15); RIT128x96x4StringDraw( " MSV:0841050361",0,50,15); RIT128x96x4StringDraw( "GVHD: DUONG THI HANG ",0,70,15); delay_ms(100); // toc chay chu DHCNHN i++; if(i>90)i=0; } int main() { init_gpio(); khaiBaoNgatPortEF(); // cai dat ADC initAdc(); GVHD: Dương Thị Hằng Page: 74 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử RIT128x96x4Init(1000000); RIT128x96x4Clear(); RELAY1OFF; RELAY2OFF; nhietDoMin = 230; nhietDoMax = 260; demInt = 0; demsp=0; while(1) { //hienThiOLED(); doNhiet_relay(); // doc ADC } } GVHD: Dương Thị Hằng Page: 75 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử KẾT LUẬN Nghiên cứu ban đầu cho thấy kết khả quan, tạo tiền đề cho phát triển ứng dụng với ARM Cortex M3 Để phát triển đề tài này, em xin đưa số ưu nhược điểm sau: * Ưu, nhược điểm: * Ưu điểm - Giá thành chip rẻ so với dòng chip khác với số tài nguyên ARM - Tốc độ xử lý cao, ổn định - Tiết kiệm lượng - Số lượng tài nguyên lớn, phù hợp với nhiều ứng dụng khác * Nhược điểm - Nhiều ghi, câu lệnh dài, gây khó nhớ cho người dùng, dễ nhầm lẫn - Thị trường ARM Việt Nam chưa rộng, gây khó việc tìm kiếm tài liệu khó khăn việc đặt mua chip, việc nghiên cứu chưa sâu * Hướng phát triển: - Đặt mua KIT từ TI tạo điều kiện nghiên cứu thực tế module Tạo module thực tế để tạo điều kiện thuận lợi cho sinh viên nghiên cứu, thực hành với ứng dụng thực tế, dễ hình dung Cuối chúng em xin chân thành cảm ơn cô Dương Thị Hằng giúp chúng em hoàn thành báo cáo GVHD: Dương Thị Hằng Page: 76 SVTH: Trịnh Đình Chương Trường Đại Học Công Nghiệp Hà Nội Khoa Điện Tử MỤC LỤC GVHD: Dương Thị Hằng Page: 77 SVTH: Trịnh Đình Chương ... dòng Cortex- M có mức hiệu suất cao mức LM3S8962 dựa xử lý Cortex- M3 2.1 Các phiên kiến trúc ARM Tính đến thời điểm phiên kiến trúc lõi ARM ARMv7 (Trước có ARMv4, ARMv5, ARMv6) Bộ xử lý Cortex- M3. .. Hibernation, vi điều khiển LM3S8962 hoàn hảo cho ứng dụng pin Ngoài ra, vi điều khiển LM3S8962 cung cấp lợi ARM phổ biến rộng rãi với công cụ phát triển, System-on -Chip (SoC) ứng dụng sở hạ tầng... Học Công Nghiệp Hà Nội Khoa Điện Tử Chương I: Tổng quan kiến trúc ARM Cortex M3 Các dòng vi điều khiển Stellaris – ARM ® ™ Cortex- M3 - mang lại ứng dụng vi điều khiển nhúng hiệu suất cao 32-bit
- Xem thêm -

Xem thêm: nghiên cứu về chip ARM cortex m3 LM3S8962 của hãng texas instruments , nghiên cứu về chip ARM cortex m3 LM3S8962 của hãng texas instruments , nghiên cứu về chip ARM cortex m3 LM3S8962 của hãng texas instruments , Chương I: Tổng quan kiến trúc ARM Cortex M3, 3 Đơn vị xử lí trung tâm Cortex (Cortex CPU), Sơ đồ nguyên lý phần mở rộng ngoại vi:, ĐO NHIỆT ĐỘ MÔI TRƯỜNG THỰC VÀ HIỂN THỊ HỌ TÊN , MÃ SINH VIÊN , GIÁO VIÊN HƯỚNG DẪN TRÊN LCD OLED.

Từ khóa liên quan

Mục lục

Xem thêm

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay