Inbäddade system för datainsamling ECG (8 / 14 steg)
Steg 8: Skapa bare-ben data förvärv programvara - del 2: Data avbrott och överföring
Om det previsios steget lyckades på nDRDY stift i ADS1299 en puls med 1kHz frekvens bör förekomma - detta är den förvärvade data klara signalen.
Så en GPIO med avbrott måste användas. SDK har lyckligtvis också ett exempel på detta. Den enda moddification är i funktionen ISR handler.
IF (!. XGpio_DiscreteRead (& DRDYinstance, 1)) {
XSpiPs_SetSlaveSelect (& SpiInstance, ADS_SPI_SELECT);
XSpiPs_PolledTransfer (& SpiInstance, NULL, inputData, 27);
...
}
Övre nämnda kod snipet visar små förändringar. I avbrottshanterare kontrollera vi tillståndet i GPIO. Om det är lågt, har vi en giltig data, så vi läsa den. Data är i följande ordning: OP CH1 CH2 CH3... CH8. OP innehåller vissa alternativ som bly-off upptäckt, medan CHn är informationen på den n chanel (24b av data).
För överföring, UART perifera är används eftersom den börja skick occures när användaren startar förvärv från telefonen, ett avbrott måste användas på mottagaren slutet. Min inställning för Bluetooth UART kommunikation var 230400 Baud/s hastighet med följande protokoll:
250 p p... p 255 är patienten protokollet, här vi börja skicka information som namn, födelsedatum etc.
251... 255 är patientdata protokollet.
- 252 p p... p 255 är protokollet start, med detta dataförvärvet är igång - här p bitar innebär provtagning inställningar som ett skott med definierade intervall, ett skott på obestämd tid, samplingsfrekvens etc.
- 253 p p... p 255 är stop protokollet
- 254 d d... d 254 är ECG dataprotokoll
Så långt ett paket av 16B längd används: starta CH_NUM(2) CHi(3) CHj(3) CHk(3) CHl(3) sluta, där 2 byte används för data identifiering, och 4 24b separata data skickas till android-enhet.
Efter några iakttagelser slutsatsen var att minska paketstorleken, är displayen på dessa android enheter så små, en förändring av 8b i data är acceptabel, så med 16b av provdata, den slutliga paketstorleken är 11B, eftersom Chanel numret kan också ändras. Detta CH_NUM byte kommer att vara till hjälp när du använder alla 8 chanels ADC, men endast 4 transmiting.