Trong hệ thống nhúng, hiểu được các khái niệm Processor Core (lõi vi xử lý), Processor (CPU/Vi xử lý) và Microcontroller (MCU/Vi điều khiển) thật sự rất quan trọng, những từ này được sử dụng rất nhiều và sẽ dẫn đến không ít nhầm lẫn nếu chúng ta sử dụng không đúng.Continue Reading

Bộ giao tiếp USART được dùng để trao đổi dữ liệu giữa MCU với các thiết bị bên ngoài dựa trên định dạng dữ liệu nối tiếp bất đồng bộ NRZ tiêu chuẩn công nghiệp. Bộ USART có hai chế độ truyền là truyền dữ liệu đồng bộ (Synchronous) và truyền dữ liệu không đồng bộ (Asynchronous)Continue Reading

Bên cạnh khả năng phát hiện nhiễu hay lỗi phần mềm làm chương trình nhúng bị treo hoặc thực hiện lệnh trễ hơn bình thường như tính năng của khối Independent Watchdog (IWDG), thì Window Watchdog Timer (WWDG) còn có khả năng phát hiện được lỗi làm cho lệnh bị thực thi sớm hơn dự kiến. Khối watchdog này sẽ tạo tín hiệu reset MCU khi gặp các trường hợp trên. Không chỉ vậy, một yêu cầu ngắt để MCU thực hiện một số lệnh an toàn hay lưu trữ các thông tin cần thiết trước khi reset cũng được hỗ trợ nếu được người dùng cấu hình cho phép Early wakeup interrupt (EWI)Continue Reading

Vi điều khiển STM32F411 tính hợp hai bộ ngoại vi Watchdog là Independent Watchdog (IWDG) và Window Watchdog(WWDG) với độ chính xác cao và khả năng áp dụng linh hoạt trong các ứng dụng. Cả hai bộ Watchdog này đều được sử dụng phát hiện và giải quyết các sự cố do lỗi phần mềm, từ đó kích hoạt khởi động lại vi điều khiển hoặc thực thi một chương trình ngắt (chỉ có ở Window Watchdog) khi tổng thời gian mà bộ đếm (counter) của watchdog chạm đến giá trị timeout đã được cấu hình trước. Bài viết này cung cấp những nội dung để các có thể hiểu được về cấu trúc, cách hoạt động của IWDG và hướng dẫn sử dụng IWDG với một bài tập thực hành đơn giản, dễ hiểu.Continue Reading

Timer là một loại ngoại vi được tích hợp ở hầu hết các vi điều khiển, cung cấp cho người dùng nhiều ứng dụng như xác định chính xác một khoảng thời gian, đo – đếm xung đầu vào, điều khiển dạng sóng đầu ra, băm xung. STM32F411 có 8 bộ Timer, trong đó có 1 bộ Advanced – control timer (TIM1) thường được các bộ thư viện sử dụng để tạo bộ đếm thời gian chuẩn của hệ thống (như ngắt System Tick, các hàm tạo Delay, TimeOut…), và 7 bộ General – purpose timer (TIM2 đến TIM5 và TIM9 đến TIM11).Continue Reading

Có nhiều cách để thiết kế luồng thực hiện chương trình cho hệ thống nhúng như: Polling, Interrupts, DMA, RTOS hoặc kết hợp các phương pháp trên lại với nhau. Bài viết này sẽ giúp các bạn làm quen với các kỹ thuật thiết kế trên và nắm được các ưu điểm, nhược điểm của mỗi kỹ thuật để có thể lựa chọn được phương pháp phù hợp cho hệ thống của mình. Continue Reading