Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

PIC18F25K22 и АЦП ADS1292

Пн сен 03, 2018 14:08:44

Добрый день. Есть на руках плата с АЦП ADS1292. Схема подключения изображена на картинке под спойлером. Инициализировал в проекте все согласно даташиту. Получаю данные по обоим каналам постоянно 0x7FFFFF. Т.е. как будто происходит насыщение. Пробовал один канал закорачивать (в регистре CH1SET выбирал режим 0001 = Input shorted), чтобы получить на нем 0. Но все равно получаю то же самое значение. Пробовал включить режим с тестовым сигналом (в регистре CH1SET выбирал режим 0101 = Test signal и в регистре CONFIG2 ставил 0b10100011) - результат тот же. Опорное напряжение выбираю внутреннее 2.42В. Подскажите, пожалуйста, в чем может быть загвоздка? Может кто работал уже с таким АЦП.
Вот код инициализации в рабочем режиме:
Код:
void ADC_SetConfig (void) {
    // stop continuous read mode
    ADC_SendCommand(ADC_CMD_SDATAC);

    // set continuous conversion mode
    // set sample rate to 125sps
    ADC_WriteRegister(ADC_REG_CONFIG1, 0b00000000);

    // enable internal reference
    // set internal reference to 2.42v
    ADC_WriteRegister(ADC_REG_CONFIG2, 0b10100000);

    // enable channel 1
    // gain x1
    // input shorted
    ADC_WriteRegister(ADC_REG_CH1SET, 0b00010001);

    // enable channel 2
    // gain x12
    // normal electrode input
    ADC_WriteRegister(ADC_REG_CH2SET, 0b01100000);

    // RLDREF signal (AVDD – AVSS) / 2 generated internally
    // calibration on
    ADC_WriteRegister(ADC_REG_RESP2, 0x83);

    // enable RLD buffer
    ADC_WriteRegister(ADC_REG_RLD_SENS, 0x20);

    // init the remaining registers with default values
    ADC_WriteRegister(ADC_REG_LOFF, 0x10);
    ADC_WriteRegister(ADC_REG_LOFF_SENS, 0x00);
    ADC_WriteRegister(ADC_REG_LOFF_STAT, 0x00);
    ADC_WriteRegister(ADC_REG_RESP1, 0x02);
    ADC_WriteRegister(ADC_REG_GPIO, 0x00);

    ADC_SendCommand(ADC_CMD_OFFSETCAL);
}

СпойлерИзображение

Re: PIC18F25K22 и АЦП ADS1292

Ср дек 12, 2018 21:38:59

// enable RLD buffer
ADC_WriteRegister(ADC_REG_RLD_SENS, 0x20);

Вы включили RLD, но не подключили входы каналов. Попробуйте ADC_WriteRegister(ADC_REG_RLD_SENS, 0x2F);
Ответить