Post Go back to editing

Cannot switch from sinc5 filter to wideband filter

Category: Software
Product Number: AD7768

Dear community,

I am having real trouble trying to switch from the sinc5 filter to the wideband filter on the AD7768-8. Firstly I want to confirm that the code below works perfectly when using the sinc5 filter (CHANNEL_MODE_B_ADDR ((uint8_t)0X02); the value of 0b00001000;), so it is unlikely a coding issue but rather an instruction/protocol issue.

  • I can confirm that I am writing to the channel mode register correctly as I am reading back the correct values.
    • I am writing to: CHANNEL_MODE_B_ADDR ((uint8_t)0X02); the value of 0b00000000; 
      • This should set the filter to the wideband filter and the decimation to be x32 according to the datasheet. I can confirm that reading this register back does indeed give me 0b00000000.
    • I can also confirm that I am using the right channel mode (channel mode B). i.e. register 0x03 is set to 0b11111111.
  • In terms of the electrical connections
    • SYNC_OUT is directly connected to SYNC_IN. 
    • The START pin is connected to the micro (PSoC 6) and sends a 'start' signal after setting the register (above):
      • Cy_GPIO_Pin_FastInit(ADC_START_PORT, ADC_START_PIN, CY_GPIO_DM_STRONG, 1, HSIOM_SEL_GPIO); // this drives it out: HSIOM_SEL_GPIO
        Cy_SysLib_Delay(5); 
        Cy_GPIO_Write(ADC_START_PORT, ADC_START_PIN, 0);
        Cy_SysLib_Delay(5);
        Cy_GPIO_Write(ADC_START_PORT, ADC_START_PIN, 1);
      • I can confirm that I can see this signal on the scope and is being send correctly to the ADC
  • I have also tried to 'sync' the filter change using the SPI method using the following code
    • // First reset the ADC
      ctrl_buffer.binaryValue = DATA_CTRL_SYNC_0;
      tx_buffer[0] = (ctrl_buffer.address << 8) | ctrl_buffer.binaryValue;
      adc_spi_writeburst(&tx_buffer[0], 1);
      Cy_SysLib_DelayUs(5000);

      ctrl_buffer.binaryValue = DATA_CTRL_SYNC_1;
      tx_buffer[0] = (ctrl_buffer.address << 8) | ctrl_buffer.binaryValue;
      adc_spi_writeburst(&tx_buffer[0], 1);

    • where:
      • #define DATA_CTRL_ADDR ((uint8_t)0x06); // DATA CONTROL: SOFT RESET, SYNC, AND SINGLE SHOT CONTROL REGISTER
      • #define DATA_CTRL_SYNC_0 0b00000000; // First send this for SYNC
        #define DATA_CTRL_SYNC_1 0b10000000; // Then send this for SYNC

Unfortunately, I do not get any data out on the DOUT0 and DOUT1 pins when doing this while I get the data clocking out perfectly when the sinc5 filter is selected. Any advice would be much appreciated.

Parents
  • Hi  ,

    Can you please try to assign the channels to Channel Mode A instead of B? Based on the datasheet, in the Channel Modes section below, at least one channel must be assigned to Channel Mode A.

    "On the AD7768, consider Channel Mode A as the primary group. In this respect, it is recommended that there always be at least one channel assigned to Channel Mode A. If all eight channels of the AD7768 are assigned to Channel Mode B, conversion data is not output on the data interface for any of the channels."

    Please try this and let me know how it goes.

    Thanks,
    Janine

  • Hi Janine,

    Thank you very much, this was indeed the issue! Putting the wideband filter settings on channel mode A and setting all the channels to use channel mode A settings does indeed work!

    Thanks for the swift response too!

Reply Children
No Data