Đặt vấn đề về phần cứng và phần mềm, sơ đồ nguyên lý, sơ đồ khối, chức năng của từng khối. So sánh các loại cảm biến và tính toán thông số. Lập sơ đồ giải thuật. Chương 4: Kết quả Những kết quả đã được mục tiêu đề ra sau quá trình nghiên cứu thi công.
Từ những kết quả đạt được để đánh giá quá trình hoàn thành được bao nhiêu phần trăm. Chương 5: Kết luận và hướng phát triển So sánh kết quả đạt được với mục tiêu đã đề ra ban đầu, trình bày những khó khăn và hạn chế của hệ thống, đưa ra hướng phát triển. 10 ĐỒ ÁN TỐT NGHIỆP CHƯƠNG 2: CƠ SƠ LÝ THUYẾT 2.1 GIỚI THIỆU VI ĐIỀU KHIỂN STM32F103C8T6 2.1 Sơ lược về STM32F103C8T6 Vi điều khiển STM32F103C8T6 là họ vi điều khiển 32 bit của hãng ST với 64- 128 Kb bộ nhớ Flash, USB 2.0 full-speed, CAN, 7 bộ Timer, 2 bộ ADC giao diện kết nối. MCU – STMicro STM32F103C8T6 ARM Cortex-M3 MCU tốc độ 72 MHz với 64 KB flash, 20 KB SRAM.
Cổng USB để cấp nguồn và nạp chương trình. Có ra chân để debug. Chân mở rộng là 20-pin với nguồn, I2C, SPI, GPIOs, ADC …Ngoài ra có nút reset và đèn báo nguồn. Ưu điểm của kit này là giá rẻ, phù hợp với túi tiền, tuy nhiên nhược điểm là nạp qua cổng USB nhiều lúc không ổn, không có mạch nạp ST-Link đi cùng nên cũng rất khó khăn để debug.
Một số thông số cơ bản: Bảng 2. 1: Một vài thông số cơ bản STM32F103C8T6. Vi điều khiển STM32F103C8T6 Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB) sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính. Tần số hoạt động 8Mhz Kích thước 53.24mm Các chuẩn giao tiếp CAN, I2C, SPI, UART, USB,.
Thạch anh nội Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC Nhiệt độ hoạt động -40°C ~ 85°C Lõi arm ARM® Cortex®-M3 Standard Package 250 Bộ nhớ Flash 64KB (64K x 8) 11 ĐỒ ÁN TỐT NGHIỆP Hình 2. 1: Board vi điều khiển STM32F103C8T6. 2: Board vi điều khiển STM32F103C8T6.2 Cấu hình chi tiết của STM32F103C8T6 ARM 32-bit Cortex M3 với clock max là 72Mhz. Bộ nhớ: - 64 kbytes bộ nhớ Flash (bộ nhớ lập trình).
Clock, reset và quản lý nguồn: - Điện áp hoạt động 2. - Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD). - Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz. - Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz.
Trong trường hợp điện áp thấp: - Có các mode: ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ. - Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính. 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ: - Khoảng giá trị chuyển đổi từ 0 – 3. - Lấy mẫu nhiều kênh hoặc 1 kênh.
- Có cảm biến nhiệt độ nội. DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU: - 7 kênh DMA. - Hỗ trợ DMA cho ADC, I2C, SPI, UART. 7 timer: - 3 timer 16 bit hỗ trợ các mode IC/OC/PWM.
- 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time… - 2 watdog timer dùng để bảo vệ và kiểm tra lỗi. Hỗ trợ 9 kênh giao tiếp bao gồm: - 2 bộ I2C(SMBus/PMBus). 13 ĐỒ ÁN TỐT NGHIỆP - 2 SPIs (18 Mbit/s). - 1 bộ CAN interface (2.0 full-speed interface Kiểm tra lỗi CRC và 96-bit ID Một vài đặc điểm nổi bật của STM32 Sự tinh vi Thoạt nhìn thì các ngoại vi của STM32 cũng giống như những vi điều khiển khác, như hai bộ chuyển đổi ADC, timer, I2C, SPI, CAN, USB và RTC.
Tuy nhiên mỗi ngoại vi trên đều có rất nhiều đặc điểm thú vị. Ví dụ như bộ ADC 12-bit có tích hợp một cảm biến nhiệt độ để tự động hiệu chỉnh khi nhiệt độ thay đổi và hỗ trợ nhiều chế độ chuyển đổi. Mỗi bộ định thời có 4 khối capture compare (dùng để bắt sự kiện với tính năng input capture và tạo dạng sóng ở ngõ ra với output compare), mỗi khối định thời có thể liên kết với các khối định thời khác để tạo ra một mảng các định thời tinh vi hơn. Một bộ định thời cao cấp chuyên hỗ trợ điều khiển động cơ, với 6 đầu ra PWM với dead time (khoảng thời gian được chèn vào giữa hai đầu tín hiệu xuất PWM bù nhau trong điều khiển mạch cầu H) lập trình được và một đường break input (khi phát hiện điều kiện dừng khẩn cấp) sẽ buộc tín hiệu PWM sang một trạng thái an toàn đã được cài sẵn.
Ngoại vi nối tiếp SPI có một khối kiểm tổng (CRC) bằng phần cứng cho 8 và 16 word hỗ trợ tích cực cho giao tiếp thẻ nhớ SD hoặc MMC. STM32 có hỗ trợ thêm tối đa 12 kênh DMA (Direct Memory Access). Mỗi kênh có thể được dùng để truyền dữ liệu đến các thanh ghi ngoại vi hoặc từ các thanh ghi ngoại vi đi với kích thước từ (word) dữ liệu truyền đi có thể là 8/16 hoặc 32-bit. Mỗi ngoại vi có thể có một bộ điều khiển DMA (DMA controller) đi kèm dùng để gửi hoặc đòi hỏi dữ liệu như yêu cầu.
Một bộ phân xử bus nội (bus arbiter) và ma trận bus (bus matrix) tối thiểu hoá sự tranh chấp bus giữa truy cập dữ liệu thông qua CPU (CPU data access) và các kênh DMA. Điều đó cho phép các đơn vị DMA hoạt động linh hoạt, dễ dùng và tự động điều khiển các luồng dữ liệu bên trong vi điều khiển. STM32 là một vi điều khiển tiêu thụ năng lượng thấp và đạt hiệu suất cao. Nó có thể hoạt động ở điện áp 2V, chạy ở tần số 72MHz và dòng tiêu thụ chỉ có 36mA với tất cả các khối bên trong vi điều khiển đều được hoạt động.
Kết hợp với các chế độ tiết kiệm năng lượng của Cortex, STM32 chỉ tiêu thụ 2μA khi ở chế độ Standby. Một bộ dao động nội RC 8MHz cho phép chip nhanh chóng thoát khỏi chế độ tiết kiệm năng lượng trong 14 ĐỒ ÁN TỐT NGHIỆP khi bộ dao động ngoài đang khởi động. Khả năng nhanh đi vào và thoát khỏi các chế độ tiết kiệm năng lượng làm giảm nhiều sự tiêu thụ năng lượng tổng thể. Sự an toàn Ngày nay các ứng dụng hiện đại thường phải hoạt động trong môi trường khắc khe, đòi hỏi tính an toàn cao, cũng như đòi hỏi sức mạnh xử lý và càng nhiều thiết bị ngoại vi tinh vi.
Để đáp ứng các yêu cầu khắc khe đó, STM32 cung cấp một số tính năng phần cứng hỗ trợ các ứng dụng một cách tốt nhất. Chúng bao gồm một bộ phát hiện điện áp thấp, một hệ thống bảo vệ xung Clock và hai bộ Watchdogs. Bộ đầu tiên là một Watchdog cửa sổ (windowed watchdog). Watchdog này phải được làm tươi trong một khung thời gian xác định.
Nếu nhấn nó quá sớm, hoặc quá muộn, thì Watchdog sẽ kích hoạt. Bộ thứ hai là một Watchdog độc lập (independent watchdog), có bộ dao động bên ngoài tách biệt với xung nhịp hệ thống chính. Hệ thống bảo vệ xung nhịp có thể phát hiện lỗi của bộ dao động chính bên ngoài (thường là thạch anh) và tự động chuyển sang dùng bộ dao động nội RC 8MHz. Tính bảo mật Một trong những yêu cầu khắc khe khác của thiết kế hiện đại là nhu cầu bảo mật mã chương trình để ngăn chặn sao chép trái phép phần mềm.
Bộ nhớ Flash của STM32 có thể được khóa để chống truy cập đọc Flash thông qua cổng Debug. Khi tính năng bảo vệ đọc được kích hoạt, bộ nhớ Flash cũng được bảo vệ chống ghi để ngăn chặn mã không tin cậy được chèn vào bảng vector ngắt. Hơn nữa bảo vệ ghi có thể được cho phép trong phần còn lại của bộ nhớ Flash. STM32 cũng có một đồng hồ thời gian thực và một khu vực nhỏ dữ liệu trên SRAM được nuôi nhờ nguồn pin.
Khu vực này có một đầu vào chống giả mạo (anti-tamper input), có thể kích hoạt một sự kiện ngắt khi có sự thay đổi trạng thái ở đầu vào này. Ngoài ra một sự kiện chống giả mạo sẽ tự động xóa dữ liệu được lưu trữ trên SRAM được nuôi bằng nguồn pin. Phát triển phần mềm Nếu bạn đã sử dụng một vi điều khiển dựa trên lõi ARM, thì các công cụ phát triển cho ARM hiện có đã được hỗ trợ tập lệnh Thumb-2 và dòng Cortex. Ngoài ra ST cũng cung cấp một thư viện điều khiển thiết bị ngoại vi, một bộ thư viện phát triển USB như là một thư viện ANSI C và mã nguồn đó là tương thích với các thư viện trước đó được công bố cho vi điều khiển STR7 và STR9.
Có rất nhiều RTOS mã nguồn mở và 15 ĐỒ ÁN TỐT NGHIỆP thương mại và middleware (TCP/IP, hệ thống tập tin, v.) hỗ trợ cho họ Cortex. Dòng Cortex-M3 cũng đi kèm với một hệ thống gỡ lỗi hoàn toàn mới gọi là CoreSight. Truy cập vào hệ thống CoreSight thông qua cổng truy cập Debug (Debug Access Port), cổng này hỗ trợ kết nối chuẩn JTAG hoặc giao diện 2 dây (serial wire-2 Pin), cũng như cung cấp trình điều khiển chạy gỡ lỗi, hệ thống CoreSight trên STM32 cung cấp hệ thống điểm truy cập(data watchpoint) và một công cụ theo dõi (instrumentation trace). Công cụ này có thể gửi thông tin về ứng dụng được lựa chọn đến công cụ gỡ lỗi.
Điều này có thể cung cấp thêm các thông tin gỡ lỗi và cũng có thể được sử dụng trong quá trình thử nghiệm phần mềm.3 Giới thiệu ADC ADC bộ chuyển đổi tương tự-số là 1 thành phần rất quan trọng để có thể chuyển đổi các dữ liệu dạng analog từ môi trường (nhiệt độ, độ ẩm, độ sáng…) sang dạng digital để vi điều khiển có thể xử lý được. STM32F103C8 có tích hợp sẵn các bộ chuyển đổi ADC với độ phân giải 12bit. Có 12 kênh cho phép đo tín hiệu từ 10 nguồn bên ngoài và 2 nguồn nội bên trong.4 Giới thiệu DMA DMA được sử dụng với mục đích truyền data với tốc độ cao từ thiết bị ngoại vi đến bộ nhớ cũng như từ bộ nhớ đến bộ nhớ. Data được truyền với tốc độ cao hơn khi sử dụng DMA do không cần nhiều lệnh xử lý từ CPU.
Điều đó làm cho tài nguyên CPU được rảnh rỗi cho các hoạt động khác. Ở STM32F103C8 chỉ có 1 bộ DMA với 7 kênh hỗ trợ cho các chức năng như: ADC1, SPI, USART, I2C, TIM1 đến TIM4.2 TỔNG QUAN VỀ MCU NODE ESP8266 Khối gửi - nhận dữ liệu dùng để gửi giá trị lên Web để lưu trữ và nhận giá trị từ Web.