Designing an ECG Acquisition System with STM32

System Overview An ECG acquisision system captures human electrocardiogram (ECG) signals through electrode arrays. The signals undergo signal conditioning (amplification and filtering) before being processed by an STM32 microcontroller for analog-to-digital conversion (ADC), digital filtering, and feature extraction (e.g., heart rate, QRS compl ...

Posted on Fri, 04 Sep 2026 16:23:27 +0000 by beselabios

Implementing a Temporary Key-Value Cache in LVGL-C

LVGL is developed in C, which is a powerful language but often requires custom implementations of complex data structures for real-world projects. LVGL follows an object-oriented programming design approach. Based on this concept, we can design a Map-like data structuer similar to Java to cache temporary data, facilitating UI data binding in co ...

Posted on Wed, 02 Sep 2026 16:06:28 +0000 by chapm4

Implementing Analog Data Acquisition with PCF8591 and 8051 Microcontroller

Hardware Interface and FunctionalityThe PCF8591 is an 8-bit CMOS data acquisition device that integrates four analog inputs, one analog output, and an I2C serial interface. It is widely used in embedded systems for processing analog signals such as light intensity and temperature. In this configuration, an STC90C51 microcontroller serves as the ...

Posted on Tue, 25 Aug 2026 16:18:19 +0000 by Talon

Implementing Singly Linked List CRUD Operations in C

Node Structure Definition A singly linked list is constructed as a sequence of nodes, where each node contains a data field and a pointer to the subsequent node. The following structure defines a node with an integer identifier and a text label. typedef struct ListNode { int id; char description[32]; struct ListNode* next; } ListNod ...

Posted on Sun, 23 Aug 2026 16:41:43 +0000 by kampbell411

Analog-to-Digital Conversion with STM32 Microcontrollers

Understanding ADC in Embedded Systems Analog-to-Digital Converters (ADCs) serve as a critical interface between analog signals and digital systems. In STM32 microcontrollers like the STM32F103C8T6, the ADC module provides precise conversion of analog voltages into digital values, enabling digital processing of real-world signals. 12-bit succes ...

Posted on Sun, 23 Aug 2026 16:09:41 +0000 by mwichmann4

Implementing Custom Boot Menus in U-Boot for Allwinner T527

Experimental Environment Hardware: Forlinx OK-T527 Development Board Software: Allwinner Longan SDK (U-Boot version 2018) U-Boot Initialization Flow To understand how to inject a custom menu, we must first examine the entry point for U-Boot's main logic. The core execution loop is defined in /common/main.c, specifically within the main_loop() ...

Posted on Sat, 22 Aug 2026 16:21:37 +0000 by ottoman_

Configuring GPIO Interrupt Input in Linux for Zynq-7000 and FMQL45T900 Platforms

The example presented here demonstrates how to configure an interrupt-based GPIO enput within the Linux kernel driver for FMQL45T900, which shares similarities with Zynq-7000 platforms. To begin, determine the correct GPIO number corresponding to the physical pin. For instance, EMIO5 maps to GPIO number 431 on the FMQL45T900 platform. In Vivado ...

Posted on Thu, 13 Aug 2026 16:38:18 +0000 by mkohan

Building Custom OpenWrt Firmware from Source

OpenWrt is a highly extensible, Linux-based operating system tailored for embedded networking devices. Unlike vendor-supplied firmware, it offers a fully writable filesystem and a package management system, allowing users to customize their devices extensively. This guide outlines the process of setting up a build environment and compiling a cu ...

Posted on Thu, 30 Jul 2026 16:37:50 +0000 by cortez

Implementing ATGM336H GPS Module Driver on STM32 Microcontrollers

Hardware Interface and Communication ProtocolThe ATGM336H module, produced by Zhongke Microelectronics, is a high-performance GNSS receiver supporting multiple satellite systems including BDS, GPS, GLONASS, and Galileo. It communicates via UART interface with a default baud rate of 9600. The module operates within a voltage range of 3.3V to 5V, ...

Posted on Tue, 28 Jul 2026 16:50:18 +0000 by maest

Configuring Timer Interrupts on STM32 Microcontrollers

The timer's period is determined by the values in the Auto-Reload Register (ARR) and the Prescaler (PSC). The formula for calculating the interrupt period is as follows: Timer Period = (ARR + 1) * (PSC + 1) / Timer Clock Frequency The ARR value sets the maximum count before the counter resets, generating an overflow event and potentially an int ...

Posted on Fri, 17 Jul 2026 17:27:09 +0000 by MrJW