Thiết kế của vi xử lý ARM Cortex M3/4 định nghĩa và phân chia các vùng nhớ khác nhau trong không gian bộ nhớ của vi xử lý. Sau đó, các hãng vi điều khiển như STMicroelectronics sẽ thiết kế các bộ nhớ khác nhau của họ như bộ nhớ FLASH, bộ nhớ SRAM và các ngoại vi khác nhau như ADC, TIMER, USB… vào các vùng nhớ tương ứng với không gian bộ nhớ của vi xử lý.Continue Reading

Dòng vi xử lý ARM Cortex M là một dòng vi xử lý được thiết kế tối ưu cho giá thành và năng lượng tiêu thụ của vi điều khiển, được sử dụng trong rất nhiều ứng dụng nhúng khác nhau. Trong bài viết này, mình sẽ cung cấp một số thông tin về Vi xử lý ARM Cortex M, quá trình khởi động của các vi điều khiển được thiết kế dựa trên vi xử lý này và việc áp dụng các kiến thức trên để thiết kế tính năng cập nhật chương trình từ xa.  Continue Reading

Có hai cách để MCU trao đổi dữ liệu với các thiết bị bên ngoài, đó là truyền dữ liệu nối tiếp và song song. Đối với kênh truyền nối tiếp, một số giao thức chúng ta thường sử dụng: SPI, I2C và UART. Bài viết này sẽ giúp các bạn hiểu rõ về chuẩn giao tiếp SPI và hướng dẫn các bạn giao tiếp SPI với STM32F4.Continue Reading

Phân tích và thiết kế hệ thống là các bước vô cùng quan trọng đòi hỏi những người phát triển cần phải thực hiện trước khi bắt tay vào thi công hệ thống. Có nhiều cách tiếp cận phát triển hệ thống tùy vào yêu cầu người dùng và công nghệ mà hệ thống áp dụng. Trong bài viết này mình sẽ hướng dẫn các bạn cách xác định yêu cầu dự án và lên đặc tả cho các yêu cầu đó dựa trên các kinh nghiệm thực tế của mìnhContinue Reading

Đối với những lập trình viên đã và đang làm việc với vi điều khiển STM32 chắc hẳn từng đọc qua các lưu ý khi viết một chương trình phục vụ ngắt, trong đó có lưu ý không nên sử dụng hàm HAL_Delay ở các chương trình này. Vậy việc gọi HAL_Delay trong các chương trình phục vụ ngắt sẽ tác động đến luồng thực thi của vi điều khiển như thế nào?Continue Reading

Modbus RTU hoạt động dựa trên nguyên tắc master – slave, một thiết bị master sẽ điều khiển một hoặc nhiều thiết bị slave. Slave không thể truyền dữ liệu tự động được mà cần phải được Master yêu cầu. Master sẽ ghi hoặc đọc dữ liệu trong các thanh ghi của thiết bị Slave. Mỗi Slave có một địa chỉ 8 bit và không trùng với các Slave khác. Khái niệm về giao thức Modbus RTU kết nối phần cứng cho giao thức này đã được mình trình bày trong bài viết tại đây. Còn trong bài viết này, mình sẽ giới thiệu về cấu trúc của một khung truyền giao thức Modbus RTU.Continue Reading

Board STM32 BluePill là một Board mạch phát triển STM32 đơn giản với vi điều khiển STM32F103C8T6. Board mạch này không phải chính hãng của STMicroelectronics, sử dụng kèm với một mạch nạp/debugger ST-Link. Có giá thành rẻ nên thường được các bạn sinh viên lựa chọn khi mới bắt đầu học/tìm hiểu về dòng vi điều khiển STM32 lõi ARM. Tuy nhiên, trên thị trường hiện nay có xuất hiện nhiều board mạch này được thiết kế sử dụng chip fake. Bài viết này sẽ trình bày các vấn đề gặp phải và cách khắc phục giúp các bạn có thể sử dụng STM32CubeIDE để lập trình, debug được board mạch STM32F103 BluePill.Continue Reading