Vabakaaluline pooljuht
Rakendusmärkus
Dokumendi number: AN4496
Rev. 0, 03
Impulssoksümeeter USB PHDC abil
autor: Jose Santiago Lopez Ramirez RTAC Américas
Sissejuhatus
Selles rakenduse märkuses selgitatakse pulsoksümeetri rakendamist, mis suhtleb arvutiga, kasutades USB isikliku tervishoiuseadme klassi. Rakendamine toimub Freescale MK53N512 Kinetis mikrokontrolleril, kuid seda saab rakendada mis tahes Freescale USB-toega mikrokontrolleril.
See rakenduse märkus on mõeldud meditsiiniliste lahenduste arendajatele, biomeditsiiniinseneridele või kõigile isikliku tervishoiuseadme USB-klassi huvitatud isikutele. Sellest hoolimata on vaja mõningaid oskusi C-programmeerimise ja mikrokontrollerite käsitsemise osas.
See rakenduse märkus on tihedalt seotud rakenduse märkusega „AN4327 pulsoksümeetri põhialused ja disain”. Parema mõistmise huvides on soovitatav lugeda AN4327.
Isikliku tervishoiu seadmete klass läbiview
Universal Serial Bus (USB) on standard, mis määratleb riistvara ja protokollid hosti (tavaliselt arvuti) ja ühe või mitme seadme vaheliseks suhtluseks. Igal USB -seadmel on oma otstarve ja seetõttu jagatakse need vastavalt funktsioonidele erinevatesse klassidesse. Üks eksample on inimliideseseadme (HID) klass, mida kasutatakse sellistes seadmetes nagu arvuti klaviatuurid ja hiir.
Impulssoksümeetri rakendamine
Isikliku tervishoiuseadmete klass (PHDC) määratleb nõuded personaalse USB-meditsiiniseadme ja USB-hosti vahelise suhtluse ja sujuva koostalitlusvõime loomiseks, mis seejärel töödeldakse, salvestatakse või edastatakse Interneti kaudu arstile või sugulasele.
USB PHDC-d kasutavad tervishoiuteenuste vahetusprotokollid nagu ISO / IEEE 11073-20601 hostimisvahendi ja isikliku tervishoiuseadme vaheliste sidepakettide transpordimeetodina. See standardiseerib viisi, kuidas andmeid ja sõnumeid USB kaudu edastatakse.
Impulssoksümeetri rakendamine
Impulssoksümeeter on kasutusel torni arendusplaadil Freescale TWR-K53N512, mis sisaldab meditsiinilise suunitlusega mikrokontrollerit MK53N512, MED-SPO2 analoogse esiotsa plaati impulssoksümeetriliste lahenduste väljatöötamiseks ja TWR-SER torni emaplaati, mis sisaldab jadakommunikatsiooni. See on sama riistvara, mida kasutatakse AN4327-s “Impulssoksümeetri põhialused ja disain”. Pulssoksümeetria põhimõtete ja impulssoksümeetri väljatöötamisel kasutatava riistvara kohta leiate lisateavet sellest rakenduse märkusest.
Süsteem põhineb Freescale USB -pinu koos PHDC -ga, mis on tasuta kood USB -ühendust vajavate lahenduste väljatöötamiseks ja mida saab alla laadida Freescale'ist web lehel. See virn sisaldab funktsioone, mida saab kasutada seadme tasemel (kellade seadistamine, USB-mooduli lähtestamine jne ...) ja klassi tasemel (saatmis-vastuvõtmispaketid, saatekirjeldused jne ...).
Parema mõistmise huvides lugege palun PHDC-korstnaga Freescale USB-virna ja PHDC-seadme API-ga seotud Freescale USB-virna.
Tarkvara jaguneb põhimõtteliselt kolmeks põhiosaks: süsteemi initsialiseerimine, rakenduse initsialiseerimine ja rakenduse käivitamine.
Lõplik rakendus viiakse läbi lõpmatu tsüklina, nagu on näidatud järgmises vooskeemis (joonis 1).
Joonis 1. Tarkvaramudeli vooskeem
Selle peatüki paremaks mõistmiseks on tungivalt soovitatav avada projekt MED-SPO2 PDHC C ja view seda neid ridu lugedes.
Süsteemi initsialiseerimine
Süsteemi initsialiseerimine toimub siis, kui programmi alguses kutsutakse funktsioon Init_Sys. Init_Sys on seadme taseme funktsioon ja varieerub mikrokontrolleri järgi. See lähtestab mikrokontrolleris vajalikud virnade funktsionaalsuse jaoks vajalikud välisseadmed. Esmalt võimaldab Init_Sys katkestused USB-moodulis, seadistades registrid NVICICER2 ja NVICISER2. Seejärel võimaldab see GPIO mooduleid, mida mikrokontroller nõuab funktsioonile GPIO_Init. Init_Sys kutsub nüüd funktsiooni pll_init, mis konfigureerib mikrokontrolleri töötamiseks sagedusel 50MHz, kasutades välist kella allikat. Kui mikrokontrolleri kell on konfigureeritud, kustutatakse register MPU_CESR ja mikrokontroller on konfigureeritud energiat andma ja viima kellasignaali USB-moodulisse edaspidiseks loendamiseks.
Rakenduse initsialiseerimine
Rakenduse lähtestamine konfigureerib varem initsialiseeritud moodulid pulsoksümeetria PHDC rakenduse kasutamiseks. See konfiguratsioon algab funktsiooni TestApp_Init kutsumisel. TestApp_Init kutsub kõigepealt funktsiooni PHD_Transport_Init. See funktsioon haldab mikrokontrolleri USB-mooduli kui PHDC loendamist, võimaldades Pull-Up takistid ja käsitledes loendamisprotsessi. PHD_Transport_Init tagastab vea väärtuse. Kui tagastatakse viga „OK”, tähendab see, et seade on juba loendatud PHD-ks (isiklik tervishoiuseade), vastasel juhul läks loendamise ajal midagi valesti ja hostarvuti ei pruugi seadet tuvastada. Siinkohal tunnustab host host seadet PHD-na, kuid seda pole veel määratletud kui pulsoksümeetriseadet, kasutades standardit ISO / IEEE 11073-20601.
Pärast loendamist on TWR-K53N512 sisseehitatud LED-id ja nupud konfigureeritud edaspidiseks kasutamiseks. Tarkvara taimeri lähtestamiseks kutsutakse funktsiooni SwTimer_Init. Lisateavet tarkvara taimeri kohta leiate rakenduse märkusest „AN4327 pulsoksümeetri põhialused ja disain”: Lisa A Tarkvara taimer.
Viimane funktsioon on vfnSpO2_AFE_Init. See funktsioon lähtestab vajalikud välisseadmed (opAmps, TRIAMPs, ADC-d ja taimerid), mida nõuab MED-SPO2 plaat.
Rakenduse täitmine
Kui välisseadmed on konfigureeritud, luuakse ühendus hostarvuti ja seadme vahel. Host PC tunneb seadet PHD-na, kuid see pole veel täielikult toimiv. Teabe standardiseeritud ja usaldusväärsel vahetamiseks on vajalik sideprotokoll vastuvõtva arvuti ja seadme vahel.
Olemas on mitu sideprotokolli, sealhulgas mõned hankepõhised protokollid. Sellegipoolest panustavad insenerid standardiseeritud protokollidele, mis tagavad meditsiiniseadmete sama koostalitlusvõime.
Continua Health Alliance® on organisatsioon, mis edendab meditsiiniseadmete paremat koostalitlusvõimet. Selle demo rakendamine põhineb Continua® standardil tervishoiuseadmete edastamiseks hostarvuti ja seadme vahel, mis kasutab aluseks standardit ISO / IEEE 11073-20601 „Isikliku tervishoiuseadme side: optimeeritud vahetusprotokoll”.
Allpool on toodud kommunikatsiooniprotokolli 11073-20601 lühike selgitus. Sideprotokolli täieliku selgituse leiate standardist ISO / IEEE 11073-20601.
ISO / IEEE 11073-20601 sideprotsess
Standard 11073-20601 määratleb meditsiiniseadmete või agentide ja hostide või haldurite vahelise sideprotokolli.
Agenti saab määratleda kui objektide kogumit, mida nimetatakse MDS-ks (meditsiiniseadmete süsteem). Iga MDS kirjeldab aine käitumist (nt pulsoksümeeter või vererõhuaparaat). Iga agent võib sisaldada ühte või mitut neist MDS-i objektidest.
Samamoodi sisaldab iga MDS-objekt alamobjekte, mis määratlevad tema käitumise (nt mõõtmiseks esitatavad andmed). Kogu see teave tuleb haldurile edastada, et see saaks agendi käitumist juhtida. Sellest hoolimata tuleb korraga teatada ainult ühest MDS-objektist (nt. Agent ei saa olla samaaegselt pulsoksümeeter ja vererõhuaparaat).
Järgmine diagramm kujutab ainet, mis võib olla pulsoksümeeter ja vererõhumõõtja).
Joonis 2. Agendi esindus
Selle demo korral sisaldab agent ainult ühte MDS-objekti, mis vastab impulssoksümeetri rakendusele. Üksikasjalikumat teavet esindaja esinduse kohta leiate dokumendi ISO / IEEE 11073-20601: 2010 6. peatükist „Isikliku tervise seade DIM”.
IEEE standard määratleb esindajate olekumasina ja juhtide jaoks teise olekumasina. Kuna meie demorakendus on seade, selgitame ainult agendi olekumasinat. Järgmine diagramm on olekumasina lihtsustatud esitus, mis on näidatud standardi ISO / IEEE 8-10: 11073 20601. peatüki joonisel 2010.
Joonis 3. Agendi olekumasin
Alguses on agent haldurist lahti ühendatud. Agent peab suhtluse loomiseks olema juhiga ühendatud. Kui ühendus on loodud (meie juhul, kui USB-seade on loetletud PHDC-seadmena), läheb agent olema ühendatud olekus.
Pärast ühenduse loomist on agent algselt „seoseta” olekus. Agent peab suhtluse alustamiseks saatma „assotsiatsioonitaotluse”. Assotsiatsioonitaotlus saadetakse APDU (rakendusprotokolli andmeüksus), andmepakett, mis sisaldab seostamise alustamiseks vajalikku teavet ja see peab vastama seostatavale MDS-objektile. Assotsiatsioonitaotlus APDU peab välja nägema järgmine.
/ * assotsiatsioonitaotlus saata * /
uint_8 USB_CONST PHD_OXI_ASSOC_REQ [ASSOC_REQ_SIZE] = {
0xE2, 0x00, / * APDU VALIKU tüüp (AarqApdu) * /
0x00, 0x32, / * VALIK. Pikkus = 50 * /
0x80, 0x00, 0x00, 0x00, / * assotsieerunud versioon * /
0x00, 0x01, 0x00, 0x2A, / * data-proto-list.count = 1 | pikkus = 42 * /
0x50, 0x79, / * data-proto-id = 20601 * /
0x00, 0x26, / * andmete proto-info pikkus = 38 * /
0x80, 0x00, 0x00, 0x00, / * protokolliversioon * /
0x80, 0x00, / * kodeerimisreeglid = MDER või PER * /
0x80, 0x00, 0x00, 0x00, / * nomenklatuurVersioon * /
0x00, 0x00, 0x00, 0x00, / * funktsionaalsedüksused | testimisühenduse võimalused puuduvad * /
0x00, 0x80, 0x00, 0x00, / * systemType = sys-type-agent * /
0x00, 0x08, / * süsteemi ID pikkus = 8 ja väärtus (tootja- ja seadmespetsiifiline) * /
0x4C, 0x4E, 0x49, 0x41, 0x47, 0x45, 0x4E, 0x54, 0x40, 0x00, / * dev-config-id | laiendatud konfiguratsioon * /
0x00, 0x01, / * data-req-mode-lipud
0x00, 0x01 * / 0x01, 0x00, / * data-req-init-agent-count, data-req-init-manager-count * /
0x00, 0x00, 0x00, 0x00 / * atribuutide loend * /};
Kui agent saadab assotsieerimistaotluse, läheb see olekusse „Assotsieerumine” ja ootab haldurilt vastust. Juht menetleb ühinemistaotlust ja saadab assotsiatsioonivastuse vastavalt saadud APDU-le. Kui APDU vastab juba teadaolevale MDS-ile, saadab haldur assotsiatsioonivastuse „Aktsepteeritud”, mis näitab, et konfiguratsioon on juba teada, ja seejärel peab agent üle minema olekusse Töö. Kui assotsieerimistaotlus on aktsepteeritud, kuid haldur ei tunnusta MDS-i, saadab ta tagasi assotsiatsioonivastuse "accept-unknown-config", mis palub agendil MDS-i konfigureerimist. Kui assotsieerimistaotlus lükatakse tagasi, peab agent üle minema assotsieerimata olekusse ja proovima uuesti. Juhi assotsiatsiooni vastus näeb välja järgmine.
0xE3 0x00 APDU VALIKU tüüp (AareApdu) 0x00 0x2C VALIK. Pikkus = 44
0x00 0x03 tulemus = aktsepteeritud-tundmatu-konfiguratsioon
0x50 0x79 data-proto-id = 20601
0x00 0x26 andmete-proto-info pikkus = 38
0x80 0x00 0x00 0x00 protokolliversioon
0x80 0x00 kodeerimisreeglid = MDER
0x80 0x00 0x00 0x00 nomenklatuurVersioon
0x00 0x00 0x00 0x00 funktsionaalsetühikut
0x80 0x00 0x00 0x00 süsteemitüüp = sys-type-haldur
0x00 0x08 süsteemi ID pikkus = 8 ja väärtus
0x11 0x22 0x33 0x44 0x55 0x66 0x77 0x88 0x00 0x00 halduri vastus konfiguratsiooni-ID-le on alati 0
0x00 0x00 0x00 0x00 halduri vastus andmetele-req-mode-capab on alati 0
0x00 0x00 0x00 0x00 valikList.count = 0 | optionList.length = 0
Kui agent saab aktsepteeritud või vastuvõetud-teadmata-config-seose vastuse, peab agent üle minema olekusse „Seotud”. Sellisel juhul aktsepteeris Manager seotamistaotlust, kuid see ei tuvastanud MDS-i, mis tagastas aktsepteeritud-teadmata-config-seose vastuse. Selle tulemusena peab Agent saatma konfiguratsiooniaruande järgmiselt.
/ * konfiguratsioonisündmuste aruanne * /
uint_8 USB_CONST PHD_OXI_CNFG_EVT_RPT [PHD_OXI_CNFG_EVT_RPT_SIZE] = {
0xE7, 0x00, / * APDU VALIKU tüüp (PrstApdu) * /
0x00, 0x70, / * VALIK. Pikkus = 112 * /
0x00, 0x6E, / * OCETET STRING. Pikkus = 110 * /
0x00, 0x02, / * invoke-id (eristab seda teistest täitmata sõnumitest) * /
0x01, 0x01, / * CHOICE (kaugjuhtimise kutsumine | kinnitatud sündmuste aruanne) * /
0x00, 0x68, / * VALIK. Pikkus = 104 * /
0x00, 0x00, / * obj-käepide = 0 (MDS-objekt) * / 0xFF, 0xFF, 0xFF, 0xFF, / * sündmuse aeg = 0xFFFFFFFF * /
0x0D, 0x1C, / * sündmuse tüüp = MDC_NOTI_CONFIG * /
0x00, 0x5E, / * event-info.length = 94 (ConfigReport algus) * /
0x40, 0x00, / * config-report-id * /
0x00, 0x02, / * config-obj-list.count = 2 Mõõtmisobjektid "teatatakse" * /
0x00, 0x58, / * config-obj-list.length = 88 * /
0x00, 0x06, / * obj-klass = MDC_MOC_VMO_METRIC_NU * /
0x00, 0x01, / * obj-käepide = 1 (.. 1. mõõtmine on SpO2) * /
0x00, 0x04, / * atribuudid. Arv = 4 * /
0x00, 0x24, / * atribuudid. Pikkus = 36 * / 0x09, 0x2F, / * attribute-id = MDC_ATTR_ID_TYPE * /
0x00, 0x04, / * atribuudi väärtus.pikkus = 4 * /
0x00, 0x02, 0x4B, 0xB8, / * MDC_PART_SCADA | MDC_PULS_OXIM_SAT_O2 * /
0x0A, 0x46, / * atribuudi-ID = MDC_ATTR_METRIC_SPEC_SMALL * /
0x00, 0x02, / * atribuudi väärtus.pikkus = 2 * /
0x40, 0xC0, / * saadaolevad andmed, acc-manager-init, acc-agent-init, mõõdetud * /
0x09, 0x96, / * atribuudi-ID = MDC_ATTR_UNIT_CODE * /
0x00, 0x02, / * atribuudi väärtus.pikkus = 2 * /
0x02, 0x20, / * MDC_DIM_PERCENT * / 0x0A, 0x55, / * atribuudi-ID = MDC_ATTR_ATTRIBUTE_VAL_MAP * /
0x00, 0x0C, / * atribuudi väärtus.pikkus = 12 * /
0x00, 0x02, / * AttrValMap.count = 2 * /
0x00, 0x08, / * AttrValMap.length = 8 * /
0x0A, 0x4C, 0x00, 0x02, / * MDC_ATTR_NU_VAL_OBS_BASIC | väärtuse pikkus = 2 * /
0x09, 0x90, 0x00, 0x08, /* MDC_ATTR_TIME_STAMP_ABS | väärtuse pikkus = 8 */
0x00, 0x06, / * obj-klass = MDC_MOC_VMO_METRIC_NU * /
0x00, 0x02, / * obj-käepide = 2 (.2. Mõõtmine on pulsisagedus) * /
0x00, 0x04, / * atribuudid. Arv = 4 * /
0x00, 0x24, / * atribuudid. Pikkus = 36 * /
0x09, 0x2F, / * atribuudi-ID = MDC_ATTR_ID_TYPE * /
0x00, 0x04, / * atribuudi väärtus.pikkus = 4 * /
0x00, 0x02, 0x48, 0x1A, / * MDC_PART_SCADA | MDC_PULS_OXIM_PULS_RATE * /
0x0A, 0x46, / * atribuudi-ID = MDC_ATTR_METRIC_SPEC_SMALL * / 0x00, 0x02, / * atribuudi väärtus.pikkus = 2 * /
0x40, 0xC0, / * saadaolevad andmed, acc-manager-init, acc-agent-init, mõõdetud * / 0x09, 0x96, / * attribute-id = MDC_ATTR_UNIT_CODE * / 0x00, 0x02, / * atribuudi väärtus. pikkus = 2 * / 0x0A, 0xA0, / * MDC_DIM_BEAT_PER_MIN * / 0x0A, 0x55, / * atribuudi-ID = MDC_ATTR_ATTRIBUTE_VAL_MAP * / 0x00, 0x0C, / * atribuudi väärtus.pikkus = 12 * / 0x00, 0. arv = 02 * /
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 */};
See konfiguratsiooniaruanne vastab impulssoksümeetri seadmele. Siinkohal näitab agent, et ta saadab kaks arvulist objekti (kõiki võimalikke objekte on kirjeldatud dokumendi ISO / IEEE 11073-20601: 2010 peatükis 6: Isikliku tervisevahendi DIM). Esimene arvuline objekt vastab hapnikuga küllastumise (SpO2) mõõtmisele. Teine arvuline objekt vastab pulsisageduse mõõtmisele.
Kui konfiguratsiooniaruanne on saadetud, peab haldur vastama, näidates, kas teatatud konfiguratsiooni saab kasutada või mitte. Kui teatatud konfiguratsiooni saab kasutada, peab agent üle minema tööolekusse. Kui haldur ei toeta teatatud konfiguratsiooni, peab agent uuesti proovima, kasutades muud konfiguratsiooni, mida haldur toetab. Juhi vastus näeb välja järgmine.
0xE7 0x00 APDU VALIKU tüüp (PrstApdu)
0x00 0x16 VALIK. Pikkus = 22
0x00 0x14 OCETET STRING. Pikkus = 20
0x43 0x21 invoke-id = 0x4321 (DataApdu algus. MDER kodeeritud.)
0x02 0x01 CHOICE (kaugjuhtimise vastus | kinnitatud sündmuste aruanne)
0x00 0x0E VALIK. Pikkus = 14
0x00 0x00 obj-käepide = 0 (MDS-objekt)
0x00 0x00 0x00 0x00 praegune aeg = 0
0x0D 0x1Sündmuse tüüp = MDC_NOTI_CONFIG
0x00 0x04 sündmus-vastus-info.pikkus = 4
0x40 0x00 ConfigReportRsp.config-report-id = 0x4000 0x00 0x00 ConfigReportRsp.config-result = aktsepteeritud-config
Sel juhul teatas haldur, et konfiguratsioon on aktsepteeritud ja Agent peab üle minema tööolekusse.
Nagu eespool mainitud, peab agent, kui ta saab kas aktsepteeritud või aktsepteeritud-tundmatu konfiguratsiooniga seose vastuse, peab agent üleminekuga seotud olekusse. Seotud olekus olles saab haldur MDS -i atribuutide taotlemiseks igal ajal kasutada teenust „Hangi“. MDS -i atribuudid sisaldavad teavet MDS -objekti kohta, näiteks seadme tüüpi (ntample, glükoosimõõtur, termomeeter, vererõhumõõtja ja teised), ettevõtte nimi ja seadme mudel.
A Hangi kõik MDS-i atribuudid näeb välja järgmine.
0xE7 0x00 APDU VALIKU tüüp (PrstApdu)
0x00 0x0E VALIK. Pikkus = 14
0x00 0x0C OCETET STRING. Pikkus = 12
0x34 0x56 invoke-id = 0x3456 (DataApdu algus. MDER kodeeritud.)
0x01 0x03 CHOICE (kaugjuhtimise kutsumine | hankimine) 0x00 0x06 CHOICE.length = 6
0x00 0x00 käepide = 0 (MDS-objekt)
0x00 0x00 atribuut-id-list.count = 0 (kõik atribuudid)
0x00 0x00 atribuut-id-list.length = 0
Kui saadakse taotlus saada kõik MDS -i atribuudid, peab agent vastama oma atribuutidega. Jälgides endistample näitab käsu Hangi atribuudid vastust, mille agent haldurile saadab.
/ * vastus atribuutide käsu saamiseks * /
uint_8 USB_CONST PHD_OXI_DIM_GET_RSP [PHD_OXI_DIM_GET_RSP_SIZE] = {
0xE7, 0x00, / * APDU VALIKU tüüp (PrstApdu) * / 0x00, 0x6F, / * CHOICE. Pikkus = 111 * / 0x00, 0x6D, / * OCETET STRING. Pikkus = 109 * /
0x00, 0x02, / * invoke-id = 0x0002 (peegeldatakse päringu alusel) * /
0x02, 0x03, / * CHOICE (kaugjuhtimisvastus | hankimine) * /
0x00, 0x67, / * VALIK. Pikkus = 103 * /
0x00, 0x00, / * käepide = 0 (MDS-objekt) * /
0x00, 0x06, / * attribute-list.count = 6 * /
0x00, 0x61, / * atribuutide loend. Pikkus = 97 * /
0x0A, 0x5A, / * atribuudi ID = MDC_ATTR_SYS_TYPE_SPEC_LIST * /
0x00, 0x08, / * atribuudi väärtus.pikkus = 8 * /
0x00, 0x01, / * TypeVerList count = 1 * /
0x00, 0x04, / * TypeVerList pikkus = 4 * /
0x10, 0x04, /* tüüp = MDC_DEV_SPEC_PROFILE_PULS_OXIM */
0x00, 0x01, / * versioon = versiooni 1 spetsialiseerumine * /
0x09, 0x28, / * atribuudi-ID = MDC_ATTR_ID_MODEL * /
0x00, 0x1B, / * atribuudi väärtus.pikkus = 27 * /
0x00, 0x0A, 0x46, 0x72, / * stringi pikkus = 10 | Freescale (tühik) * /
0x65, 0x65, 0x73, 0x63, 0x61, 0x6C, 0x65, 0x20, 0x00, 0x0D, 'M', 'E', / * stringi pikkus = 13 | MED-SPO2 PHDC * /
Atribuut "D", "-", "S", "P", "O", "2", "P", "H", "D", "C", 0x09, 0x84, / * -id = MDC_ATTR_SYS_ID * /
0x00, 0x0A, / * atribuudi väärtus.pikkus = 10 * /
0x00, 0x08, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, / * oktetti stringi pikkus = 8 | EUI-64 * /
0x0a, 0x44, / * atribuudi-ID = MDC_ATTR_DEV_CONFIG_ID * /
0x00, 0x02, / * atribuudi väärtus.pikkus = 2 * /
0x40, 0x04, / * dev-config-id = 16384 (Extended-config-start) * /
0x09, 0x2D, / * atribuudi-ID = MDC_ATTR_ID_PROD_SPECN * /
0x00, 0x12, / * atribuudi väärtus.pikkus = 18 * /
0x00, 0x01, / * ProductionSpec.count = 1 * /
0x00, 0x0E, / * ProductionSpec. Pikkus = 14 * /
0x00, 0x01, / * ProdSpecEntry.spec-type = 1 (seerianumber) * /
0x00, 0x00, / * ProdSpecEntry.component-id = 0 * /
0x00, 0x08, 0x44, 0x45, / * stringi pikkus = 8 | prodSpecEntry.prod-spec = DE124567 * /
0x31, 0x32, 0x34, 0x35, 0x36, 0x37, 0x09, 0x87, / * atribuudi-ID = MDC_ATTR_TIME_ABS * /
0x00, 0x08, / * atribuudi väärtus.pikkus = 8 * /
0x20, 0x09, 0x06, 0x12, /* Absoluutne aeg-Stamp=2009-06-12T12:05:0000*/
0x12, 0x05, 0x00, 0x00};
Selles eksampAgent kirjeldab oma MDS-i kui pulssoksümeetrit, ettevõtte nimi on “Freescale” ja seadme mudel on “MED-SPO2 PHDC”.
Kui agent on töörežiimis, saab ta hakata haldurile mõõtmistest aru andma. Mõõtmised tuleb saata fikseeritud aruannete abil. Need aruanded peavad sisaldama mõõtmisi, mis on korraldatud vastavalt eelnevalt saadetud MDS -i konfiguratsiooniaruandele. Näiteksample, meie konfiguratsiooniaruandes märkis agent haldurile, et saadab kaks numbrilist mõõtmist, SpO2 väärtuse ja pulsisageduse väärtuse. Meie MDS -objekti tulemus on järgmine:
Joonis 4. MED-SPO2 agendi esitus
/ * mõõtmised saatmiseks * /
uint_8 USB_CONST PHD_OXI_DIM_DATA_TX [PHD_OXI_DIM_DATA_TX_SIZE] = {
0xE7, 0x00, / * APDU VALIKU tüüp (PrstApdu) * /
0x00, 0x36, /*VALIK. Pikkus = 54 * /
0x00, 0x34, / * OCETET STRING. Pikkus = 52 * /
0x12, 0x36, / * invoke-id = 0x1236 * /
0x01, 0x01, / * CHOICE (kaugjuhtimise kutsumine | kinnitatud sündmuste aruanne) * /
0x00, 0x2E, /*VALIK. Pikkus = 46 * /
0x00, 0x00, / * obj-käepide = 0 (MDS-objekt) * /
0x00, 0x00, 0x00, 0x00, / * sündmuse aeg = 0 * /
0x0D, 0x1D, / * sündmuse tüüp = MDC_NOTI_SCAN_REPORT_FIXED * /
0x00, 0x24, /*sündmuseinfo.pikkus = 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, /*Absoluutne aeg-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00, 0x00, 0x02, / * ScanReportInfoFixed.obs-scan-fixed.value [1] .obj-sang = 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, /*Absoluutne aeg-Stamp = 2011-09-23T10:05:0000*/
0x0A, 0x05, 0x00, 0x00};
Selles APDU -s teatas Agent kahest numbrilisest objektist, 97 ja 78. 97 on identifitseeritud kui objekti käepide 1, et haldur saaks teada, et see mõõt vastab SpO2 -le. Sama on ka 78 -ga, mis esitati objekti käepidemena 2, nii et juhataja teab, et see mõõtmine vastab pulsisagedusele. Aeg stamp iga mõõtmise kohta on saadetud ka MDS -i konfiguratsiooniaruandes määratletud viisil.
Rakenduse täitmine mikrokontrolleris
Rakenduse käivitamine mikrokontrolleris algab funktsiooni TestApp_Task kutsumisel. See funktsioon täidetakse lõpmatu ringina ja kontrollib pidevalt agendi olekumasina olekut.
Funktsioon TestApp_Task sisaldab väikest olekumasinat, mis haldab rakenduse olekut. Esiteks, kui seade on edukalt loetletud PHD-na, on muutuja “event” APP_PHD_INITIALIZED. Esmalt käivitab seade taimeri, andes kasutajale aega valida ühenduseks soovitud MDS-objekt juhul, kui agendil on rohkem kui üks MDS-objekt. Kui taimer on loendamise lõpetanud, on muutuja „sündmus” APP_PHD_SELECT_TIMER_OFF. Sellesse juhtumisse
avalduses kutsutakse üles funktsioon PHD_Connect_To_Manager. See funktsioon saadab jaotises määratletud seostamistaotluse file phd_device_spec.c ja käivitab eelnevalt kirjeldatud seostamisprotsessi. Kogu seostamisprotsessi käsitletakse automaatselt funktsioonide abil file phd_com_model.c ja see võtab kõik vajalikud dokumendis eelnevalt määratletud APDU -d file phd_device_spec.c, et seos lõpule viia. See aitab arendajatel keskenduda oma rakendusele, unustades kogu PHD -kommunikatsiooniga seotud logistika.
Funktsioon SpO2_PeriodicTask kutsutakse perioodiliselt funktsiooni TestApp_Task. See funktsioon tegeleb pulsioksümeetriga ise. See kontrollib MED-SPO2-plaatide käsitsemiseks vajalikke välisseadmeid ning saab SpO2 ja pulsisageduse mõõtmised. Lisateavet selle funktsiooni käitumise kohta leiate rakenduse märkusest AN4327 Pulseoksümeetri alused ja disain. Järgmine diagramm tähistab funktsiooni TestApp_Task.
Joonis 5. TestApp_Task vooskeem
SpO2 perioodilise ülesande täitmise ajal uuendatakse pidevalt SpO2 ja pulsisageduse mõõtmisi. SpO2 rakenduse lähtestamisel loodi üks sekund taimer. See taimer aktiveeritakse, kui iga ajaarvestus on saavutatud ja taaskäivitatakse veel üks sekund. Kui see taimer on aktiveeritud, täidab see funktsiooni Send_PHDC_Measurements. See funktsioon loeb möödunud sekundite arvu ja kui ta tuvastab, et sekundi möödunud kogus on sama, mis on määratletud jaotises SPO2_PHDC_UPDATE_PERIOD, kutsub see funktsiooni PHD_Send_Measurements_to_Manager.
Funktsioon PHD_Send_Measurements_to_Manager värskendab jaotises määratletud mõõtmiste fikseeritud aruannet file phd_devicespec.c, kus on SpO2 perioodiliste ülesannete funktsiooni viimased mõõtmised. Iga 10 sekundi järel saadetakse uus mõõtmiste komplekt ja absoluutne aeg Stamp suureneb ühe minuti jooksul. Seejärel võtab haldur mõõtmised ja näitab neid oma GUI -s.
Demo käitamine
Järgmised juhised juhendavad teid demo kokkupanekul, tarkvara allalaadimisel ja käitamisel.
Riistvarakomplekt
Demo kokkupanekuks vajate järgmisi osi.
Joonis 6. Nõutav pealkiri
TWR-K52N512 plaat ja TWR-SER plaat vajavad töötamiseks algse hüppaja konfiguratsiooni muutmist. Veenduge, et nende laudade hüppaja konfiguratsioon oleks selline, nagu allpool on toodud.
Tabel 1. TWR-SER hüppaja seadistamine
|
Jumper |
positsioon |
| J10 | 1-2 |
| J16 | 3-4 |
| J2 | 1-2 |
Tabel 2. TWR-K53N512 hüppaja seadistamine
|
Jumper |
positsioon |
| J1 | Avatud |
| J3 | Avatud |
| J4 | 2-3 |
| J5 | Avatud |
| J6 | Ühendatud |
| J7 | Ühendatud |
| J11 | 1-2 |
| J12 | Avatud |
| J14 | Avatud |
| J15 | Ühendatud |
| J16 | 1-2 |
| J17 | Ühendatud |
| J18 | Ühendatud |
| J20 | Avatud |
| J21 | Ühendatud |
| J22 | Avatud |
| J24 | 1-2 |
| J25 | Avatud |
| J26 | Avatud |
| J28 | Avatud |
| J29 | Ühendatud |
| J32 | 1-2 |
| J33 | 1-2 |
| J34 | Avatud |
Demo kokkupanek
Järgmised toimingud juhendavad teid demo kokkupanekul.
1. Võtke tahvel TWR-K53N512 ja esmase lifti tahvel. Ühendage plaadi TWR-K53N512 külg, mis on tähistatud kui „Esmane“, primaarse lifti plaadi ühe pesaga.
Joonis 7. TWR-K53N512 kokkupanek
2. Võtke nüüd TWR-SER-plaat. Ühendage primaarseks märgitud TWR-SER-i külg primaarelevaatori plaadi ühe piluga.
Joonis 8. TWR-SERi kokkupanek
3. Võtke teine lift. Ühendage TWR-SER ja TWR-K53N512 tahvlite külg, mis on tähistatud kui “sekundaarne”, teisese lifti plaadi vastava pesaga.
Joonis 9. Sekundaarse lifti kokkupanek
4. Võtke tahvel MED-SPO2. Ühendage MED-SPO2 plaadi tihvtid TWR-K53N512 plaadi meditsiinilise pistikuga. MED-SPO2 plaadil olevate tihvtide loendamine peab peegelduma TWR-K53N512 tahvlil olevate tihvtide loendiga (vt allolevat pilti).
Joonis 10. Analoogne esiotsa paigutus
5. Ühendage pulsoksümeetri andur MED-SPO9 plaadi DB2 pistikuga.
Joonis 11. Impulssoksimeetri anduri paigutus
Demo täitmine
1. Laadige alla ja installige HealthLink®. Selle võib leida L -ltamprey Networks web lehel www.lnihealth.com.
Joonis 12. LNI tervis web lehel
2. Ühendage arvutist A – mini B USB-kaabel TWR-SER USB-porti.
Joonis 13. USB ühendamine TWR-SER-iga
3. Kui ilmub aken, kus küsitakse USB PHDC draivereid, valige suvand „Installige draiverid automaatselt”. Draiverid kopeeritakse HealthLink® programmi installimise ajal süsteemi kausta.

Joonis 14. PHDC draiverite installimine
4. Käivitage programm HealthLink®. Kui kasutate programmi esimest korda, palub ta teil konto luua. Looge oma terviseandmete pakkuja (nt Google Health, Microsoft HealthVault jne) kasutajakonto. Kui teil pole terviseandmete pakkujat, võite kasutada valikut „Salvesta kettale”.
Joonis 15. Konto loomine
5. Asetage pulsoksümeetri andur nimetissõrmele, nagu on näidatud alloleval pildil.

Joonis 16. Sõrmeanduri paigutus
6. Kui konto on aktiivne, tunneb HealthLink® programm tornisüsteemi pulsoksümeetri seadmena. Mõõtmised saadetakse iga kümne sekundi järel.

Joonis 17. Demo töötab
Viited
• Pulssoksümeetri väljatöötamine põhineb rakenduse märkusel „AN4327 pulsioksümeetri põhialused ja disain”
• Tarkvara põhineb USB -pinu koos PHDC 3.0 -ga, mille leiate Freescale'ilt web leht https: //www.freescale.com.
• Sideprotokoll põhineb standardil ISO / IEEE 11073-20601 Personal Health Device Communications: optimeeritud vahetusprotokollid
• PHD impulssoksümeetri kommunikatsiooniprotokolli väljatöötamine töötati välja vastavalt standardile IEEE 11073-10404 Personal Health Device Communications: Device Specialization-Pulse Oximeter
• See tarkvara töötati välja IAR 6.3 abil. Selle saab alla laadida IAR -ist web lehel https://www.iar.com
• Selle demo väljatöötamisel kasutatud GUI on HealthLink® GUI firmalt Lamprey Networks ja neid saab LNI -st alla laadida web lehel https://www.lnihealth.com
Järeldused
Isikliku tervishoiuseadme klass võimaldab sama kaasaskantavust kaasaskantavate meditsiiniseadmete vahel. Freescale pakub ühenduvuslahendusi, mis aitavad arendajatel luua seadmeid, mis suudavad suhelda selliste standarditega nagu IEEE 11073-20601, muutes nad turul paremaks valikuks.
Kuidas meieni jõuda:
Avaleht: www.freescale.com
Web Tugi: http://www.freescale.com/support
USA / Euroopa või asukohad, mida pole loetletud:
Vabakaaluline pooljuht
Tehnilise teabe keskus, EL516 2100
Ida-Ellioti tee
Tempe, Arizona 85284 +1-800-521-6274 või +1-480-768-2130
www.freescale.com/support
Euroopa, Lähis-Ida ja Aafrika:
Tasuta Halbleiter Deutschland GmbH
Tehnilise teabe keskus
Aarete kaar 7
81829 Muenchen, Saksamaa
+44 1296 380 456 (inglise)
+46 8 52200080 (inglise)
+49 89 92103 559 (saksa)
+33 1 69 35 48 48 (prantsuse)
www.freescale.com/support
Jaapan:
Freescale Semiconductor Japan Ltd.
Peakorter
ARCO torn 15F
1-8-1, Shimo-Meguro, Meguro-ku,
Tokyo 153-0064
Jaapan
0120 191014 või +81 3 5437 9125 s
upport.japan@freescale.com
Aasia ja Vaikse ookeani:
Freescale Semiconductor China Ltd.
Börsihoone 23F
Nr 118 Jianguo tee
Chaoyangi piirkond
Peking 100022
Hiina
+86 10 5879 8000
support.asia@freescale.com
Selles dokumendis sisalduv teave on ette nähtud üksnes selleks, et süsteemi- ja tarkvara juurutajad saaksid kasutada Freescale Semiconductors tooteid. Käesolevas dokumendis esitatud teabe põhjal integreeritud vooluringide või integraallülituste kujundamiseks ega valmistamiseks ei ole antud käesolevas lepingus antud otseseid ega kaudseid autoriõiguste litsentse.
Freescale Semiconductor jätab endale õiguse teha muudatusi käesolevas dokumendis ilma ette teatamata. Freescale Semiconductor ei anna garantiid, ei esita ega garanteeri oma toodete sobivust konkreetseks otstarbeks. Samuti ei võta Freescale Semiconductor endale mingit vastutust, mis tuleneb toote või vooluahela rakendamisest või kasutamisest, ning loobub konkreetselt igasugusest vastutusest, sealhulgas ilma piiranguteta tagajärjed või juhuslikud kahjud. „Tüüpilised” parameetrid, mis võidakse esitada Freescale Semiconductor andmelehtedel ja / või spetsifikatsioonides, võivad rakendustes erineda ja võivad erineda ning tegelik jõudlus võib aja jooksul erineda. Kõik tööparameetrid, kaasa arvatud tüübid, peavad kliendi tehnilised eksperdid kinnitama iga kliendirakenduse jaoks. Freescale Semiconductor ei anna oma patendiõiguste ega teiste õiguste alusel ühtegi litsentsi. Freescale Semiconductor tooted ei ole kavandatud, ette nähtud ega lubatud kasutamiseks keha kirurgilise implantaadi jaoks mõeldud süsteemides ega muudes rakendustes, mis on ette nähtud elu toetamiseks või säilitamiseks, ega muudeks rakendusteks, mille korral Freescale Semiconductor toote rike võib põhjustada olukord, kus võib tekkida kehavigastus või surm. Kui ostja ostab või kasutab Freescale Semiconductor tooteid sellise tahtmatu või volitamata rakenduse jaoks, hüvitab Ostja Freescale Semiconductorile ja selle ohvitseridele, töötajatele, tütarettevõtetele, sidusettevõtetele ja edasimüüjatele kahjutu kõik nõuded, kulud, kahjud ja kulud ning mõistlikud advokaaditasud otseselt või kaudselt mis tahes väidetest isikuvigastuste või surma kohta, mis on seotud sellise tahtmatu või volitamata kasutamisega, isegi kui sellised väited väidavad, et Freescale Semiconductor oli detaili kujundamise või valmistamise osas hooletu.
Freescale'i toodete RoHS-ga ühilduvatel ja / või Pb-vabadel versioonidel on nende funktsionaalsus ja elektrilised omadused nagu nende, mis pole RoHS-i kaebused ja / või mitte-Pb-vabad.
Lisateabe saamiseks vt http://www.freescale.com või pöörduge oma Freescale'i müügiesindaja poole.
Freescale'i keskkonnatoodete programmi kohta leiate teavet saidilt http://www.freescale.com/epp.
Freescale ™ ja Freescale'i logo on ettevõtte Freescale Semiconductor, Inc. kaubamärgid.
Kõik muud toodete või teenuste nimed kuuluvad nende omanikele.
© 2012 Freescale Semiconductor, Inc.
NXP impulssoksümeeter USB PHDC kasutusjuhendi abil - Laadi alla [optimeeritud]
NXP impulssoksümeeter USB PHDC kasutusjuhendi abil - Laadi alla



