bp monitor basics
TRANSCRIPT
-
7/31/2019 BP Monitor Basics
1/38
Freescale SemiconductorApplication Note
Document Number: AN4328Rev. 0, 06/2011
Contents
Freescale Semiconductor, Inc., 2011. All rights reserved.
1 Introduction
This application note demonstrates the implementation
of a basic blood pressure monitor using Freescale
products. The blood pressure monitor can be
implemented using any of the Freescale medical oriented
MCUs: Kinetis MK53N512 and Flexis MM members
MC9S08MM128 and MCF51MM256 embedding a16-bit ADC, 12-bit DAC, 2 Programmable-Gain
Op-Amps, 2 TRIAMPS, Analog Comparators, and Vref
generator. The K50 Family can also perform DSP
instructions for signal treatment. MCF51MM can
perform MAC.
This document is intended to be used by biomedical
engineers, medical equipment developers or any person
related with the practice of medicine and interested in
understanding the operation of Blood Pressure Monitors.
Nevertheless, it is necessary to know fundamentals ofelectronic, analog and digital circuits.
1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2 Blood Pressure Fundamentals . . . . . . . . . . . . . . . . . . . . 2
2.1 Arterial pressure . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.2 Blood pressure monitor operating principle. . . . . . . 3
3 Blood Pressure Monitor Implementation . . . . . . . . . . . . . 3
3.1 MED-BPM Analog front end . . . . . . . . . . . . . . . . . . 4
3.2 Functional description . . . . . . . . . . . . . . . . . . . . . . . 7
4 Software model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.1 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94.2 Communication with PC . . . . . . . . . . . . . . . . . . . . 10
4.3 Measurement execution . . . . . . . . . . . . . . . . . . . . 13
5 Running Blood Pressure Monitor Demo . . . . . . . . . . . . 15
5.1 Tower system configuration. . . . . . . . . . . . . . . . . . 15
5.2 Loading application . . . . . . . . . . . . . . . . . . . . . . . . 19
5.3 Running demo. . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
6 References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
7 Conclusions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Appendix ASoftware Timer . . . . . . . . . . . . . . . . . . . . . . . . . . 27
A.1 Initializing software timer . . . . . . . . . . . . . . . . . . . . 27
A.2 Creating a software timer . . . . . . . . . . . . . . . . . . . 27
A.3 Functional description . . . . . . . . . . . . . . . . . . . . . . 28
Appendix BCommunication Protocol . . . . . . . . . . . . . . . . . . . 31
B.1 Packet Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
B.2 Command opcode. . . . . . . . . . . . . . . . . . . . . . . . . 32B.3 Data length and data string . . . . . . . . . . . . . . . . . . 34
B.4 Functional description . . . . . . . . . . . . . . . . . . . . . . 34
Blood Pressure MonitorFundamentals and Designby: Santiago Lopez
RTAC Americas
Guadalajara
Mexico
-
7/31/2019 BP Monitor Basics
2/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Blood Pressure Fundamentals
Freescale Semiconductor2
2 Blood Pressure Fundamentals
This section contains information about physiological concepts of arterial pressure and Blood Pressure
Monitor operating principle.
2.1 Arterial pressure
Arterial Pressure is defined as the hydrostatic pressure exerted by the blood over the arteries as a result of
the heart left ventricle contraction. Systolic Arterial Pressure is the higher blood pressure reached by the
arteries during systole (ventricular contraction), and Diastolic Arterial Pressure is the lowest blood
pressure reached during diastole (ventricular relaxation). In a healthy young adult at rest, Systolic Arterial
Pressure is around 110mm Hg and Diastolic Arterial Pressure is around 70 mm Hg.
Blood flow is the blood volume that flows through any tissue in a determined period of time (typically
represented as mL/min) in order to bring tissue oxygen and nutrients transported in blood. Blood flow is
directly affected by the blood pressure as blood flows from the area with more pressure to the area with
less pressure. The greater the pressure difference, the higher the blood flow. Blood is pumped from the left
ventricle of the heart out to the aorta where it reaches its higher pressure levels. Blood pressure falls as
blood moves away from the left ventricle until it reaches 0 mm Hg, when it returns to the hearts right
atrium. Figure 2-1 represents pressure changes.
Figure 2-1. Pressure changes on blood vessels
2.2 Blood pressure monitor operating principleBlood Pressure Monitor operation is based on the oscillometric method. This method takes advantage of
the pressure pulsations taken during measurements. An occluding cuff is placed on the left arm and is
connected to an air pump and a pressure sensor. Cuff is inflated until a pressure greater than the typical
Systolic value is reached, then the cuff is slowly deflated. As the cuff deflates, when Systolic pressure
value approaches, pulsations start to appear. These pulsations represent the pressure changes due to heart
-
7/31/2019 BP Monitor Basics
3/38
Blood Pressure Monitor Implementation
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 3
ventricle contraction and can be used to calculate the heartbeat rate. Pulsations grow in amplitude until
Mean Arterial Pressure is reached, then decrease until they disappear. Figure 2-2 shows the cuff pressure
vs. pulsations.
Figure 2-2. Cuff pressure vs. heartbeat signal
Oscillometric method determines the Mean Arterial Pressure (MAP) by taking the cuff pressure when the
pulse with the biggest amplitude appears. Systolic and Diastolic values are calculated using algorithms that
vary among different medical equipment developers. Freescale Blood Pressure Monitor calculates Systolic
and Diastolic pressure by considering that Systolic pressure is approximately equal to the pressure
measurement taken in the cuff when a pulse with 70% of the amplitude of the MAP pulse appears while
the cuff pressure is above the MAP value. Diastolic pressure is approximately equal to the cuff pressure
value registered when a pulse with 50% of the MAP pulse amplitude appears while the cuff pressure is
under the MAP value.
3 Blood Pressure Monitor ImplementationBlood Pressure Monitor is implemented using Freescale Medical Oriented MCUs Kinetis K53 and Flexis
MM devices, which feature the following characteristics:
16-bit ADC
12-bit DAC
2x Programmable Gain OpAmps
2x TRIAMPS
Vrefgenerator
Set of DSP instructions including MAC (Only K5X Family)
Multiply and Accumulate (MAC) instruction on MCF51MM
Freescale Medical Oriented MCUs reduce the Bill Of Materials (BOM) required for medical applications
and provides great processing capabilities ideal for Medical Equipment. Nevertheless, some external
circuitry is needed for pressure sensing and cuff control.
-
7/31/2019 BP Monitor Basics
4/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Blood Pressure Monitor Implementation
Freescale Semiconductor4
3.1 MED-BPM Analog front end
MED-BPM Analog Front End (AFE) is a demo board designed for work as a Blood Pressure Monitor in
conjunction with a Freescale Medical Oriented MCU. MED-BPM communicates with the MCU using the
Medical Connector, and allows for easy prototyping and reduced time to market by using the Freescale
Tower System. MED-BPM block diagram is shown below (Figure 3-3).
Figure 3-3. MED-BPM block diagram
3.1.1 Medical connector
The Medical Connector is a standard connector in the Freescale medical oriented boards (TWR-9S08MM,
TWR-MCF51MM and TWR-K53). This connector includes the most important analog peripherals formedical applications and an I2C channel for communication. The following table describes the Medical
Connector Signals.
-
7/31/2019 BP Monitor Basics
5/38
Blood Pressure Monitor Implementation
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 5
3.1.2 Arm cuff pressure control
MED-BPM works using an oscillometric method for Blood Pressure measurements. This is a noninvasivemethod which requires an external arm cuff in order to occlude the patients arm and detect the Systolic
and Diastolic Arterial Pressure. The arm cuff is inflated using an external air pump controlled with an
MCU GPIO pin, and deflated by activating an escape valve with another GPIO pin.
Because current provided by the USB port (500 mA) is not enough to activate the air pump and the valve
(600 mA), those external components are activated by using an external power source which provides
sufficient current. An optocoupler is needed for coupling MCU control signals with the components to
activate. Figure 3-4 shows the coupling stage.
Figure 3-4. Coupling stage
Table 3-1. Medical connector signals
1 VCC (3.3V) VSS (GND) 2
3 I2C SDA I2C SCL / PWM 4
5 ADC Differential CH + ADC Differential CH - 6
7 ADC Single Ended CH DAC Out 8
9 Op-Amp 1 Out Op-Amp 2 Out 10
11 Op-Amp 1 Input - Op-Amp 2 Input - 12
13 Op-Amp 1 Input + Op-Amp 2 Input + 14
15 TRIAMP 1 Input + TRIAMP 2 Input + 16
17 TRIAMP 1 Input - TRIAMP 2 Input - 18
19 TRIAMP 1 Out TRIAMP 2 Out 20
Q1ZXM61P02F
1
32
+ C10100UF
D3
BAT54HT1
2
1
R10
1K
R8 1K
+ C11100UF
R11 1K
A1
C1
E1
C1T
C2T
E2
C2
A2
D1
ILD223T
1
2
3
4
8
7
6
5
Q2ZXM61P02F
1
32
R6
1K
D2
BAT54HT1
2
1
GND_M
+3_3V_M
GND_M
+3_3V_M
BPM_VALVE
BPM_MOTOR
+
-
3.3v
R14
220
R15
220
-
7/31/2019 BP Monitor Basics
6/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Blood Pressure Monitor Implementation
Freescale Semiconductor6
Output from the optocoupler is connected to a MOSFET working as a switch, so the air pump and valve
mechanisms can be activated successfully.
3.1.3 External elements connector
After the optocoupling and switching stage, a connector for an external air pump, escape valve, and
batteries is placed on the MED-BPM board. This allows the control of external components using MCUsignals. The air pump motor and escape valve are powered using two external AA 1.5 v batteries, because
USB output cannot provide enough current to drive those devices. Figure 3-5 shows the placement of the
connector pins.
Figure 3-5. External components connector
3.1.4 Pressure sensor
Oscillometric method bases it functionality on the measurement of the pressure variations in the arm cuff.
Pressure in the cuff is measured by using the Freescale Pressure Sensor MP3V5050 which integrates
on-chip, bipolar op amp circuitry and thin film resistor networks to provide a high output signal and
temperature compensation. Main charactaristics of the MP3V5050 are featured in the following table.
MP3V5050 delivers a voltage proportional to the input pressure. This sensor is directly connected to the
amplification stage. More information can be found on the Freescale webpage.
3.1.5 Signal filtering and amplification
This stage is composed by three filters, one buffer circuit and one non-inverting amplifier ( Figure 3-6).Filters are first order RC passive type, and the cut frequency is described by the following formula.
Eqn. 3-1
A signal pass through a 10Hz RC Low Pass Filter (LPF) composed by a resistor and a capacitor in order
to eliminate high frequency noise. Then the signal is passed through a buffer circuit, a single Op-Amp in
Table 3-2. MPV3V5050 main chracteristics
Characteristic Value Unit
Pressure Range 1 - 50 kPa
Supply Voltage 2.7 - 3.3 VDC
Accuracy 2.5 %VFSS
Sensitivity 54 mV/kPa
MOTOR
BATTERY
VALVE
J4
HDR 1X6
123456Valv -
Bat -Mot +
Bat +
Valv +Mot -
fc1
2RC---------------=
http://www.freescale.com/http://www.freescale.com/http://www.freescale.com/http://www.freescale.com/ -
7/31/2019 BP Monitor Basics
7/38
Blood Pressure Monitor Implementation
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 7
buffer mode to couple the signal to the sensor. The output from the buffer circuit is where the arterial
pressure measurements are taken. The signal is then filtered again with a 2.2Hz RC High Pass Filter which
removes high frequency noise and gets a cleaner signal for amplification. This signal is amplified using a
non-inverting amplifier composed by a second Op-Amp and two resistors, a 100 k and a 1k resistor
generating a gain of 101 so cuff oscillations can be distinguished better. After this stage, the signal is
filtered again with another 10Hz RC LPF so high frequency noise can be removed. Figure 3-6 shows the
filtering and amplification stage.
Figure 3-6. Filtering and amplification circuit
3.2 Functional description
MED-BPM demo uses a variation of the oscillometric method called Ramp-Up method that takes
measurements while the cuff is inflating.
In the Ramp-Up method, an inflatable air cuff is placed on the patients left arm and is adjusted so it is tight
around the arm. The escape valve is closed and the air pump starts to inflate the cuff. While inflating, the
main pressure in the cuff is monitored and amplified in order to get the cuff pressure oscillations
(Figure 3-6).
OUT1
C91uF
R2
1K
R4
15.0K
R3
15.0KC81uF
GND_D
GND_D
Vref1.2V
INP0-
INP0+OUT0
INP1-
INP1+
BPM_ADC_HEARTBEAT
10Hz LPF ilter
10Hz LPF ilterHIGHPASS 2.2Hz
C14
2.2uFR533.0K
-
+
R1
100K
+
-
TP1
TP2 TP3
BPM_ADC_PRESSURE
Vref1.2V
-
7/31/2019 BP Monitor Basics
8/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software model
Freescale Semiconductor8
Figure 3-7. Pressure oscillations
These oscillations are constantly checked. On each oscillation the main cuff pressure is taken and the
oscillation amplitude is saved. When the pressure has reached a maximum value, the motor stops inflating
and valve opens in order to deflate the cuff. While cuff is deflating calculations are performed.
First, all the pulses are checked in order to find the one with the biggest amplitude. The pulse with the
biggest amplitude represents the MAP, and the main cuff pressure recorded during this pulse is registered
as MAP.
Systolic and Diastolic arterial pressures are calculated using the method mentioned previously in the Blood
Pressure Monitor Operating Principle.
4 Software model
The MED-BPM demo is based on the Freescale USB stack and behaves as an USB CDC (Communication
Device Class). The demo works using state machines which execute one state per cycle, avoiding CPU
kidnapping and emulating parallelism. Figure 7 shows the general software model.
-
7/31/2019 BP Monitor Basics
9/38
Software model
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 9
Figure 4-8. General software model
Each state machine is a task that has to be performed by the MCU. The system can perform several tasks,
completing one at time and not running the next one until the previous one is accomplished in a FIFO (First
In First Out) order. Each state machine contains several sub-state machines allowing equal distribution of
the CPU load among all the state machines. As mentioned before, software is based on the Freescale USB
Stack with PHDC. More information about this software can be found in the USB Stack with PHDC API
Reference Manual.
MED-BPM software is divided in three main parts Initialization, communication with PC and
measurement execution.
4.1 Initialization
The first step when running MED-BPM demo is to initialize all the peripherals needed for demo execution.
On the main() function, function Init_Sys() is called first. This function initializes the clock and
interruptions for working with USB. After this, some required peripherals for AFEs and the Software
Timer are initialized for first use. USB is initialized as a CDC (Communication Device Class) so
communications with the host can start. After this, the state machines execute in an infinite loop.
-
7/31/2019 BP Monitor Basics
10/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software model
Freescale Semiconductor10
Figure 4-9. Initialization routine
4.2 Communication with PC
The PC communicates with the device via USB. The device is configured for working as a CDC
(Communication Device Class) and behaves as a Virtual Com Port installed on the computer.
-
7/31/2019 BP Monitor Basics
11/38
Software model
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 11
4.2.1 Command reception
Function SerialComm_PeriodicTask is the CDC Virtual Com Port routine and is called by the main
program. This function is constantly checking the USB input buffer for received data. When a data packet
has been received, the function checks if the received packet is a request according to the communication
protocol. If it is, the function checks the command requested and executes it. Figure 4-10 shows the flow
diagram of the function SerialComm_PeriodickTask.
Figure 4-10. SerialComm_PeriodickTask flow diagram
4.2.2 Command execution
MED-BPM recognizes four Request Commands. BpmStart/StopMeasurementReq starts or stops blood
pressure measurements respectively. BpmStart/StopLeakTestReq starts or stops leakage tests on the cuff.
-
7/31/2019 BP Monitor Basics
12/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software model
Freescale Semiconductor12
When any of these commands are executed, a confirmation packet is generated according to the
Communication Protocol indicating that the command has been received. When Start Requests are
executed, a confirmation packet also indicates if the command was successfully executed or not.
Figure 4-11shows a request command flow.
Figure 4-11. Request command flow diagram
4.2.3 Sending packets
Function SerialComm_SendData sends the data packets to host. Data packets are stored on the output
buffer when they are created and a data counter variable increases indicating the size of the output buffer.
When the function SerialComm_SendData is called, it checks the size of the data counter variable. If it is
not zero, it means that there is information in the output buffer that needs to be sent. The function calls the
CDC interface, part of the USB Stack with PHDC to send the packet. Figure 4-12 shows the functionsflow diagram.
-
7/31/2019 BP Monitor Basics
13/38
Software model
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 13
Figure 4-12. SerialComm_SendData flow diagram
4.3 Measurement execution
When the function BpmStartMeasurementReq is executed, the function Bpm_StartMeasurement is called.
This function initializes Bpm so measurements can be performed. This function first resets all the variables
to ensure the initial state, then it initializes ADCs for working with a 12-bit resolution. Because the first
ADC measurements do not represent any useful information for arterial pressure calculation, those
samples are ignored. BpmIgnoreSamplesCounter is loaded with a predetermined quantity of samples to beignored.
BpmActualState is set to STATE_MEASURING indicating to the BPM state machine that measurements
have to be performed. A Software Timer is now started for taking an ADC sample each 10 mS. More
information about the Software Timer can be found in Appendix A, Software Timer. Finally, the
escape valve is closed and air pump motor is activated to start measurements.
4.3.1 State measuring
In the function Bpm_StartMeasurement, the BPM state machine is taken out of its idle state and set to State
Measuring. On the next state machine execution, the function StateMeasuring is called. Figure 4-13 shows
the StateMeasuring flow diagram.
-
7/31/2019 BP Monitor Basics
14/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software model
Freescale Semiconductor14
Figure 4-13. StateMeasuring flow diagram
During the ramp-up period, cuff pressure is being constantly checked and compared with a maximum
reference value in order to avoid damages to the patient from an excessive inflation. Because the firstsamples under 40 mmHg do not represent any useful information to be analyzed, those samples are ignored
during the first sub-state. A sample counter is previously defined indicating the quantity of samples to be
ignored.
After first samples are ignored, the program searches for oscillations on the main cuff pressure. It looks
for the higher point in each pulse by comparing the new sample with the previous one. If the new sample
-
7/31/2019 BP Monitor Basics
15/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 15
is bigger than the previous one, the new sample is set as the higher point in the actual pulse until a higher
sample appears. If, after five samples, the new sample is smaller than the previous one, it is considered that
the pulse is now going down and the process of looking for the lowest point on the actual pulse starts. After
both pulses have been determined, the pulse amplitude is calculated and stored into an array with the main
cuff pressure measured in that moment, in order to be analyzed later.
When the maximum allowable pressure in the cuff is reached, the air pump motor is stopped and escapevalve is opened. While cuff is being deflated, calculations are performed into the MCU. The first step is
determinate the MAP by finding the pulse with the biggest amplitude previously stored in the array. The
main cuff pressure measured during this pulse is considered to be the MAP. After this, Systolic arterial
pressure is determined by finding a pulse with a main cuff pressure above the MAP and with amplitude of
a 70% of the MAP pulse. Diastolic pressure is determined by finding a pulse with a main cuff pressure
under the MAP and with amplitude of a 50% of the MAP pulse. Finally, ADC values are converted into
mmHg in order to be sent to the GUI to be displayed.
5 Running Blood Pressure Monitor Demo
The Blood Pressure Monitor Demo was developed for running on the Freescale Tower System. Thefollowing steps will guide users on how to run the Blood Pressure Monitor Demo.
5.1 Tower system configuration
The Freescale Tower System is a modular development platform which allows rapid prototyping, a shorter
time to market, and tool reuse. The Blood Pressure Monitor Demo requires five boards to work, 2 x
TWR-ELEV boards, 1 x TWR-SER, 1 x MED-BPM AFE and a TWR Controller module which can be
TWR-K53N512, TWR-MCF51MM or a TWR-S08MM128. MED-BPM AFE can only be connected to
microcontroller modules that include a Medical Connector. The other Tower modules can be used together
with other modules. More information about the Freescale Tower System can be found on the Tower
System Webpage.
The following image shows the elements needed to run the Blood Pressure Monitor Demo (Controller
Module not pictured).
-
7/31/2019 BP Monitor Basics
16/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Running Blood Pressure Monitor Demo
Freescale Semiconductor16
Figure 5-14. Required elements
The blue box contains the air pump, the escape valve and 2 X AA batteries for driving motor and valve
because the USB port cannot provide sufficient current for those devices. Figure 5-14 shows the elements
in the blue box.
-
7/31/2019 BP Monitor Basics
17/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 17
Figure 5-15. External control elements
The Blood Pressure Monitor Demo works using TWR-K53N51, TWR-MCF51MM and
TWR-S08MM128 controller modules. The following image shows the three controller boards.
Figure 5-16. Controller boards
5.1.1 Jumper Configuration
To run the blood pressure monitor properly, the following jumper configurations must be made on the
boards.TWR-SER jumper configuration
J10 1-2
J16 3-4
TWR-K53N512 jumper configuration
J1 Open
J3 Open
J4 1-2
J11 1-2
J15 1-2
J17 1-2
J18 1-2
-
7/31/2019 BP Monitor Basics
18/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Running Blood Pressure Monitor Demo
Freescale Semiconductor18
TWR-MCF51MM and TWR-9S08MM128 jumper configuration
J1 1-2
J2 1-2
J10 2-3
J11 1-2
J12 Open
J18 1-2, 9-10, 11-12 and 13-14 Open
5.1.2 System assembly
The Tower system must be assembled by connecting the controller module and the TWR-SER board to the
TWR-ELEV boards. The side of the Controller and TWR-SER boards marked as Primary must be
connected to the Primary Elevator and the other side to the Secondary Elevator. The MED-BPM board
must be connected to the Controller Boards medical connector. The following image shows the tower
system assembled.
Figure 5-17. Figure 16. Tower system assembled
Connect the external components to the MED-BPM so they can be controlled by the MCU. Batteries, Air
Pump motor and valve cables must be connected to the MED-BPM board as shown in Figure 3-5 on the
External elements connector External Elements Connector. A single air tube is connected to the cuff, the
air pump and the escape valve. This tube must be connected to the pressure sensor in order to be constantly
measuring the pressure values on the system. Once the system has been completely assembled, it will look
like Figure 5-18.
-
7/31/2019 BP Monitor Basics
19/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 19
Figure 5-18. Blood Pressure Monitor demo assembled
5.2 Loading application
Software for Blood Pressure Monitor demo was developed on IAR Workbench for ARM 6.10 for the
Kinetis K53 MCU and in Freescale CodeWarrior 6.3 for MCF51MM256 and MC9S08MM128 MCUs.
Each one of these compilers loads the program into the MCU in a different manner. This part of the
document will explain how to load the program on each type of compiler.
5.2.1 Loading IAR project on K53
Connect the USB cable to the TWR-K53N512 board. The device must be recognized as an Open Source
BDM Debug Port. Install the Open Source BDM drivers in the IAR folder.
Open the project and verify the debugger in the project options panel by clicking on Menu Project/Options.
Select the category Debugger and check that PE micro is selected (Figure 5-19).
-
7/31/2019 BP Monitor Basics
20/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Running Blood Pressure Monitor Demo
Freescale Semiconductor20
Figure 5-19. Debugger selection
Load the project into the MCU by clicking on the DEBUG button (Figure 5-20). The project will compile
automatically and load into the MCU. After that, disconnect the USB cable from the TWR-K53N512
board.
-
7/31/2019 BP Monitor Basics
21/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 21
Figure 5-20. Figure 19. DEBUG button
5.2.2 Loading CodeWarrior project on MM devices
Connect a USB cable to the TWR-SER board in order to turn on the board. Connect a USB cable to the
TWR-MM Controller Module. The device must be recognized as an Open Source BDM Debug Port.
Install the Open Source BDM drivers on the CodeWarrior folder.
Open the CodeWarrior project for the MM module to be used and verify that the option Open Source BDMis selected for debugging (Figure 5-21). Then press the debug button to automatically compile the program
and load it into the MCU.
-
7/31/2019 BP Monitor Basics
22/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Running Blood Pressure Monitor Demo
Freescale Semiconductor22
Figure 5-21. CodeWarrior window
Once the program has been loaded into the MCU, disconnect the USB cable from both, TWR-SER and
MM controller board.
5.3 Running demo
Once the Tower System has been configured and the project loaded into the MCU ( Tower system
configuration & Loading application) demo can be used. The following steps must be completed in order
to run the demo successfully.
Connect the USB cable to the TWR-SER board as shown in Figure 5-22.
Figure 5-22. Connecting TWR-SER USB cable
-
7/31/2019 BP Monitor Basics
23/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 23
The device must be recognized as a Virtual Com Port. Install the driver for Virtual Com Port included in
the project folder. Once the driver has been installed and device recognized, open the GUI (Graphic User
Interface). A window will appear asking for the COM PORT number assigned to the device. Select the
appropriate COM PORT number and click OK (Figure 5-23). The GUI interface will appear on screen
(Figure 5-24).
Figure 5-23. Port chooser
Figure 5-24. Figure 23. GUI main screen
Verify that Caps Lock is not activated on keyboard and then press Shift + D in order to start GUI in doctor
mode (Figure 5-25).
-
7/31/2019 BP Monitor Basics
24/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Running Blood Pressure Monitor Demo
Freescale Semiconductor24
Figure 5-25. Figure 24. Doctor mode
Place the cuff on the left arm with the plastic hose pointing to the brachial artery, and adjust the cuff to the
arm size as shown in Figure 5-26. Click the Blood Pressure button on the GUI. Measurements will start
and after a while, the measurements will appear on screen (Figure 5-27).
-
7/31/2019 BP Monitor Basics
25/38
Running Blood Pressure Monitor Demo
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 25
Figure 5-26. Cuff placement
Figure 5-27. GUI running
-
7/31/2019 BP Monitor Basics
26/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
References
Freescale Semiconductor26
6 References More information about Freescale Medical portfolio can be found on ww.freescale.com/medical
More Tower System information can be found on www.freescale.com/tower
Software for MM devices was developed using CodeWarrior V6.3 and can be found on
www.freescale.com/codewarrior
Software for Kinetis was developed and tested on IAR v6.1 for ARM. Download 30-day evaluation
software from IAR Webpage in the section Downloads
Follow us http://www.facebook.com/freescale, http://www.twitter.com/freescale and
http://www.youtube.com/freescale.
7 Conclusions
Freescale Medical portfolio offers a wide range of solutions for medical developments. Kinetis K50
Family and Flexis MM are examples of High Performance, Ultra-Low Power MCUs embedding analog
peripherals, ideal for bio-signals treatment and great processing capabilities for digital signal treatment.
The Blood Pressure Monitor is an example of the capabilities of the Freescale Medical MCU portfolio,allowing the development of medical applications using the MCU and a few external components.
http://www.freescale.com/webapp/sps/site/homepage.jsp?code=APLMEDICALhttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=TOWER_HOME&tid=vantowerhttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=CW_HOME&tid=vancodewarriorhttp://www.facebook.com/freescalehttp://twitter.com/#!/Freescalehttp://www.youtube.com/freescalehttp://www.youtube.com/freescalehttp://twitter.com/#!/Freescalehttp://www.facebook.com/freescalehttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=CW_HOME&tid=vancodewarriorhttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=CW_HOME&tid=vancodewarriorhttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=TOWER_HOME&tid=vantowerhttp://www.freescale.com/webapp/sps/site/homepage.jsp?code=APLMEDICAL -
7/31/2019 BP Monitor Basics
27/38
Software Timer
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 27
Appendix A Software Timer
Software timer functions handle an array of subroutines with predefined elapse times. Software timer is
constantly checking the elapse times, and when one or more of these times are reached, the respective
subroutine is called.
Software timer allows a better management of time-dependent subroutines because only one MCU timeris needed. The timer must be configured to generate 1mS interruptions and a variable must be increased
by one on each interrupt execution indicating the quantity of milliseconds elapsed.
A.1 Initializing software timer
The MCU timer must be initialized in order to generate an interrupt each 1mS. On the interrupt routine a
global variable must be increased by one for each interrupt execution. This variable must be specified in
the file SwTimer.h and the initialization function must be called by the function SwTimer_Init in the file
SwTimer.c.
At the beginning of the application, function SwTimer_Init must be called. This function cleans the objects
array releasing all the software timers and leaving them available for application. MCU Timerinitialization must be called in this function.
A.2 Creating a software timer
Once the Software Timer has been initialized, a Timer can be created by using the function
SwTimer_CreateTimer(pFunc_t callBackFunc). The input parameter is the name of the function to be
called. When this function is executed, it returns a timerId value which is necessary to start or stop the
created timer. If a 0xFF is returned as timerId, it means that the maximum number of timers has been
reached and the timer could not be initialized. Maximum number of timers is defined as
MAX_TIMER_OBJECTS and can be found in file SwTimer.h.
Example:
My_Timer_Id = SwTimer_CreateTimer(Function_To_Be_Called);
Function SwTimer_StartTimer(UINT8 timerId, UINT16 tickPeriod_ms) starts the SwTimer, the input
parameter timerId is the timerId number returned by the Create Timer function when the timer was created.
The period of time in milliseconds that have to elapse in order to execute the function is tickPeriod_ms.
The following example starts the previously created timer to execute Function_To_Be_Called each 10ms
Example:
SwTimer_StartTimer(My_Timer_Id, 10);
When the time defined has elapsed, the function Function_To_Be_Called is executed and timer isdeactivated. A new Start Timer statement must be written in order to activate the timer again when the
programmed time has elapsed. Function SwTimer_StopTimer(UINT8 timerId) stops the selected timer.
-
7/31/2019 BP Monitor Basics
28/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software Timer
Freescale Semiconductor28
A.3 Functional description
When the function SwTimer_CreateTimer is called, a new object in the Timer Object Array is created.
Function SwTimer_PeriodicTask is constantly called by the Main Application Routine and is checking all
the timer objects on the Timer Object Array. When the MCU timer configured to interrupt each 1mS
generates an interrupt, a variable increases its count by one, indicating that 1mS has elapsed.
SwTimer_PeriodicTask function checks this variable and, when it is not zero, the value of this variable issent from the Timer Object programmed Time. If the programmed time of a Timer Object reaches zero,
the subroutine declared for that timer on the function SwTimer_CreateTimer is called and the created time
is set to INACTIVE until a new SwTimer_StartTimer is called.
The following block diagram represents SwTimer_PeriodicTask subroutine.
-
7/31/2019 BP Monitor Basics
29/38
Software Timer
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 29
-
7/31/2019 BP Monitor Basics
30/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Software Timer
Freescale Semiconductor30
-
7/31/2019 BP Monitor Basics
31/38
Communication Protocol
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 31
Appendix B Communication Protocol
The application communicates with the GUI (Graphic User Interface) on the PC using the Freescale USB
Stack with PHDC with the device acting as a CDC (Communication Device Class). The device
communicates via serial interface similar to the RS232 communications standard but emulating a virtual
COM port.
Once the device has been connected and a proper driver has been installed, the PC will recognize it as a
Virtual COM Port and it will be accessible, for example, using HyperTerminal. Communication is
established using the following parameters.
Bits per second 115200
Data bits 8
Parity None
Stop bits 1
Flow control None
Communication starts when the host (PC) sends a request packet indicating to the device the action to
perform. The device then responds with a confirmation packet indicating to the host that the command has
been received. At this point, the host must be prepared to receive data packets from the device and show
the data received on the GUI. Communication finishes when the host sends a request packet indicating the
device should stop. The following block diagram describes the data flow.
Figure B-1. Communication protocol data flow
Packets sent between the host and the device have a specific structure. The packet is divided into 4 main
parts, Packet Type, Command Opcode, Data Length and Data itself. The image below shows the packet
structure.
-
7/31/2019 BP Monitor Basics
32/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Communication Protocol
Freescale Semiconductor32
Figure B-2. Packet Structure
B.1 Packet Type
The Packet Type byte defines the kind of packet to be sent. There are three kinds of packets that can be
sent between host and device.
B.1.1 REQ packet
This is a request packet; this kind of packet is used by the host to request that the device perform some
action such as start or stop a measurement. A REQ packet is usually composed of 2 bytes, Packet Type and
Command Opcode. Data Length and Data Packet bytes are not required.
B.1.2 CFM packet
This is a confirmation packet; this kind of packet is used by the device to confirm to the host that a
command has been received and sends a response indicating if the command is accepted or if the device
is busy.
B.1.3 IND packet
This is an indication packet; this kind of packet is used to indicate to the host that an event has occurred
inthe device and data needs to be sent. This is used, for example, when the device has a new set of data tobe sent to the GUI.
The following table shows the respective HEX codes for each Packet Type.
B.2 Command opcodeThe command opcode byte indicates the action to be performed for a REQ packet and the kind of
confirmation or indication in cases of CFM and IND packet types respectively. There are different opcodes
for each Packet Type. The following table shows the different opcodes (see Note 1).
Table 7-3. Packet Type
Packet Type HEX Code
REQ 0x52
CFM 0x43
IND 0x69
-
7/31/2019 BP Monitor Basics
33/38
Communication Protocol
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 33
Table 7-4. OPCODES
Opcode REQ CFM INDOpcode
(Hex)
Glucose Meter
GLU_START_MEASUREMENT X X 0x00
GLU_ABORT_MEASUREMENT X X 0x01
GLU_START_CALIBRATION X X 0x02
GLU_BLOOD_DETECTED X 0x03
GLU_MEASUREMENT_COMPLETE_OK X 0x04
GLU_CALIBRATION_COMPLETE_OK X 0x05
Blood Pressure Meter
BPM_START_MEASUREMENT X X 0x06
BPM_ABORT_MEASUREMENT X X 0x07
BPM_MEASUREMENT_COMPLETE_OK X 0x08
BPM_MEASUREMENT_ERROR X 0x09
BPM_START_LEAK_TEST X X 0x0A
BPM_ABORT_LEAK_TEST X X 0x0B
BPM_LEAK_TEST_COMPLETE X 0x0C
BPM_SEND_PRESSURE_VALUE_TO_PC X 0x28
Electro Cardiograph Opcode
ECG_HEART_RATE_START_MEASUREMENT X X 0x0D
ECG_HEART_RATE_ABORT_MEASUREMENT X X 0x0E
ECG_HEART_RATE_MEASUREMENT_COMPLETE_OK X 0x0F
ECG_HEART_RATE_MEASUREMENT_ERROR X 0x10
ECG_DIAGNOSTIC_MODE_START_MEASUREMENT X X 0x12
ECG_DIAGNOSTIC_MODE_STOP_MEASUREMENT X X 0x13
ECG_DIAGNOSTIC_MODE_NEW_DATA_READY X 0x14
Thermometer
TMP_READ_TEMEPRATURE X X 0x15
Height scale
HGT_READ_HEIGHT X X 0x16
Weight scale
WGT_READ_WEIGHT X X 0x17
-
7/31/2019 BP Monitor Basics
34/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Communication Protocol
Freescale Semiconductor34
NOTE
Software related with this application note does not respond to all of these
commands.
B.3 Data length and data string
The Data Length and Data String bytes are the data quantity count and the data itself. The Data Length
byte represents the number of bytes contained in the Data String. The Data String is just the information
to be sent, therefore the Data Length byte must not count the Packet Type byte, the Command Opcode byte,
or itself.
B.4 Functional description
Communication starts when the host sends a REQ packet indicating to the device to start a new
measurement. The host must send a REQ Packet Type to start transactions (Figure B-3).
Figure B-3. Start packet sent by host
Start Opcode can be any Opcode related to start a measurement. For example, to start ECG in diagnostic
mode, Data Packet will look like Figure B-4.
Spirometer
SPR_DIAGNOSTIC_MODE_START_MEASURMENT X X 0x1C
SPR_DIAGNOSTIC_MODE_STOP_MEASURMENT X X 0x1D
SPR_DIAGNOSTIC_MODE_NEW_DATA_READY X 0x1E
Pulse Oximetry
POX_START_MEASURMENT X X 0x21
POX_ABORT_MEASURMENT X X 0x22
POX_MEASURMENT_COMPLETE_OK X 0x23
POX_MEASURMENT_ERROR X 0x24
POX_DIAGNOSTIC_MODE_START_MEASURMENT X X 0x25
POX_DIAGNOSTIC_MODE _STOP_MEASURMENT X X 0x26
POX_DIAGNOSTIC_MODE_NEW_DATA_READY X 0x27
0x21
System commands
SYS_CHECK_DEVICE_CONNECTION X X 0x29
SYS_RESTART_SYSTEM X 0x2A
Table 7-4. OPCODES (continued)
-
7/31/2019 BP Monitor Basics
35/38
Communication Protocol
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 35
Figure B-4. Starting ECG in diagnostic mode
The HEX code for a request (REQ) Packet Type is 0x52, and 0x12 corresponds to
ECG_DIAGNOSTIC_MODE_START_MEASUREMENT. After sending the REQ packet, a CFM packetmust be received indicating the status of the device. The received packet must look like Figure B-5.
Figure B-5. Confirmation packet structure
The error byte will indicate the device status. The table below shows the possible error codes.
If the error byte received corresponds to OK, the device will start sending data as soon as a new data packet
is ready. If BUSY error is received, the host must try to communicate later. If error received is INVALID
OPCODE, data sent and transmission lines must be checked.
If a CFM packet with an OK error has been received, device will start sending information related to the
measurement requested. This is performed using indication packets (IND). Indication packet structure is
shown in Figure B-6.
Figure B-6. ndication packet structure
The first byte contains the respective HEX code for an Indication Packet type. The second byte contains
the Opcode for the kind of indication. For example, if the device is sending an Indication Packet for
ECG_DIAGNOSTIC_MODE_NEW_DATA_READY, the HEX code read in this position will be 0X14
because this is the Indication Opcode for a new set of data from ECG diagnostic mode. The next byte is
the Length, which indicates the quantity of data to be sent.
The first couple of bytes after Length byte are the Packet ID bytes. Packet ID is a 16-bit data divided into
2 bytes to be sent, and contains the number of packets that have been sent. The Packet ID number of a datapacket is the Packet ID of the previous packet + 1. For example, if the Packet ID of the previous packet
sent was 0X0009 the Packet ID of the next packet must be 0x000A allowing GUI to determine if a packet
is missing.
The next data bytes are the Data String and contain the information of the measurement requested. Data
quantity is determined by the Data Length byte, and data is interpreted depending on the kind of
Table 7-5. Error codes
Error HEX Code
OK 0x00
BUSY 0x01
INVALID OPCODE 0x02
-
7/31/2019 BP Monitor Basics
36/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Communication Protocol
Freescale Semiconductor36
measurement. For example, for MED-EKG Demo, Data 2 to Data n-1 contains the data to be graphed.
Each point in the graph is represented by a 16-bit signed number. This means that each two data bytes in
the packet is one point in the graph, the first byte is the most significant part of the long (16-bits) and the
second byte is the less significant part. The long is signed using 16 bit ones complement. The last byte
contains the Heart Rate measurement. This byte must be taken as it is an unsigned char data that contains
the number of beats per minute. Figure B-7 shows a typical MED-EKG demo indication packet.
Figure B-7. MED-EKG IND packet
When a Stop request is sent by the host, the device stops sending data and waits for a new Start request
command. Figure B7 shows the Stop Command structure.
Figure B-8. Stop command structure
Immediately after this, the device must acknowledge with a CFM packet like the one shown in Figure B-9.
Figure B-9. Stop CFM packet
The CFM packet for stop does not require an error code. If this packet has not been received, the request
has been rejected or not taken, and must be sent again in order to stop the measurements.
-
7/31/2019 BP Monitor Basics
37/38
Blood Pressure Monitor Fundamentals and Design, Rev. 0
Freescale Semiconductor 37
THIS PAGE IS INTENTIONALLY BLANK
-
7/31/2019 BP Monitor Basics
38/38
Document Number: AN4328Rev. 006/2011
How to Reach Us:
Home Page:www.freescale.com
Web Support:http://www.freescale.com/support
USA/Europe or Locations Not Listed:Freescale Semiconductor, Inc.Technical Information Center, EL5162100 East Elliot RoadTempe, Arizona 85284+1-800-521-6274 or +1-480-768-2130www.freescale.com/support
Europe, Middle East, and Africa:Freescale Halbleiter Deutschland GmbHTechnical Information CenterSchatzbogen 781829 Muenchen, Germany+44 1296 380 456 (English)+46 8 52200080 (English)+49 89 92103 559 (German)+33 1 69 35 48 48 (French)www.freescale.com/support
Japan:Freescale Semiconductor Japan Ltd.HeadquartersARCO Tower 15F1-8-1, Shimo-Meguro, Meguro-ku,Tokyo 153-0064Japan0120 191014 or +81 3 5437 [email protected]
Asia/Pacific:Freescale Semiconductor China Ltd.Exchange Building 23FNo. 118 Jianguo RoadChaoyang DistrictBeijing 100022China+86 10 5879 [email protected]
For Literature Requests Only:Freescale Semiconductor Literature Distribution Center1-800-441-2447 or 303-675-2140Fax: [email protected]
Information in this document is provided solely to enable system and software
implementers to use Freescale Semiconductor products. There are no express or
implied copyright licenses granted hereunder to design or fabricate any integrated
circuits or integrated circuits based on the information in this document.
Freescale Semiconductor reserves the right to make changes without further notice to
any products herein. Freescale Semiconductor makes no warranty, representation or
guarantee regarding the suitability of its products for any par ticular purpose, nor doesFreescale Semiconductor assume any liability arising out of the application or use of any
product or circuit, and specifically disclaims any and all liability, including without
limitation consequential or incidental damages. Typical parameters that may be
provided in Freescale Semiconductor data sheets and/or specifications can and do vary
in different applications and actual performance may vary over time. All operating
parameters, including Typicals, must be validated for each customer application by
customers technical experts. Freescale Semiconductor does not convey any license
under its patent rights nor the rights of others. Freescale Semiconductor products are
not designed, intended, or authorized for use as components in systems intended for
surgical implant into the body, or other applications intended to support or sustain life,
or for any other application in which the failure of the Freescale Semiconductor product
could create a situation where personal injury or death may occur. Should Buyer
purchase or use Freescale Semiconductor products for any such unintended or
unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and
its officers, employees, subsidiaries, affiliates, and distributors harmless against all
claims, costs, damages, and expenses, and reasonable attorney fees arising out of,
directly or indirectly, any claim of personal injury or death associated with suchunintended or unauthorized use, even if such claim alleges that Freescale
Semiconductor was negligent regarding the design or manufacture of the part.
RoHS-compliant and/or Pb-free versions of Freescale products have the functionality
and electrical characteristics as their non-RoHS-compliant and/or non-Pb-free
counterparts. For further information, see http://www.freescale.comor contact your
Freescale sales representative.
For information on Freescales Environmental Products program, go to
http://www.freescale.com/epp .
Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc.
All other product or service names are the property of their respective owners.
Freescale Semiconductor, Inc. 2011. All rights reserved.
http://www.freescale.com/http://www.freescale.com/http://www.freescale.com/epphttp://www.freescale.com/epphttp://www.freescale.com/epphttp://www.freescale.com/