AFE
Dependencies: mbed-os-retarget-segger-rtt
source/main.h
- Committer:
- d4rth_j0k3r
- Date:
- 2020-09-04
- Revision:
- 2:04b708fb234b
- Parent:
- 0:8388b3dcbdf3
File content as of revision 2:04b708fb234b:
/* Pneumoscope Version 1.0 Florian CHAYS */ // Defines for Registers #define CONTROL0 0x00 // timing registers #define LED2STC 0x01 #define LED2ENDC 0x02 #define LED2LEDSTC 0x03 #define LED2LEDENDC 0x04 #define ALED2STC 0x05 #define ALED2ENDC 0x06 #define LED1STC 0x07 #define LED1ENDC 0x08 #define LED1LEDSTC 0x09 #define LED1LEDENDC 0x0A #define ALED1STC 0x0B #define ALED1ENDC 0x0C #define LED2CONVST 0x0D #define LED2CONVEND 0x0E #define ALED2CONVST 0x0F #define ALED2CONVEND 0x10 #define LED1CONVST 0x11 #define LED1CONVEND 0x12 #define ALED1CONVST 0x13 #define ALED1CONVEND 0x14 #define ADCRSTSTCT0 0x15 #define ADCRSTENDCT0 0x16 #define ADCRSTSTCT1 0x17 #define ADCRSTENDCT1 0x18 #define ADCRSTSTCT2 0x19 #define ADCRSTENDCT2 0x1A #define ADCRSTSTCT3 0x1B #define ADCRSTENDCT3 0x1C #define PRPCOUNT 0x1D #define CONTROL1 0x1E #define SPARE1 0x1F #define TIAGAIN 0x20 #define TIA_AMB_GAIN 0x21 #define LEDCNTRL 0x22 #define CONTROL2 0x23 #define SPARE2 0x24 #define SPARE3 0x25 #define SPARE4 0x26 #define RESERVED1 0x27 #define RESERVED2 0x28 #define ALARM 0x29 #define LED2VAL 0x2A #define ALED2VAL 0x2B #define LED1VAL 0x2C #define ALED1VAL 0x2D #define LED2_ALED2VAL 0x2E #define LED1_ALED1VAL 0x2F #define DIAG 0x30 // ==== Globals ==== SPI spi(P1_3,P1_4,P1_6); // mosi, miso, sclk DigitalOut cs(P1_5); DigitalIn AFE_DIAG_END(P0_11); DigitalIn button(P0_12); DigitalOut myled(P0_13); DigitalOut SUP_EN(P0_25); DigitalIn ADC_READY(P1_1); DigitalOut AFE_PDN(P1_2); DigitalOut AFE_nRST(P1_7); DigitalIn AFE_LED_ALM(P1_8); DigitalIn AFE_PD_ALM(P1_9); unsigned long AFE_Default[49] = { //Reg0: CONTROL0: CONTROL REGISTER 0 0x00000, //Reg1:REDSTARTCOUNT: SAMPLE RED START COUNT 6000, //Reg2:REDENDCOUNT: SAMPLE RED END COUNT 7999, //Reg3:REDLEDSTARTCOUNT: RED LED START COUNT 6000, //Reg4:REDLEDENDCOUNT: RED LED END COUNT 7998, //Reg5:AMBREDSTARTCOUNT: SAMPLE AMBIENT RED START COUNT 0000, //Reg6:AMBREDENDCOUNT: SAMPLE AMBIENT RED END COUNT 1998, //Reg7:IRSTARTCOUNT: SAMPLE IR START COUNT 2000, //Reg8:IRENDCOUNT: SAMPLE IR END COUNT 3999, //Reg9:IRLEDSTARTCOUNT: IR LED START COUNT 2000, //Reg10:IRLEDENDCOUNT: IR LED END COUNT 3999, //Reg11:AMBIRSTARTCOUNT: SAMPLE AMBIENT IR START COUNT 4000, //Reg12:AMBIRENDCOUNT: SAMPLE AMBIENT IR END COUNT 5998, //Reg13:REDCONVSTART: REDCONVST 2, //Reg14:REDCONVEND: RED CONVERT END COUNT 1999, //Reg15:AMBREDCONVSTART: RED AMBIENT CONVERT START COUNT 2002, //Reg16:AMBREDCONVEND: RED AMBIENT CONVERT END COUNT 3999, //Reg17:IRCONVSTART: IR CONVERT START COUNT 4002, //Reg18:IRCONVEND: IR CONVERT END COUNT 5999, //Reg19:AMBIRCONVSTART: IR AMBIENT CONVERT START COUNT 6002, //Reg20:AMBIRCONVEND: IR AMBIENT CONVERT END COUNT 7999, //Reg21:ADCRESETSTCOUNT0: ADC RESET 0 START COUNT 0, //Reg22:ADCRESETENDCOUNT0: ADC RESET 0 END COUNT 2, //Reg23:ADCRESETSTCOUNT1: ADC RESET 1 START COUNT 2000, //Reg24:ADCRESETENDCOUNT1: ADC RESET 1 END COUNT 2002, //Reg25:ADCRESETENDCOUNT2: ADC RESET 2 START COUNT 4000, //Reg26:ADCRESETENDCOUNT2: ADC RESET 2 END COUNT 4002, //Reg27:ADCRESETENDCOUNT3: ADC RESET 3 START COUNT 6000, //Reg28:ADCRESETENDCOUNT3: ADC RESET 3 END COUNT 6002, //Reg29:PRPCOUNT: PULSE REPETITION PERIOD COUNT 7999, //Reg30:CONTROL1: CONTROL REGISTER 1 0x00107, //timer enabled, averages=3, RED and IR LED pulse ON PD_ALM AND LED_ALM pins //Reg31:?: ?? 0x00000, //Reg32:TIAGAIN: TRANS IMPEDANCE AMPLIFIER GAIN SETTING REGISTER 0x00000, //Reg33:TIA_AMB_GAIN: TRANS IMPEDANCE AAMPLIFIER AND AMBIENT CANELLATION STAGE GAIN 0x00000, //Reg34:LEDCNTRL: LED CONTROL REGISTER 0x11414, //Reg35:CONTROL2: CONTROL REGISTER 2 0x00000, //bit 9 //Reg36:?: ?? 0x00000, //Reg37:?: ?? 0x00000, //Reg38:?: ?? 0x00000, //Reg39:?: ?? 0x00000, //Reg40:: ?? 0x00000, //Reg41:ALARM: ?? 0x00000, //Reg42:REDVALUE: RED DIGITAL SAMPLE VALUE 0x00000, //Reg43:AMBREDVALUE: Ambient RED Digital Sample Value 0x00000, //Reg44:IRVALUE: IR Digital Sample Value 0x00000, //Reg45:AMBIRVALUE: Ambient IR Digital Sample Value 0x00000, //Reg46:RED-AMBREDVALUE: RED-AMBIENT RED DIGITAL SAMPLE VALUE 0x00000, //Reg47:IR-AMBIRVALUE: IR-AMBIENT IR DIGITAL SAMPLE VALUE 0x00000, //Reg48:DIGNOSTICS: DIAGNOSTICS FLAGS REGISTER 0x00000 }; // ==== Prototypes ==== void SPI_Write(char address, uint32_t data); uint32_t SPI_Read(char raddress); void SPI_Write_Bit(char address, uint8_t bit, bool bit_high); void AFE_reset(); void AFE_begin(); void AFE_set_LED_current(uint8_t led1_current, uint8_t led2_current); void AFE_measurement(); void AFE_register_state(); void AFE_control_register(); void AFE_diag_flag(); void AFE_Results(); bool error_check(int index, uint32_t data_in, uint32_t data_out); void blinky(int delay);