Freescale Semiconductor
Poznámka k aplikaci
Číslo dokumentu: AN4496
Rev.0, 03/2012
Pulzní oxymetr pomocí USB PHDC
podle: José Santiago Lopez Ramirez RTAC Américas
Zavedení
Tato aplikační poznámka vysvětluje implementaci pulzního oxymetru, který komunikuje s počítačem pomocí třídy USB Personal Healthcare Device Class. Implementace se provádí na mikrokontroléru Freinetcale MK53N512 Kinetis, ale může být implementována na jakémkoli mikrokontroléru USB s podporou Freescale.
Tato poznámka k aplikaci je určena pro vývojáře lékařských řešení, biomedicínské inženýry nebo jakoukoli osobu, která se zajímá o třídu osobních zdravotnických zařízení USB. Přesto jsou vyžadovány určité dovednosti v programování C a manipulaci s mikrokontroléry.
Tato poznámka k aplikaci úzce souvisí s poznámkou k aplikaci „Základy a design pulzního oxymetru AN4327“. Pro lepší pochopení se doporučuje přečíst AN4327.
Třída zařízení pro osobní zdravotní péči skončilaview
Universal Serial Bus (USB) je standard, který definuje hardware a protokoly pro komunikaci mezi hostitelem (obvykle počítačem) a jedním nebo více zařízeními. Každé zařízení USB má svůj vlastní účel, a proto jsou rozděleny do různých tříd podle své funkce. Jeden example je třída HID (Human Interface Device), která se používá v zařízeních, jako jsou počítačové klávesnice a myš.
Implementace pulzního oxymetru
Personal Healthcare Device Class (PHDC) definuje požadavky na navázání komunikace a bezproblémové interoperability mezi osobními USB zdravotnickými zařízeními a USB hostiteli, které mají být následně zpracovány, uloženy nebo přeneseny k lékaři nebo příbuznému přes internet.
USB PHDC se používá ve zdravotnických výměnných protokolech, jako je ISO / IEEE 11073-20601, jako metoda přenosu komunikačních paketů mezi hostitelem a osobním zdravotnickým zařízením. Standardizuje způsob, jakým jsou data a zprávy odesílány přes USB.
Implementace pulzního oxymetru
Pulzní oxymetr je implementován pomocí Freescale TWR-K53N512, vývojové desky tower, včetně medicínsky orientovaného mikrokontroléru MK53N512, MED-SPO2, analogové čelní desky pro vývoj řešení pulzní oxymetrie, a TWR-SER věžové systémové desky pro návrhy včetně sériové komunikace. Jedná se o stejný hardware, jaký se používá v AN4327 „Základy a design pulzního oxymetru“. Další informace o principech pulzní oxymetrie a hardwaru použitém při vývoji pulzního oxymetru najdete v této poznámce k aplikaci.
Systém je založen na USB zásobníku Freescale s PHDC, což je bezplatný kód pro vývoj řešení, která vyžadují připojení USB, a lze jej stáhnout z Freescale web strana. Tento zásobník obsahuje funkce, které lze použít na úrovni zařízení (konfigurace hodin, inicializace modulu USB atd.…) A na úrovni třídy (odesílání-přijímání paketů, odesílání deskriptorů atd.…).
Pro lepší pochopení nahlédněte do uživatelské příručky Freescale USB Stack with PHDC Stack User Guide a Freescale USB Stack with PHDC Device API Reference Manual.
Software je v zásadě rozdělen do tří hlavních částí: Inicializace systému, Inicializace aplikace a Spuštění aplikace.
Konečná aplikace se provádí v nekonečné smyčce, jak ukazuje následující vývojový diagram (obrázek 1).
Obrázek 1. Vývojový diagram softwarového modelu
Pro lepší pochopení této kapitoly se důrazně doporučuje otevřít projekt MED-SPO2 PDHC C a view jak čtete tyto řádky.
Inicializace systému
Inicializace systému se provede, když je na začátku programu volána funkce Init_Sys. Init_Sys je funkce na úrovni zařízení a liší se podle mikrokontroléru. Inicializuje požadované periferie na mikrokontroléru pro funkčnost zásobníku. Init_Sys nejprve povolí přerušení na USB modulu konfigurující registry NVICICER2 a NVICISER2. Poté povolí moduly GPIO požadované mikrokontrolérem, který volá funkci GPIO_Init. Init_Sys nyní volá funkci pll_init, která konfiguruje mikrokontrolér pro práci na 50MHz pomocí externího zdroje hodin. Jakmile jsou hodiny mikrokontroléru nakonfigurovány, registr MPU_CESR je vymazán a mikrokontrolér je nakonfigurován tak, aby napájel a přivedl hodinový signál do modulu USB pro budoucí výčet.
Inicializace aplikace
Inicializace aplikace konfiguruje dříve inicializované moduly pro použití aplikace pulzní oxymetrie PHDC. Tato konfigurace začíná, když je volána funkce TestApp_Init. TestApp_Init nejprve volá funkci PHD_Transport_Init. Tato funkce spravuje výčet USB modulu mikrokontroléru jako PHDC povolením Pull-Up rezistorů a zpracováním procesu výčtu. PHD_Transport_Init vrací chybovou hodnotu. Pokud je vrácena chyba „OK“, znamená to, že zařízení již bylo vyčísleno jako PHD (Personal Healthcare Device), jinak se během výčtu něco pokazilo a hostitelské PC nemusí zařízení rozpoznat. V tomto okamžiku je zařízení rozpoznáno hostitelem jako PHD, ale ještě není definováno jako zařízení pulzního oxymetru používající standard ISO / IEEE 11073-20601.
Po výčtu jsou integrované LED diody a tlačítka TWR-K53N512 nakonfigurovány pro budoucí použití. Funkce SwTimer_Init je volána pro inicializaci softwarového časovače. Další informace o softwarovém časovači naleznete v poznámce k aplikaci „Základy a design pulzního oxymetru AN4327“: Dodatek A Softwarový časovač.
Poslední volaná funkce je vfnSpO2_AFE_Init. Tato funkce inicializuje požadované periferie (opAmps, TRIAMPs, ADC a časovače) požadované deskou MED-SPO2.
Spuštění aplikace
Jakmile jsou periferní zařízení nakonfigurována, je navázáno spojení mezi hostitelským počítačem a zařízením. Hostitelský počítač rozpozná zařízení jako PHD, ale zatím není plně funkční. K výměně informací standardizovaným a spolehlivým způsobem je vyžadován komunikační protokol mezi hostitelským počítačem a zařízením.
Existuje několik komunikačních protokolů, včetně některých protokolů specifických pro dodavatele. Inženýrství nicméně sází na standardizované protokoly, které zajišťují stejnou interoperabilitu mezi zdravotnickými prostředky.
Continua Health Alliance® je organizace, která podporuje zvýšenou interoperabilitu zdravotnických prostředků. Implementace tohoto dema je založena na standardu Continua® pro komunikaci zdravotních dat mezi hostitelským PC a zařízením, který jako základ používá standard ISO / IEEE 11073-20601 „Komunikace zařízení osobního zdraví: Optimalizovaný výměnný protokol“.
Níže je uvedeno krátké vysvětlení komunikačního protokolu 11073-20601. Úplné vysvětlení komunikačního protokolu najdete v normě ISO / IEEE 11073-20601.
Komunikační proces ISO / IEEE 11073-20601
Standard 11073-20601 definuje komunikační protokol mezi zdravotnickými zařízeními nebo „agenty“ a hostiteli nebo „manažery“.
Agenta lze definovat jako sadu objektů zvaných MDS (Medical Device System). Každý MDS popisuje chování látky (např. Pulzní oxymetr nebo tlakoměr). Každý agent může obsahovat jeden nebo více z těchto objektů MDS.
Stejným způsobem obsahuje každý objekt MDS dílčí objekty, které definují jeho chování (např. Měření k hlášení). Všechny tyto informace musí být nahlášeny manažerovi, aby mohl řídit chování agenta. Přesto však musí být najednou hlášen pouze jeden objekt MDS (např. Agent nemůže být současně pulzním oxymetrem a monitorem krevního tlaku).
Následující diagram představuje Agenta, který může být pulzním oxymetrem a monitorem krevního tlaku).
Obrázek 2. Reprezentace agenta
V případě této ukázky obsahuje Agent pouze jeden objekt MDS odpovídající aplikaci pulzního oxymetru. Podrobnější informace o zastoupení Agenta najdete v dokumentu ISO / IEEE 11073-20601: 2010, v kapitole 6, Osobní zdravotní zařízení DIM.
Standard IEEE definuje stavový stroj pro agenty a další stavový stroj pro manažery. Protože naše ukázková aplikace je zařízení, vysvětlíme pouze stavový stroj Agenta. Následující diagram je zjednodušené znázornění stavového stroje zobrazené v kapitole 8, obrázek 10 normy ISO / IEEE 11073-20601: 2010.
Obrázek 3. Stavový stroj agenta
Na začátku je Agent odpojen od Správce. K navázání komunikace musí být agent připojen ke správci. Když bylo navázáno připojení (v našem případě, když bylo zařízení USB vyjmenováno jako zařízení PHDC), Agent projde do stavu připojení.
Po připojení je Agent zpočátku ve stavu „Nepřidružený“. Agent musí zahájit komunikaci „Žádost o přidružení“. Žádost o přidružení se odesílá jako APDU (datová jednotka aplikačního protokolu), datový paket obsahující požadované informace pro spuštění přidružení a musí odpovídat objektu MDS, který se má přidružit. APDU žádosti o přidružení musí vypadat následovně.
/ * žádost o přidružení k odeslání * /
uint_8 USB_CONST PHD_OXI_ASSOC_REQ [ASSOC_REQ_SIZE] = {
0xE2, 0x00, / * Typ APDU CHOICE (AarqApdu) * /
0x00, 0x32, / * CHOICE.length = 50 * /
0x80, 0x00, 0x00, 0x00, / * assoc-verze * /
0x00, 0x01, 0x00, 0x2A, / * data-proto-list.count = 1 | délka = 42 * /
0x50, 0x79, / * data-proto-id = 20601 * /
0x00, 0x26, / * délka datového protokolu proto = 38 * /
0x80, 0x00, 0x00, 0x00, / * ProtocolVersion * /
Pravidla kódování 0x80, 0x00, / * = MDER nebo PER * /
0x80, 0x00, 0x00, 0x00, / * verze nomenklatury * /
0x00, 0x00, 0x00, 0x00, / * funkční jednotky | žádné možnosti asociace testů * /
0x00, 0x80, 0x00, 0x00, / * systemType = agent typu sys * /
0x00, 0x08, / * délka ID systému = 8 a hodnota, (specifické pro výrobce a zařízení) * /
0x4C, 0x4E, 0x49, 0x41, 0x47, 0x45, 0x4E, 0x54, 0x40, 0x00, / * dev-config-id | rozšířená konfigurace * /
0x00, 0x01, / * příznaky režimu datového požadavku
0x00, 0x01 * / 0x01, 0x00, / * počet datových žádostí-init-agentů, počet datových žádostí-init-správců * /
0x00, 0x00, 0x00, 0x00 / * Seznam atributů * /};
Když Agent odešle žádost o přidružení, přejde do stavu „Přidružení“ a čeká na odpověď od Správce. Manažer zpracuje žádost o přidružení a odešle odpověď přidružení podle přijatého APDU. Pokud APDU odpovídá již známému MDS, Správce odešle odpověď „Přijato“, což znamená, že konfigurace je již známá, a poté musí Agent přejít do provozního stavu. Pokud je žádost o přidružení přijata, ale Správce nerozpozná MDS, odešle zpět odpověď přidružení „přijata-neznámá-konfigurace“ a požádá Agenta o konfiguraci MDS. Pokud je žádost o přidružení zamítnuta, Agent musí přejít do stavu nepřidruženého a zkusit to znovu. Odpověď manažera na přidružení vypadá takto.
0xE3 0x00 APDU CHOICE Typ (AareApdu) 0x00 0x2C CHOICE.length = 44
0x00 0x03 výsledek = přijata-neznámá-konfigurace
0x50 0x79 data-proto-id = 20601
0x00 0x26 délka datových protokolů = 38
0x80 0x00 0x00 0x00 ProtocolVersion
0x80 0x00 pravidla kódování = MDER
0x80 0x00 0x00 0x00 nomenklatura Verze
0x00 0x00 0x00 0x00 funkční jednotky
0x80 0x00 0x00 0x00 systemType = správce sys-type
0x00 0x08 délka ID systému = 8 a hodnota
0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x00 0x00 odpověď manažera na config-id je vždy 0
0x00 0x00 0x00 0x00 odpověď manažera na data-req-mode-capab je vždy 0
0x00 0x00 0x00 0x00 optionList.count = 0 | optionList.length = 0
Pokud Agent obdrží přijatou nebo přijatou odpověď asociační odpovědi, musí agent přejít do stavu „Přidružený“. V tomto případě Správce přijal žádost o přidružení, ale nerozpoznal MDS vracející odpověď přidružení přijatá-neznámá-konfigurace. V důsledku toho musí Agent odeslat konfigurační zprávu, jako je následující.
/ * hlášení o konfigurační události * /
uint_8 USB_CONST PHD_OXI_CNFG_EVT_RPT [PHD_OXI_CNFG_EVT_RPT_SIZE] = {
0xE7, 0x00, / * Typ APDU CHOICE (PrstApdu) * /
0x00, 0x70, / * CHOICE.length = 112 * /
0x00, 0x6E, / * OCTET STRING. Délka = 110 * /
0x00, 0x02, / * invoke-id (odlišuje to od ostatních nevyřízených zpráv) * /
0x01, 0x01, / * VOLBA (Vyvolání dálkového ovládání | Potvrzená zpráva o události) * /
0x00, 0x68, / * CHOICE.length = 104 * /
0x00, 0x00, / * obj-handle = 0 (objekt MDS) * / 0xFF, 0xFF, 0xFF, 0xFF, / * čas události = 0xFFFFFFFF * /
0x0D, 0x1C, / * typ události = MDC_NOTI_CONFIG * /
0x00, 0x5E, / * event-info.length = 94 (začátek ConfigReport) * /
0x40, 0x00, / * config-report-id * /
0x00, 0x02, / * config-obj-list.count = 2 Objekty měření budou „oznámeny“ * /
0x00, 0x58, / * config-obj-list.length = 88 * /
0x00, 0x06, / * obj-class = MDC_MOC_VMO_METRIC_NU * /
0x00, 0x01, / * obj-handle = 1 (.. 1. měření je SpO2) * /
0x00, 0x04, / * attributes.count = 4 * /
0x00, 0x24, / * attributes.length = 36 * / 0x09, 0x2F, / * attribute-id = MDC_ATTR_ID_TYPE * /
0x00, 0x04, / * atribut-hodnota. Délka = 4 * /
0x00, 0x02, 0x4B, 0xB8, / * MDC_PART_SCADA | MDC_PULS_OXIM_SAT_O2 * /
0x0A, 0x46, / * atribut-id = MDC_ATTR_METRIC_SPEC_SMALL * /
0x00, 0x02, / * atribut-hodnota. Délka = 2 * /
0x40, 0xC0, / * avail-stored-data, acc-manager-init, acc-agent- init, měřeno * /
0x09, 0x96, / * atribut-id = MDC_ATTR_UNIT_CODE * /
0x00, 0x02, / * atribut-hodnota. Délka = 2 * /
0x02, 0x20, / * MDC_DIM_PERCENT * / 0x0A, 0x55, / * atribut-id = MDC_ATTR_ATTRIBUTE_VAL_MAP * /
0x00, 0x0C, / * hodnota atributu. Délka = 12 * /
0x00, 0x02, / * AttrValMap.count = 2 * /
0x00, 0x08, / * AttrValMap.length = 8 * /
0x0A, 0x4C, 0x00, 0x02, / * MDC_ATTR_NU_VAL_OBS_BASIC | hodnota délka = 2 * /
0x09, 0x90, 0x00, 0x08, /* MDC_ATTR_TIME_STAMP_ABS | délka hodnoty = 8 */
0x00, 0x06, / * obj-class = MDC_MOC_VMO_METRIC_NU * /
0x00, 0x02, / * obj-handle = 2 (. 2. měření je tepová frekvence) * /
0x00, 0x04, / * attributes.count = 4 * /
0x00, 0x24, / * atributy. Délka = 36 * /
0x09, 0x2F, / * atribut-id = MDC_ATTR_ID_TYPE * /
0x00, 0x04, / * atribut-hodnota. Délka = 4 * /
0x00, 0x02, 0x48, 0x1A, / * MDC_PART_SCADA | MDC_PULS_OXIM_PULS_RATE * /
0x0A, 0x46, / * atribut-id = MDC_ATTR_METRIC_SPEC_SMALL * / 0x00, 0x02, / * hodnota atributu. Délka = 2 * /
0x40, 0xC0, / * avail-stored-data, acc-manager-init, acc-agent- init, měřeno * / 0x09, 0x96, / * atribut-id = MDC_ATTR_UNIT_CODE * / 0x00, 0x02, / * hodnota atributu. length = 2 * / 0x0A, 0xA0, / * MDC_DIM_BEAT_PER_MIN * / 0x0A, 0x55, / * attribute-id = MDC_ATTR_ATTRIBUTE_VAL_MAP * / 0x00, 0x0C, / * attribute-value.length = 12 * / 0x00, 0x02, / * At počet = 2 * /
0x00, 0x08, / * AttrValMap.length = 8 * /
0x0A, 0x4C, 0x00, 0x02, /* MDC_ATTR_NU_VAL_OBS_BASIC, 2* /0x09, 0x90, 0x00, 0x08 /* MDC_ATTR_TIME_STAMP_ABS, 8 */};
Tato zpráva o konfiguraci odpovídá zařízení pulzního oxymetru. Agent zde označuje, že odešle dva číselné objekty (všechny možné objekty jsou popsány v dokumentu ISO / IEEE 11073-20601: 2010 v kapitole 6: Osobní zdravotní zařízení DIM). První numerický objekt odpovídá měření saturace kyslíkem (SpO2). Druhý číselný objekt odpovídá měření tepové frekvence.
Po odeslání zprávy o konfiguraci musí manažer odpovědět a uvést, zda lze nahlášenou konfiguraci použít nebo ne. Pokud lze nahlášenou konfiguraci použít, musí Agent přejít do provozního stavu. Pokud nahlášená konfigurace není správcem podporována, musí Agent zkusit znovu použít jinou konfiguraci, kterou Správce podporuje. Odpověď manažera bude vypadat následovně.
0xE7 0x00 APDU CHOICE Typ (PrstApdu)
0x00 0x16 VÝBĚR. Délka = 22
0x00 0x14 OCTET STRING. Délka = 20
0x43 0x21 invoke-id = 0x4321 (začátek kódování DataApdu. MDER.)
0x02 0x01 CHOICE (vzdálená reakce na provoz | potvrzená zpráva o události)
0x00 0x0E VOLBA.délka = 14
0x00 0x00 obj-handle = 0 (objekt MDS)
0x00 0x00 0x00 0x00 aktuální čas = 0
0x0D 0x1Cevent-type = MDC_NOTI_CONFIG
0x00 0x04 event-response-info.length = 4
0x40 0x00 ConfigReportRsp.config-report-id = 0x4000 0x00 0x00 ConfigReportRsp.config-result = přijímaná konfigurace
V tomto případě správce oznámil, že konfigurace byla přijata a Agent musí přejít do provozního stavu.
Jak již bylo zmíněno dříve, pokud agent obdrží buď přijatou nebo přijatou odpověď přidružení neznámé konfigurace, musí agent přejít do přidruženého stavu. Jakmile je správce v přidruženém stavu, může kdykoli použít službu „Získat“ k vyžádání atributů MDS. Atributy MDS obsahují informace o objektu MDS, jako je typ zařízení (napřample, glukometr, teploměr, monitor krevního tlaku a další), název společnosti a model zařízení.
Žádost o získání všech atributů MDS vypadá následovně.
0xE7 0x00 APDU CHOICE Typ (PrstApdu)
0x00 0x0E VOLBA.délka = 14
0x00 0x0C OCTET STRING. Délka = 12
0x34 0x56 invoke-id = 0x3456 (začátek kódování DataApdu. MDER.)
0x01 0x03 CHOICE (Vyvolání dálkového ovládání | Získat) 0x00 0x06 CHOICE.length = 6
0x00 0x00 handle = 0 (objekt MDS)
0x00 0x00 atribut-id-list.count = 0 (všechny atributy)
0x00 0x00 atribut-id-list.length = 0
Pokud je přijat požadavek na získání všech atributů MDS, Agent musí odpovědět svými atributy. Po example ukazuje odpověď příkazu Získat atributy, který Agent odešle Správci.
/ * odpověď na získání atributů příkaz * /
uint_8 USB_CONST PHD_OXI_DIM_GET_RSP [PHD_OXI_DIM_GET_RSP_SIZE] = {
0xE7, 0x00, / * Typ APDU CHOICE (PrstApdu) * / 0x00, 0x6F, / * CHOICE.length = 111 * / 0x00, 0x6D, / * OCTET STRING.length = 109 * /
0x00, 0x02, / * invoke-id = 0x0002 (zrcadlené z požadavku) * /
0x02, 0x03, / * CHOICE (vzdálená reakce na operaci | získat) * /
0x00, 0x67, / * CHOICE.length = 103 * /
0x00, 0x00, / * handle = 0 (objekt MDS) * /
0x00, 0x06, / * atribut-list.count = 6 * /
0x00, 0x61, / * seznam atributů. Délka = 97 * /
0x0A, 0x5A, / * id atributu = MDC_ATTR_SYS_TYPE_SPEC_LIST * /
0x00, 0x08, / * atribut-hodnota. Délka = 8 * /
0x00, 0x01, / * počet TypeVerList = 1 * /
0x00, 0x04, / * Délka TypeVerList = 4 * /
0x10, 0x04, /* typ = MDC_DEV_SPEC_PROFILE_PULS_OXIM */
0x00, 0x01, / * verze = verze 1 specializace * /
0x09, 0x28, / * atribut-id = MDC_ATTR_ID_MODEL * /
0x00, 0x1B, / * atribut-hodnota. Délka = 27 * /
0x00, 0x0A, 0x46, 0x72, / * délka řetězce = 10 | Freescale (mezera) * /
0x65, 0x65, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x00, 0x0D, 'M', 'E', / * délka řetězce = 13 | MED-SPO2 PHDC * /
Atribut 'D', '-', 'S', 'P', 'O', '2', '', 'P', 'H', 'D', 'C', 0x09, 0x84, / * -id = MDC_ATTR_SYS_ID * /
0x00, 0x0A, / * hodnota atributu. Délka = 10 * /
0x00, 0x08, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, / * délka řetězce oktetu = 8 | EUI-64 * /
0x0a, 0x44, / * atribut-id = MDC_ATTR_DEV_CONFIG_ID * /
0x00, 0x02, / * atribut-hodnota. Délka = 2 * /
0x40, 0x04, / * dev-config-id = 16384 (extended-config-start) * /
0x09, 0x2D, / * atribut-id = MDC_ATTR_ID_PROD_SPECN * /
0x00, 0x12, / * atribut-hodnota. Délka = 18 * /
0x00, 0x01, / * ProductionSpec.count = 1 * /
0x00, 0x0E, / * ProductionSpec.length = 14 * /
0x00, 0x01, / * ProdSpecEntry.spec-type = 1 (sériové číslo) * /
0x00, 0x00, / * ProdSpecEntry.component-id = 0 * /
0x00, 0x08, 0x44, 0x45, / * délka řetězce = 8 | prodSpecEntry.prod-spec = DE124567 * /
0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x09, 0x87, / * attribute-id = MDC_ATTR_TIME_ABS * /
0x00, 0x08, / * atribut-hodnota. Délka = 8 * /
0x20, 0x09, 0x06, 0x12, /* Absolute-Time-Stamp=2009-06-12T12:05:0000*/
0x12, 0x05, 0x00, 0x00};
V tomto exampAgent popisuje, že je to MDS jako pulzní oxymetr, název společnosti je „Freescale“ a model zařízení „MED-SPO2 PHDC“.
Jakmile je agent v provozním stavu, může začít hlásit měření manažerovi. Měření je nutné odesílat pomocí pevných protokolů. Tyto zprávy musí obsahovat měření organizovaná podle dříve odeslané zprávy o konfiguraci MDS. Za exampv naší konfigurační zprávě agent naznačil manažerovi, že pošle dvě numerická měření, hodnotu SpO2 a hodnotu tepové frekvence. Výsledek našeho objektu MDS je následující:
Obrázek 4. Zastoupení agenta MED-SPO2
/ * měření k odeslání * /
uint_8 USB_CONST PHD_OXI_DIM_DATA_TX [PHD_OXI_DIM_DATA_TX_SIZE] = {
0xE7, 0x00, / * Typ APDU CHOICE (PrstApdu) * /
0x00, 0x36, / * CHOICE.length = 54 * /
0x00, 0x34, / * OCTET STRING. Délka = 52 * /
0x12, 0x36, / * invoke-id = 0x1236 * /
0x01, 0x01, / * VOLBA (Vyvolání dálkového ovládání | Potvrzená zpráva o události) * /
0x00, 0x2E, / * CHOICE.length = 46 * /
0x00, 0x00, / * obj-handle = 0 (objekt MDS) * /
0x00, 0x00, 0x00, 0x00, / * čas události = 0 * /
0x0D, 0x1D, / * typ události = MDC_NOTI_SCAN_REPORT_FIXED * /
0x00, 0x24, / * délka-události-události = 36 * /
0xF0, 0x00, /*ScanReportInfoFixed.data-req-id =
0xF000 * / 0x00, 0x00, /*ScanReportInfoFixed.scan-report-no = 0 * /
0x00, 0x02, / * ScanReportInfoFixed.obs-scan-fixed.count = 2 * /
0x00, 0x1C, /*ScanReportInfoFixed.obs-scan-fixed.length = 28 * /
0x00, 0x01, /*ScanReportInfoFixed.obs-scan-fixed.value[0].obj-handle = 1 * /
0x00, 0x0A, /*ScanReportInfoFixed.obs-scan-fixed.value[0]. obs-val-data.length = 10 * /
0x00, 0x61, / * Simple-Nu-Observed-Value = 97% SpO2 * /
0x20, 0x0B, 0x09, 0x23, /*Absolute-Time-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00, 0x00, 0x02, / * ScanReportInfoFixed.obs-scan-fixed.value [1] .obj-handle = 2 * /
0x00, 0x0A, / * ScanReportInfoFixed.obs-scan-fixed.value [1]. obs-val-data.length = 10 * /
0x00, 0x4E, / * Simple-Nu-Observed-Value = 78 BPM * /
0x20, 0x0B, 0x09, 0x23, /*Absolute-Time-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00};
V tomto APDU agent hlásil dva číselné objekty, 97 a 78. 97 je identifikován jako popisovač objektu 1, takže manažer může vědět, že toto měření odpovídá SpO2. Totéž s 78, který byl hlášen jako rukojeť objektu 2, takže manažer ví, že toto měření odpovídá tepové frekvenci. Čas svamp pro každé z měření bylo také odesláno, jak je definováno v konfigurační zprávě MDS.
Provádění aplikací v mikrokontroléru
Spuštění aplikace v mikrokontroléru začíná, když je volána funkce TestApp_Task. Tato funkce se provádí v nekonečné smyčce a neustále kontroluje stav stavového stroje Agenta.
Funkce TestApp_Task obsahuje malý stavový automat, který zpracovává stav aplikace. V prvním případě, pokud je zařízení úspěšně vyjmenováno jako PHD, je proměnná „event“ APP_PHD_INITIALIZED. Zařízení nejprve spustí časovač a poskytne uživateli čas na výběr objektu MDS, který chce pro přidružení v případě, že Agent má více než jeden objekt MDS. Poté, co časovač dokončí svůj počet, je proměnná „událost“ APP_PHD_SELECT_TIMER_OFF. V tomto případě
příkazu je volána funkce PHD_Connect_To_Manager. Tato funkce odešle požadavek na přidružení definovaný v file phd_device_spec.c a spustí proces přidružení popsaný dříve. Veškerý proces přidružení je zpracováván automaticky s funkcemi na file phd_com_model.c a trvá to všechny požadované APDU dříve definované v souboru file phd_device_spec.c k dokončení přidružení. To vývojářům pomáhá soustředit se na svou aplikaci a zapomenout na veškerou logistiku související s komunikací PHD.
Funkce SpO2_PeriodicTask je pravidelně volána do funkce TestApp_Task. Tato funkce zpracovává samotný pulzní oxymetr. Řídí potřebné periferie pro manipulaci s deskami MED-SPO2 a získává měření SpO2 a tepové frekvence. Více informací o chování této funkce najdete v poznámce k aplikaci AN4327 Pulse Oximeter Fundamentals and Design. Následující diagram představuje funkci TestApp_Task.
Obrázek 5. Vývojový diagram TestApp_Task
Během provádění periodické úlohy SpO2 se měření SpO2 a tepové frekvence neustále aktualizují. Při inicializaci aplikace SpO2 byl vytvořen časovač jedné sekundy. Tento časovač se aktivuje při každém dosažení počtu a restartuje se na další jednu sekundu. Když je tento časovač aktivován, provede funkci Send_PHDC_Measurements. Tato funkce počítá počet uplynulých sekund a když zjistí, že počet uplynulých sekund je stejný jako v SPO2_PHDC_UPDATE_PERIOD, zavolá funkci PHD_Send_Measurements_to_Manager.
Funkce PHD_Send_Measurements_to_Manager aktualizuje pevnou sestavu měření definovanou v file phd_devicespec.c s nejnovějšími měřeními provedenými funkcí periodické úlohy SpO2. Každých 10 sekund se odešle nová sada měření a absolutní čas Stamp se zvýší za jednu minutu. Manažer poté provede měření a zobrazí je ve svém GUI.
Spuštění ukázky
Následující pokyny vás provedou sestavením, stažením softwaru a spuštěním ukázky.
Hardwarová sada
K sestavení dema budete potřebovat následující části.
Obrázek 6. Požadovaný název
Deska TWR-K52N512 a deska TWR-SER vyžadují ke změně původní konfiguraci propojky, aby fungovaly. Ujistěte se, že konfigurace propojek těchto desek je stejná jako konfigurace uvedená níže.
Tabulka 1. Konfigurace propojky TWR-SER
Skokan |
Pozice |
J10 | 1-2 |
J16 | 3-4 |
J2 | 1-2 |
Tabulka 2. Konfigurace propojky TWR-K53N512
Skokan |
Pozice |
J1 | OTEVŘENO |
J3 | OTEVŘENO |
J4 | 2-3 |
J5 | OTEVŘENO |
J6 | Připojeno |
J7 | Připojeno |
J11 | 1-2 |
J12 | OTEVŘENO |
J14 | OTEVŘENO |
J15 | Připojeno |
J16 | 1-2 |
J17 | Připojeno |
J18 | Připojeno |
J20 | OTEVŘENO |
J21 | Připojeno |
J22 | OTEVŘENO |
J24 | 1-2 |
J25 | OTEVŘENO |
J26 | OTEVŘENO |
J28 | OTEVŘENO |
J29 | Připojeno |
J32 | 1-2 |
J33 | 1-2 |
J34 | OTEVŘENO |
Sestavení dema
Následující kroky vás provedou sestavením ukázky.
1. Vezměte desku TWR-K53N512 a desku primárního výtahu. Připojte stranu desky TWR-K53N512 označenou jako „Primární“ k jednomu ze slotů na desce Primární výtah.
Obrázek 7. Sestavení TWR-K53N512
2. Nyní vezměte desku TWR-SER. Připojte stranu TWR-SER označenou jako primární k jednomu ze slotů na desce primárního výtahu.
Obrázek 8. Sestavení TWR-SER
3. Vezměte desku sekundárního výtahu. Připojte stranu desek TWR-SER a TWR-K53N512 označenou jako „Sekundární“ k příslušnému slotu na desce Sekundární výtah.
Obrázek 9. Montáž sekundárního výtahu
4. Vezměte desku MED-SPO2. Připojte kolíky na desce MED-SPO2 k lékařskému konektoru na desce TWR-K53N512. Výčet pinů na desce MED-SPO2 musí být zrcadlen s výčtem pinů na desce TWR-K53N512 (viz obrázek níže).
Obrázek 10. Umístění analogového předního konce
5. Připojte snímač pulzního oxymetru ke konektoru DB9 na desce MED-SPO2.
Obrázek 11. Umístění senzoru pulzního oxymetru
Provedení ukázky
1. Stáhněte a nainstalujte HealthLink®. Najdete ji na LampRey Networks web strana www.lnihealth.com.
Obrázek 12. Zdraví LNI web strana
2. Připojte kabel A k mini B USB z počítače do USB portu TWR-SER.
Obrázek 13. Připojení USB k TWR-SER
3. Pokud se zobrazí okno s požadavkem na ovladače USB PHDC, vyberte možnost „Instalovat ovladače automaticky“. Ovladače se zkopírují do systémové složky během instalace programu HealthLink®.
Obrázek 14. Instalace ovladačů PHDC
4. Spusťte program HealthLink®. Pokud program používáte poprvé, požádá vás o vytvoření účtu. Vytvořte uživatelský účet výběrem svého poskytovatele zdravotních dat (tj. Google Health, Microsoft HealthVault atd.) Pokud nemáte poskytovatele zdravotních dat, můžete použít možnost „Uložit na disk“.
Obrázek 15. Vytvoření účtu
5. Umístěte snímač pulzního oxymetru na ukazováček, jak je znázorněno na obrázku níže.
Obrázek 16. Umístění snímače prstu
6. Když je účet aktivní, program HealthLink® rozpozná věžový systém jako zařízení pulzního oxymetru. Měření budou odesílána každých deset sekund.
Obrázek 17. Demo běh
Reference
• Vývoj pulzního oxymetru je založen na aplikační poznámce „AN4327 Pulse Oximeter Fundamentals and Design“
• Software je založen na USB Stack s PHDC 3.0, který najdete na Freescale web stránka https: //www.freescale.com.
• Komunikační protokol je založen na standardu ISO / IEEE 11073-20601 Personal Health Device Communications: Optimized Exchange Protocols
• Implementace komunikačního protokolu pulzního oxymetru PHD byla vyvinuta odpovídajícím způsobem s komunikací zařízení osobního zdraví IEEE 11073-10404: Specializace zařízení - pulzní oxymetr
• Tento software byl vyvinut pomocí IAR 6.3. Lze jej stáhnout z IAR web strana https://www.iar.com
• GUI použité při vývoji této ukázky je GUI HealthLink® od Lamprey Networks a lze jej stáhnout z LNI web strana https://www.lnihealth.com
Závěry
Třída zařízení osobní zdravotní péče umožňuje stejnou interoperabilitu mezi přenosnými zdravotnickými prostředky. Freescale nabízí řešení konektivity, která pomáhají vývojářům při vytváření zařízení schopných komunikovat se standardy, jako je IEEE 11073-20601, což z nich dělá lepší volbu na trhu.
Jak se k nám dostanete:
Domovská stránka: www.freescale.com
Web Podpora: http://www.freescale.com/support
USA / Evropa nebo místa, která nejsou uvedena:
Freescale Semiconductor
Technické informační centrum, EL516 2100
East Elliot Road
Tempe, Arizona 85284 +1-800-521-6274 nebo +1-480-768-2130
www.freescale.com/support
Evropa, Střední východ a Afrika:
Freescale Halbleiter Deutschland GmbH
Technické informační centrum
Oblouk pokladů 7
81829 Muenchen, Německo
+44 1296 380 456 (anglicky)
+46 8 52200080 (anglicky)
+49 89 92103 559 (německy)
+33 1 69 35 48 48 (francouzsky)
www.freescale.com/support
Japonsko:
Společnost Freescale Semiconductor Japan Ltd.
Velitelství
ARCO Tower 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokio 153-0064
Japonsko
0120 191014 nebo +81 3 5437 9125 s
upport.japan@freescale.com
Asie / Tichomoří:
Společnost Freescale Semiconductor China Ltd.
Budova burzy 23F
Č. 118 Jianguo Road
Okres Chaoyang
Peking 100022
Čína
+86 10 5879 8000
support.asia@freescale.com
Informace v tomto dokumentu jsou poskytovány pouze proto, aby umožnily systémovým a softwarovým implementátorům používat produkty Freescale Semiconductors. Níže nejsou poskytovány žádné výslovné ani předpokládané licence na autorská práva k navrhování nebo výrobě integrovaných obvodů nebo integrovaných obvodů na základě informací v tomto dokumentu.
Freescale Semiconductor si vyhrazuje právo provádět změny jakýchkoli zde uvedených produktů bez dalšího upozornění. Freescale Semiconductor neposkytuje žádnou záruku, prohlášení ani záruku týkající se vhodnosti svých produktů pro konkrétní účel, ani Freescale Semiconductor nepřebírá žádnou odpovědnost vyplývající z aplikace nebo použití jakéhokoli produktu nebo obvodu a konkrétně se zříká jakékoli odpovědnosti, mimo jiné bez omezení následné nebo náhodné škody. „Typické“ parametry, které mohou být uvedeny v datových listech a / nebo specifikacích Freescale Semiconductor, se mohou a mohou lišit v různých aplikacích a skutečný výkon se může časem lišit. Všechny provozní parametry, včetně „Typických“, musí být pro každou zákaznickou aplikaci ověřeny technickými odborníky zákazníka. Freescale Semiconductor neposkytuje žádnou licenci na základě svých patentových práv ani práv ostatních. Produkty Freescale Semiconductor nejsou navrženy, zamýšleny ani povoleny k použití jako komponenty v systémech určených pro chirurgický implantát do těla nebo k jiným aplikacím určeným k podpoře nebo udržení života nebo k jakýmkoli jiným aplikacím, při kterých by mohlo dojít k selhání produktu Freescale Semiconductor. situace, kdy může dojít ke zranění nebo smrti. Pokud kupující zakoupí nebo použije produkty Freescale Semiconductor pro jakoukoli takovou nezamýšlenou nebo neoprávněnou aplikaci, odškodní společnost Freescale Semiconductor a její vedoucí, zaměstnance, dceřiné společnosti, přidružené společnosti a distributory za neškodnost vůči jakýmkoli nárokům, nákladům, škodám a výdajům a přiměřeným poplatkům za právní zastoupení přímo či nepřímo z jakéhokoli tvrzení o úrazu nebo smrti spojeném s takovým nezamýšleným nebo neoprávněným použitím, i když takové tvrzení tvrdí, že společnost Freescale Semiconductor byla nedbalou, pokud jde o konstrukci nebo výrobu součásti.
Verze produktů Freescale vyhovující směrnici RoHS a / nebo bez Pb mají funkčnost a elektrické vlastnosti jako jejich protějšky, které nespadají pod RoHS a / nebo neobsahují Pb.
Další informace viz http://www.freescale.com nebo se obraťte na svého obchodního zástupce Freescale.
Informace o programu Environmental Products společnosti Freescale najdete na http://www.freescale.com/epp.
Freescale ™ a logo Freescale jsou ochranné známky společnosti Freescale Semiconductor, Inc.
Všechny ostatní názvy produktů nebo služeb jsou majetkem příslušných vlastníků.
© 2012 Freescale Semiconductor, Inc.
Pulzní oxymetr NXP pomocí USB PHDC Uživatelská příručka - Stáhnout [optimalizováno]
Pulzní oxymetr NXP pomocí USB PHDC Uživatelská příručka - Stáhnout