Dear sir or madam,

We have assembled a board utilizing ADAS1000.

We successfully got TESTTONE set up according to DATASHEET, Example 4: Configure 150 Hz Test Tone Sine Wave on Each ECG Channel and Stream Conversion Data.

We wanted to proceed with DATASHEET example 1,Example 1: Initialize the ADAS1000 for ECG Capture and Start Streaming Data.

But upon run we still get the TESTTONE even though we rechecked registers via reading the set up value, everything seems to be fine, but it yields sinusoidal values like this on 3 inputs:

value: 1080607.625000, 1035503.125000, 1035503.125000
value: 1092268.750000, 1048476.750000, 1048476.750000
value: 1103936.125000, 1061541.750000, 1061541.750000
value: 1115422.750000, 1073930.250000, 1073930.250000

Could anyone be so kind to help us what we are doing wrong?

Thank you


  • 0
    •  Analog Employees 
    on Sep 22, 2020 10:12 AM 2 months ago

    Hi Ivo,

    Sounds like there are still samples coming through the signal chain. Can you try issue a hardware reset before configuring the ECG capture?

  • Actually, I switched off the board as well as I have this method to reset the chip:

    void ADAS1000_SoftwareReset(void) {
        // Clear all registers to their reset value.
        ADAS1000_SetRegisterValue(ADAS1000_ECGCTL, ADAS1000_ECGCTL_SWRST);

        // The software reset requires a NOP command to complete the reset.
        ADAS1000_SetRegisterValue(ADAS1000_NOP, 0);

    I also have no Right Leg Drive connected, but I also tried following sequence, which also yields sinusoidal signal, but RLD_OUT is different.

    //CMREFCTL is set to 0x85E0000A
    CMREFCTL[0] = 0x85;
    CMREFCTL[1] = 0xE0;
    CMREFCTL[2] = 0x00;
    CMREFCTL[3] = 0x4A;

    //FILTCTL is set to 0x8B000000
    FILTCTL[0] = 0x8B;
    FILTCTL[1] = 0x00;
    FILTCTL[2] = 0x00;
    FILTCTL[3] = 0x00;

    //FRMCTL is set to 0x8A1FCE00
    FRMCTL[0] = 0x8A;
    FRMCTL[1] = 0x1F;
    FRMCTL[2] = 0xC6; //CE = pace disabled, C6 = pace disabled LOFF enabled
    FRMCTL[3] = 0x00;

    LOFFCTL[0] = 0x82;
    LOFFCTL[1] = 0x00;
    LOFFCTL[2] = 0x00;
    LOFFCTL[3] = 0x15;

    //ECGCTL is set to 0x81F800AE
    ECGCTL[0] = 0x81;
    ECGCTL[1] = 0xF8;
    ECGCTL[2] = 0x00;
    ECGCTL[3] = 0xAE;

  • 0
    •  Analog Employees 
    on Sep 24, 2020 2:37 PM 2 months ago in reply to Ivo Hora

    Hi Ivo,

    It still sounds like the TESTTONE is running. Can you double check that you are setting TONEN bit to 0 in the TESTTONE register. Then enabling the the ECG capture.

  • Actually, I read the entire value of TESTTONE register before I start collecting samples and it yields 0. Therefore I guess all the bits of TESTTONE are set to 0. It is kind of a mystery for me :)

  • Actually, I just realized that I am using MODE=3 for SPI communication, so I will test it with mode 0. I just want to know whether the chip itself is all right. It initializes and sends data, but I don't know whether it could be corrupted even though it is sending SOME data.

    Actually, I also tested the original software for the board:

    Which uses bcm2835 library, but we wanted to utilize generic Linux kernel SPI driver. The original software can function without TESTONE activated so it surprises me that we still get TESTONE sinusoids even though we set up the same register sequence to initialize ADAS1000  like here: and we get different output.

    Sounds like there is something more we are not aware of. I have not a clue whether RLD must be also connected as we have only LA,LL,RA connected, no RLD, actually according to the register initialization sequence the RLD_OUT is set to one of the leads.