AFE20408: Enabling PAON disables dac outputs despite all alarms being disabled and dacs set to be on

Part Number: AFE20408

Tool/software:

Currently using the evaluation kit with the following configuration:

VCCA = VCCB = GND

VSSA = VSSB = -4V

VDD = 5V

VIO = 3.3V

the ftdi bridge is fully disconnected from all jumpers. I am using my own micro for spi control.

 

When I enable PAON, the dacs begin reporting that their power status has gone into low power mode. If I disable PAON, then all the dacs show they're enabled as normal and I can control them as expected. I don't see this linked behavior really mentioned in the documentation as to why the dacs would enter low power mode if paon is enabled, or maybe I am overlooking something here.

I've disabled all alarms for PAON and equally disabled the global alarm register to confirm that there are no alarms triggering.

Reading the ADC reports the correct values per channel.

While reading back out the pwr_status_1 register, it also shows that all dacs should be disabled but they're still actively driving the commanded value, 2.6V.

Code snippet below of what is inside of my main

  // Global address
  {
    Afe20408Definitions::gen_cfg_0_t content;
    content.bits.flexio_out_ode = Afe20408Definitions::FlexIoOutODE::PUSH_PULL_OUTPUT;
    content.bits.paon_ode = Afe20408Definitions::PaonODE::PUSH_PULL_OUTPUT;
    content.bits.paon_pol = Afe20408Definitions::PaonPOL::INVERT_PWR_EN_PAON_SETTING;

    device.set_gen_cfg_0(content);
  }

  {
    Afe20408Definitions::gen_cfg_1_t content;
    content.bits.vssa_range = Afe20408Definitions::gen_cfg_1_t::VSS_A_B_RANGE::MID_RANGE;
    content.bits.vssb_range = Afe20408Definitions::gen_cfg_1_t::VSS_A_B_RANGE::MID_RANGE;
    content.bits.flexio_func = Afe20408Definitions::gen_cfg_1_t::FLEXIO_FUNC::N_ALARMOUT;

    device.set_gen_cfg_1(content);
  }

  {
    Afe20408Definitions::global_cfg_t content;
    content.bits.adc_byp_en = Afe20408Definitions::AdcBypass::DISABLED;
    content.bits.alarm_byp_en = Afe20408Definitions::AlarmBypass::ENABLE_ALL_ALARM_CONDITION_STATES_AND_ALARM_STATUS_BITS_BYPASS;

    device.set_global_cfg(content);
  }
  {
    Afe20408Definitions::channel_enable_t content;
    content.register_content = 0;  // Ignore flexio for dacs

    device.set_flexio_enable(content);
  }
  {
    Afe20408Definitions::alarmout_src_0_t content;
    content.register_content = 0;  // no alarms effect paon

    device.set_alarmout_src_0(content);
  }

  {
    Afe20408Definitions::alarmout_src_1_t content;
    content.register_content = 0;  // no alarms effect paon

    device.set_alarm_out_src_1(content);
  }

  {
    Afe20408Definitions::paon_src_0_t content;
    content.register_content = 0;

    device.set_paon_src_0(content);
  }

  {
    Afe20408Definitions::paon_src_1_t content;
    content.bits.vcca_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;
    content.bits.vccb_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;
    content.bits.vssa_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;
    content.bits.vssb_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;
    content.bits.thermerr_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;
    content.bits.ref_paon_out = Afe20408Definitions::PaonAlarmEffect::ALARM_EVENT_DOES_NOT_AFFECT_PAON_PIN;

    device.set_paon_src_1(content);
  }

  // Page 1
  {
    Afe20408Definitions::adc_gen_cfg_t content;
    content.bits.falr_sense = Afe20408Definitions::adc_gen_cfg_t::OutOfRangeConversionsToSetAlarm::_4;
    content.bits.falr_adc = Afe20408Definitions::adc_gen_cfg_t::OutOfRangeConversionsToSetAlarm::_4;
    content.bits.falr_tmp = Afe20408Definitions::adc_gen_cfg_t::OutOfRangeConversionsToSetAlarm::_4;
    content.bits.cmode = Afe20408Definitions::AdcConversionMode::AUTO_MODE;
    content.bits.shunt_range = Afe20408Definitions::ShuntRange_mV::_163_84;

    device.set_adc_gen_cfg(content);
  }

  {
    Afe20408Definitions::adc_conv_cfg_0_t content;
    content.bits.conv_rate_adc = Afe20408Definitions::adc_conv_cfg_0_t::AquisitionAndConversionTime_uS::_152;
    content.bits.conv_rate_sense = Afe20408Definitions::adc_conv_cfg_0_t::AquisitionAndConversionTime_uS::_152;
    content.bits.conv_rate_tmp = Afe20408Definitions::adc_conv_cfg_0_t::AquisitionAndConversionTime_uS::_152;

    device.set_adc_conv_gen_cfg_0(content);
  }

  {
    Afe20408Definitions::adc_conv_cfg_1_t content;
    content.bits.avg_adc = Afe20408Definitions::adc_conv_cfg_1_t::AverageSamples::_1;
    content.bits.avg_sense = Afe20408Definitions::adc_conv_cfg_1_t::AverageSamples::_1;
    content.bits.avg_tmp = Afe20408Definitions::adc_conv_cfg_1_t::AverageSamples::_1;

    device.set_adc_conv_gen_cfg_1(content);
  }

  {
    Afe20408Definitions::adc_hyst_0_t content;
    content.bits.hyst_adc = 0x08;
    content.bits.hyst_tmp = 0x08;

    device.set_adc_hyst_0(content);
  }

  {
    Afe20408Definitions::adc_hyst_1_t content;
    content.bits.hyst_sense = 0x08;

    device.set_adc_hyst_1(content);
  }

  // Page 2

  {
    Afe20408Definitions::adc_ccs_ids_t content;
    content.bits.ccs_id_a = 0x03;
    content.bits.ccs_id_b = 0x01;
    device.set_adc_ccs_ids_x(Afe20408Definitions::AdcCcsId::_0, content);
    content.bits.ccs_id_a = 0x04;
    content.bits.ccs_id_b = 0x01;
    device.set_adc_ccs_ids_x(Afe20408Definitions::AdcCcsId::_1, content);
    content.bits.ccs_id_a = 0x02;
    content.bits.ccs_id_b = 0x01;
    device.set_adc_ccs_ids_x(Afe20408Definitions::AdcCcsId::_2, content);
    content.bits.ccs_id_a = 0x05;
    content.bits.ccs_id_b = 0x01;
    device.set_adc_ccs_ids_x(Afe20408Definitions::AdcCcsId::_3, content);
  }

  {
    Afe20408Definitions::adc_ccs_cfg_0_t content;
    content.bits.ccs_start_index = 0x00;
    content.bits.ccs_stop_index = 0x07;

    device.set_adc_ccs_cfg_0(content);
  }

  // page 3

  {
    Afe20408Definitions::dac_current_t content;

    content.bits.daca0_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.daca1_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.daca2_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.daca3_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.dacb0_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.dacb1_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.dacb2_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;
    content.bits.dacb3_current = Afe20408Definitions::dac_current_t::DacCurrentOutput_mA::HIGH_CURRENT_MODE_120;

    device.set_dac_current(content);
  }

  {
    Afe20408Definitions::dac_cfg_t content;

    content.bits.clamp_sel_outa0 = Afe20408Definitions::ClampSelectOutA0::DACA1;
    content.bits.clamp_sel_outa2 = Afe20408Definitions::ClampSelectOutA2::DACA3;
    content.bits.clamp_sel_outb0 = Afe20408Definitions::ClampSelectOutB0::DACB1;
    content.bits.clamp_sel_outb2 = Afe20408Definitions::ClampSelectOutB2::DACB3;

    device.set_dac_cfg(content);
  }

  {
    Afe20408Definitions::dac_sync_cfg_t content;
    content.register_content = 0x0;  // ALL channels async and ignore broadcast

    device.set_dac_sync_cfg(content);
  }

  {
    Afe20408Definitions::dac_apd_en_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_dac_apd_en(content);
  }

  {
    Afe20408Definitions::apd_src_0_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_daca_apd_src_0(content);
  }

  {
    Afe20408Definitions::apd_src_1_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_daca_apd_src_1(content);
  }

  {
    Afe20408Definitions::apd_src_0_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_dacb_apd_src_0(content);
  }

  {
    Afe20408Definitions::apd_src_1_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_dacb_apd_src_1(content);
  }

  {
    Afe20408Definitions::apd_src_0_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_outa_apd_src_0(content);
  }

  {
    Afe20408Definitions::apd_src_1_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_outa_apd_src_1(content);
  }

  {
    Afe20408Definitions::apd_src_0_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_outb_apd_src_0(content);
  }

  {
    Afe20408Definitions::apd_src_1_t content;
    content.register_content = 0;  // Disable auto power down

    device.set_outb_apd_src_1(content);
  }

  {
    Afe20408Definitions::dac_limits_t content;
    content.bits.first_limit = Afe20408Definitions::dac_limits_t::DAC_LIMIT_0x1FFF;
    content.bits.second_limit = Afe20408Definitions::dac_limits_t::DAC_LIMIT_0x1FFF;

    device.set_adc_code_limit_a_0_1(content);
    device.set_adc_code_limit_a_2_3(content);
    device.set_adc_code_limit_b_0_1(content);
    device.set_adc_code_limit_b_2_3(content);
  }
  {
    Afe20408Definitions::channel_enable_t content;
    content.bits.dac_a_0 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_1 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_2 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_3 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_0 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_1 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_2 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_3 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;

    device.set_drive_0_enable(content);
  }

  {
    Afe20408Definitions::channel_enable_t content;
    content.bits.dac_a_0 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_1 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_2 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_a_3 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_0 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_1 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_2 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;
    content.bits.dac_b_3 = Afe20408Definitions::ChannelEnable::CHANNEL_ENABLED_FOR_DAC_CHANNEL;

    device.set_drive_1_enable(content);
  }

  // Setup global page

  {
    Afe20408Definitions::pwr_en_t content;
    content.bits.pdaca0 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdaca1 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdaca2 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdaca3 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdacb0 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdacb1 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdacb2 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.pdacb3 = Afe20408Definitions::EnableStatus::ENABLED;
    content.bits.paon = Afe20408Definitions::EnableStatus::ENABLED;

    device.set_pwr_en(content);
  }

  {
    Afe20408Definitions::drvenswen_t content;
    content.bits.drven_sw_en_daca0 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_daca1 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_daca2 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_daca3 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_dacb0 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_dacb1 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_dacb2 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_sw_en_dacb3 = Afe20408Definitions::SoftwareOperation::ENABLE;

    device.set_drven_sw_en(content);
  }

  {
    Afe20408Definitions::drven_t content;
    content.bits.drven_daca0 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_daca1 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_daca2 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_daca3 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_dacb0 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_dacb1 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_dacb2 = Afe20408Definitions::SoftwareOperation::ENABLE;
    content.bits.drven_dacb3 = Afe20408Definitions::SoftwareOperation::ENABLE;

    device.set_drven(content);
  }

  // Setup Dac voltage
  {
    static constexpr uint16_t _2V6 = 0x1776;  // output voltage 2.6V
    device.set_dac_buffer(Afe20408Definitions::DacChannel::daca0, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::daca1, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::daca2, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::daca3, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::dacb0, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::dacb1, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::dacb2, _2V6);
    device.set_dac_buffer(Afe20408Definitions::DacChannel::dacb3, _2V6);
  }
  // start adc
  {
    Afe20408Definitions::trigger_t content;
    content.bits.adc_trig = Afe20408Definitions::AdcTrigger::START_CONVERSIONS;
    content.bits.dac_trig = Afe20408Definitions::DacTrigger::INITIATE_TRANSFER_FROM_DAC_BUFFER_TO_ACTIVE;
    content.bits.alarm_latch_clr = Afe20408Definitions::AlarmLatchClear::CLEAR_ALARM_BITS;

    device.set_trigger(content);
  }

  while (true)
  {
    device.print_chip_id();
    mcm_led_1.update();
    mcm_led_2.update();
    mcm_led_3.update();

    device.set_gpio_data(Afe20408Definitions::GpioState::LOW);

    // Read out values from device

    uint16_t adc_code_0 = 0;
    uint16_t adc_code_1 = 0;
    uint16_t raw_adc_0 = 0;
    uint16_t raw_adc_1 = 0;
    uint16_t adc_temp = 0;
    if (!device.get_adc_sense_0(adc_code_0)     //
        || !device.get_adc_sense_1(adc_code_1)  //
        || !device.get_adc_adc_0(raw_adc_0)     //
        || !device.get_adc_adc_1(raw_adc_1)     //
        || !device.get_adc_tmp(adc_temp))
    {
      logger.info("failed to read!");
      continue;
    }

    // convert adc0 to float
    int32_t adc_mv = static_cast<float>(static_cast<int16_t>(raw_adc_0)) * 0.003125f * 1000.f;

    logger.info("Raw Sense 0: %6u,  Raw Sense 1: %6u", adc_code_0, adc_code_1);
    logger.info("raw adc   0: %6ld,  raw adc   1: %6ld", raw_adc_0, raw_adc_1);
    logger.info("adc_mv:      %ld", adc_mv);
    logger.info("Temp mC:     %lu", static_cast<uint32_t>(static_cast<float>(adc_temp) * 0.0078f * 1000.f));
    {
      Afe20408Definitions::alarm_status_0_t content;
      device.get_alarm_status_0(content);

      logger.info("sense0_alr %u\t sense1_alr %u \t adc0_alr %u \t adc1_alr %u \t tmp_alr %u",
                  content.bits.sense0_alr,
                  content.bits.sense1_alr,
                  content.bits.adc0_alr,
                  content.bits.adc1_alr,
                  content.bits.tmp_alr);
    }
    {
      Afe20408Definitions::alarm_status_1_t content;
      device.get_alarm_status_1(content);

      logger.info("vcca_alr %u\t vccb_alr % u\t vssa_alr % u\t vssb_alr % u\t thermerr_alr % u\t ref_alr % u\t alarmin_alr %u",
                  content.bits.vcca_alr,
                  content.bits.vccb_alr,
                  content.bits.vssa_alr,
                  content.bits.vssb_alr,
                  content.bits.thermerr_alr,
                  content.bits.ref_alr,
                  content.bits.alarmin_alr);
    }

    {
      Afe20408Definitions::pwr_status_0_t content;

      device.get_pwr_status_0(content);

      logger.info(
          "\r\n vddl_sts %u\r\n vssa_lowrange_sts %u\r\n vssa_midrange_sts %u\r\n vssa_highrange_sts %u\r\n vcca_sts %u\r\n "
          "vssb_lowrange_sts %u\r\n vssb_midrange_sts %u\r\n vssb_highrange_sts %u\r\n vccb_sts %u",

          content.bits.vddl_sts,
          content.bits.vssa_lowrange_sts,
          content.bits.vssa_midrange_sts,
          content.bits.vssa_highrange_sts,
          content.bits.vcca_sts,
          content.bits.vssb_lowrange_sts,
          content.bits.vssb_midrange_sts,
          content.bits.vssb_highrange_sts,
          content.bits.vccb_sts);
    }

    {
      Afe20408Definitions::pwr_status_1_t content;

      device.get_pwr_status_1(content);

      logger.info(
          "\r\npdaca0_sts: %u \t\r\npdaca1_sts: %u \t\r\npdaca2_sts: %u \t\r\npdaca3_sts: %u \t\r\npdacb0_sts: %u "
          "\t\r\npdacb1_sts: %u \t\r\npdacb2_sts: %u \t\r\npdacb3_sts: %u \t\r\ndrven_daca0_sts: %u \t\r\ndrven_daca1_sts: %u "
          "\t\r\ndrven_daca2_sts: %u \t\r\ndrven_daca3_sts: %u \t\r\ndrven_dacb0_sts: %u \t\r\ndrven_dacb1_sts: %u "
          "\t\r\ndrven_dacb2_sts: %u \t\r\ndrven_dacb3_sts: %u",
          content.bits.pdaca0_sts,
          content.bits.pdaca1_sts,
          content.bits.pdaca2_sts,
          content.bits.pdaca3_sts,
          content.bits.pdacb0_sts,
          content.bits.pdacb1_sts,
          content.bits.pdacb2_sts,
          content.bits.pdacb3_sts,
          content.bits.drven_daca0_sts,
          content.bits.drven_daca1_sts,
          content.bits.drven_daca2_sts,
          content.bits.drven_daca3_sts,
          content.bits.drven_dacb0_sts,
          content.bits.drven_dacb1_sts,
          content.bits.drven_dacb2_sts,
          content.bits.drven_dacb3_sts);
    }
    {
      Afe20408Definitions::gen_status_t content;
      device.get_general_status(content);

      logger.info(
          "\n\rgalr : %u \n\rgtmp_alr : %u \n\rpaon_sts : %u \n\rgalarmin_alr : %u \n\rgvcvss_alr : %u \n\rn_adc_ready : %u "
          "\n\rgsense_alr : %u \n\rgadc_alr : %u \n\rgtherm_alr : %u \n\rgref_alr : %u",
          content.bits.galr,
          content.bits.gtmp_alr,
          content.bits.paon_sts,
          content.bits.galarmin_alr,
          content.bits.gvcvss_alr,
          content.bits.n_adc_ready,
          content.bits.gsense_alr,
          content.bits.gadc_alr,
          content.bits.gtherm_alr,
          content.bits.gref_alr);
    }
  }

Here is the captured output

1970-01-01T00:00:05.241Z INFO     Afe20408.cc::print_chip_id()::331 ID : 0x2480
1970-01-01T00:00:05.242Z INFO     Afe20408Demo_main.cc::main()::395 Raw Sense 0:  20009,  Raw Sense 1:  14385
1970-01-01T00:00:05.243Z INFO     Afe20408Demo_main.cc::main()::396 raw adc   0:   7685,  raw adc   1:     60
1970-01-01T00:00:05.245Z INFO     Afe20408Demo_main.cc::main()::397 adc_mv:      24015
1970-01-01T00:00:05.246Z INFO     Afe20408Demo_main.cc::main()::398 Temp mC:     25740
1970-01-01T00:00:05.247Z INFO     Afe20408Demo_main.cc::main()::408 sense0_alr 0	 sense1_alr 0 	 adc0_alr 0 	 adc1_alr 0 	 tmp_alr 0
1970-01-01T00:00:05.249Z INFO     Afe20408Demo_main.cc::main()::421 vcca_alr 0	 vccb_alr 0	 vssa_alr 0	 vssb_alr 0	 thermerr_alr 0	 ref_alr 0	 alarmin_alr 0
1970-01-01T00:00:05.251Z INFO     Afe20408Demo_main.cc::main()::441 
 vddl_sts 1
 vssa_lowrange_sts 1
 vssa_midrange_sts 1
 vssa_highrange_sts 0
 vcca_sts 0
 vssb_lowrange_sts 1
 vssb_midrange_sts 1
 vssb_highrange_sts 0
 vccb_sts 0
1970-01-01T00:00:05.254Z INFO     Afe20408Demo_main.cc::main()::469 
pdaca0_sts: 0 	
pdaca1_sts: 0 	
pdaca2_sts: 0 	
pdaca3_sts: 0 	
pdacb0_sts: 0 	
pdacb1_sts: 0 	
pdacb2_sts: 0 	
pdacb3_sts: 0 	
drven_daca0_sts: 1 	
drven_daca1_sts: 1 	
drven_daca2_sts: 1 	
drven_daca3_sts: 1 	
drven_dacb0_sts: 1 	
drven_dacb1_sts: 1 	
drven_dacb2_sts: 1 	
drven_dacb3_sts: 1
1970-01-01T00:00:05.260Z INFO     Afe20408Demo_main.cc::main()::487 
galr : 0 
gtmp_alr : 0 
paon_sts : 0 
galarmin_alr : 0 
gvcvss_alr : 0 
n_adc_ready : 1 
gsense_alr : 0 
gadc_alr : 0 
gtherm_alr : 0 
gref_alr : 0
 

  • Adding note, that at program boot, the application performs a commanded SW reset and enables the read back bit 

  • Performed a bit of an experiment as well, with PAON DISABLED, I placed a 47 ohm resistor between the DAC outputs and GND, saw a ~58mA draw across all channels. When PAON was ENABLED, current draw for each channel became ~18mA despite the pdac register bits saying the dacs are in low power mode

  • Hi Forrest,

    You're correct in that the PAON should have no connection to the DACs. The PAON has its own alarm configuration settings, and does not affect the DAC outputs. I did a quick check with the EVM to confirm this: I enabled DACA0 and DACA1, confirmed their enabled status in the PWR_STATUS register, then enabled PAON. The PWR_STATUS register still shows the DACs as enabled, and the GEN_STATUS shows PAON enabled. 

    One thing I could see being an issue: correct me if I'm wrong, but it looks like you are setting up the DRVEN0/1_EN registers on page 4, and also the DRVEN_SW_EN register. I believe the software setting overrides the DRVEN hardware setting, but having all 3 of these registers enabled could cause some issues. If you intend to only use software DRVEN, you can remove the DRVEN0/1_enable setup. 

    I'm not able to replicate this issue, though. If you just do a reset, set the DACs and PAON to on, no other writes, do you see this issue?

    Thanks,
    Erin