Share this

Design and Implementation of an ARM-based Embedded Multi-parameter Monitor

2026-04-06 06:21:51 · · #1
1. Introduction Multi-parameter monitors are widely used in ICUs, CCUs, wards, operating rooms, etc. Currently, China also has products with independent intellectual property rights, such as Mindray, Jinkewei, and Jinnaoren. However, compared with world-leading products from GE and Philips, they lag behind in monitoring and calculation, reliability, real-time performance, stability, signal variation processing and analysis, and remote transmission. Embedded systems directly embed computers into application systems, integrating communication technology and semiconductor microelectronics technology, and are the ultimate product of information technology (IT). Therefore, applying embedded systems and network technologies to the field of medical monitors can enable multi-parameter monitors to meet the requirements of the modern medical monitor market, such as smaller size, improved data processing capabilities, and telemedicine. This paper introduces an ARM-based real-time monitoring system, which combines a 32-bit RISC-structured ARM core processor with a real-time multi-tasking embedded system, and adds network transmission functionality to the platform through an embedded TCP/IP protocol stack, constructing a new type of multi-parameter monitor system. 2. System Hardware Design Medical monitors have the following functions: measurement, analysis, alarm, printing, and network communication. The six-parameter module acquires six parameters of the human body—ECG, non-invasive blood pressure, blood oxygen, pulse rate, respiration, and body temperature—through the lead terminals, optical finger, and cuff. It connects to an embedded processor with an ARM7 core via serial communication. Data is sent from the serial port to the ARM7 central processing unit (CPU). Through multi-task scheduling, real-time data processing is performed, and the graphs and values ​​of various signals are displayed on the LCD in real time. It can also be controlled by an external keyboard for storage and network transmission. Alarm lines are set for various detection signals, and alarms are triggered for detections exceeding the alarm range. The hardware structure is shown in Figure 1. Figure 1. Hardware Structure of the Multi-Parameter Monitor 3. Software Design of the Development System 3.1 Overall Introduction to Software Development The program is debugged using the Hitool for ARM development environment running on a PC: First, the initialization programs for the system, memory, and I/O ports are run. Then, the main program is entered, using external interrupts to determine if there is key input. If so, the keyboard control subroutine is called to identify the pressed key and execute the corresponding task according to the keyboard control. If not, the serial port reading program is called to collect data such as ECG, blood oxygen, and blood pressure, and the type of collected data is determined. The data is stored in different addresses of SDRAM and processed sequentially. After processing, it is determined whether the alarm limits are exceeded. If so, the alarm program and display program are called; otherwise, the display program is called directly. In this way, various data are collected in real time and the test values ​​and ECG and respiratory waveforms are displayed on the LCD. The test values ​​are stored every minute, and the ECG and respiratory waveforms are stored by key. Pressing the page up/down keys can recall the corresponding stored waveforms and display them. Printing and network command processing are performed according to printing and network commands. The program is mainly written in C language. 3.2 The serial port processing hardware interface adopts the standard RS-232C asynchronous serial interface, using a three-wire method with transmit (TXD), receive (RXD), and ground; other handshake signals are left floating. To achieve serial communication between the six-parameter module and the S3C44BO, both must use the same data transmission method. Their communication data format is as follows: baud rate 9600bps, 8 data bits, 1 stop bit, no parity bit. Additionally, in the I/O port initialization program, the Uart_Init function is defined to initialize the serial port registers and configure parameters such as clock and baud rate. The following serial port register settings are mainly performed in the design: UART linear control register ULCON1=0x3; UART control register UCON1=0x245; UART first-in-first-out control register UFCON1=0x1; UART baud rate register UBRDTV, calculated according to the formula. The serial port read program uses an interrupt method to achieve bidirectional data transmission and real-time control. The serial port program's data reception process is as follows: The `Uart_Getch()` function is called to read N characters, which are then placed in the SDRAM as an array, and then the data is processed. Part of the source code in the `lib.C` program is as follows: `charUart_Getch() {… while (! (rUTRSTAT1& 0x1)); //Receive data ready return rURXH1; …}` 3.3 LCD Display When new data needs to be displayed, the LCD display module writes the new sampled data into the LCD display memory. The LCD controller supported by the S3C44BO chip automatically transfers the data to be displayed from the display memory to the LCD display via dedicated DMA without CPU intervention. The LCD continuously receives data and displays the monitored content on the LCD. 3.3.1 LCD Initialization Define the `Lcd_MonoInit()` function to set the LCD scan width and other hardware timing-related quantities in the three control registers of the LCD: such as using a 160×240 monochrome display, 4-bit single scan, etc. The LCD's three buffer initial address registers are mainly configured with the starting address of the frame buffer register, etc. The source code for the basic configuration of the above registers is as follows: void Lcd_MonoInit(void) //Initialize LCD screen { //160×240 1bit/1pixelLCD #defineMVAL_USED 0 rLCDCON1=(0) (1<<5) (MVAL_USED<<7) (0x3<<8) (0x3<<10) (CLKVAL_MONO<<12); //disable, 4B_SNGL_SCAN,WDLY=8clk,WLH=8clk rLCDCON2=(LINEVAL) (HOZVAL<<10) (10<<21); //LINEBLANK=10 (without any calculation) rLCDSADDR1= (0x0<<27) (((U32) frameBuffer1>>22)<<21 ) M5D((U32)frameBuffer1>>1); //monochrome,LCDBANK,LCDBASEU rLCDSADDR2=M5D((((U32)frameBuffer1+(SCR_XSIZE*LCD_YSIZE/8))>>1)) (MVAL<<21) (1<<29); rLCDSADDR3=(LCD_XSIZE/16) ((SCR_XSIZE-LCD_XSIZE) / 16)<<9); } 3.3.2 Opening the LCD 1) Allocate memory space in the kernel for display memory. You can add the following to the display module: #define frameBuffer1 0xC400000 2) Define the frame buffer length and initialize it. Set an array pbuffer with rows and columns corresponding to the height and width of the LCD. pbuffer is used to store the pixel data of each frame sent to the display screen. The amount of pixel data depends on the size of the display screen; pbuffer="BitsPerPixe" * l Lines * / 8 = 160 * 240 / 8 = 4800 (bytes). Since pbuffer is defined as U32, that is, 32-bit (eight four-bit) pointers, each element corresponds to a pixel on the LCD screen. The display mode adopts 4-bit single scan, so it should loop 4800 (bytes) / 4 = 1200 times. In fact, the number of units corresponds to the entire 160×240 screen range. for ( i="0", i<1200; i++) # (pBuffer[ i]) = 0x0; 3) Data processing The LCD data processing mainly processes the data to be displayed (conversion from 4 bits to 32 bits). temp_data = (Buf[i*4+3]<<24) + (Buf[i*4+2]<<16) + (Buf[*i4+1]<<8) + (Buf[*i4]); 3.3.3 Clearing the screen: Clearing the screen sets each unit of the video memory to zero, thus clearing the screen display. The following is part of the source code for clearing the screen: Void clrscreen(void) { int ; i unsigned int* pbuffer; pbuffer = (U32*)frameBuffer1; for ( i="0"; i<1200; i++) { pbuffer[ i]=0; } } 3.3.4 Compiling the LCD display function and writing data to the LCD device: Define the displayLcd() function as the LCD display function, used to write data to the video memory, send it to the LCD display through pbuffer, and let it be displayed cyclically on the LCD screen. To display ASCII characters on an LCD, first convert each character into a 16*16-bit array to form a character library (used in this implementation). Then, select the character to be displayed, extract the character from the character library, and after a function call, send the character to be displayed to the LCD display. In this way, the ASCII character is displayed on the LCD. Part of the source code is as follows: void displayLCD(void) //LCD display function { unsigned int* pbuffer, temp_data; int ;i pbuffer=(U32* )frameBuffer1; for( i="0"; i<1200; i++) { temp_data=(Buf[ i* 4+3]<<24)+(Buf[ i* 4+2]<< 16)+(Buf[*i 4+1]<<8)+(Buf[*i 4]; //Perform 4-bit to 32-bit data conversion pbuffer[ i]=~temp_data; Delay(10); } } While adding the header files used, add calls to functions such as LCD_Init() and displayLCD(). 4 Network command processing In terms of hardware design, an Ethernet port is adopted. In terms of software, a thin TCP/IP network communication protocol is implemented. The traditional TCP/IP protocol stack is reduced according to the characteristics of the embedded system [4], so that the embedded multi-parameter monitor can support a lightweight TCP/IP protocol stack and directly connect to the Internet. In the design, the processing of TCP/IP protocol clusters that do not have real-time requirements and are time-consuming is placed in the main program sequential loop. The network program structure adopts a combination of sequential execution and hardware interrupt. This hardware interrupt is an external clock interrupt, and the interrupt level is lower than the FIQ interrupt level of the non-vector mode. Network data interaction is performed when the system is idle. The network interface control chip adopts a polling method, that is, the thin TCP/IP protocol cluster is processed in the execution gap of other interrupt tasks, sacrificing the response speed for the system reliability. Considering the requirement of the embedded medical monitor to achieve real-time monitoring in a narrow bandwidth unreliable environment, it is decided to select UDP (User Datagram Protocol) in the transport layer of the network communication protocol. 5 Conclusion This paper introduces the design and implementation of an ARM-based embedded multi-parameter monitor, and its application in practical measurements. This provides a meaningful new approach and a practical solution for the application of embedded systems in medical monitoring. Since this network monitor is primarily targeted at hospitals, communities, and homes, it boasts advantages such as low cost, low power consumption, large data storage capacity, fast data processing speed, ease of use for telemedicine, and the ability to perform real-time multitasking. It represents a new direction for the further intelligent, professional, miniaturized, and low-power development of modern medical monitoring, and therefore has a broad market prospect.
Read next

CATDOLL 135CM Tami

Crafted with attention to detail, this 135cm doll offers a well-balanced and realistic body shape that feels natural in...

Articles 2026-02-22