ipatovPeak is strange

Hi everyone!
I am a newbie in uwb, and I have a question about preamble. In the manual, I learned that I can read ipatovPeak through dwt_readdiagnostics, which represents the CIR value of the preamble. In my understanding, if the index of the received data packet is different from that of the receiver’s preamble, then this value should be very small (or significantly lower than the reading result received with the same index). For example, if the receiver’s preamble index is 9, and the sender uses a preamble with an index of 10, then ipotavPeak should be significantly smaller than the case where the receiver also uses 10, but the value I read does not show this at present. Does anyone know why? Or is there something wrong with my understanding? Are there more ways to determine whether the received preamble matches?
Thanks!
Chen

Are you sure the results you’re measuring are correct and you are testing what you think you’re testing?

Because you’re correct, you should see very significant differences between being on the same preamble codes and being on different ones. The only thing that seems wrong with your expectations is that I wouldn’t expect you to receive anything at all.
Generally if the receiver and transmitter are set to different preamble codes then you wouldn’t expect the receiver to detect the packet at all and either remain in receive or time out depending on the settings used.
There will be some cross talk between preamble codes (and also between frequency bands for that matter) if the power levels are high enough but unless you’re running at very short separation distances and high powers you shouldn’t see this.

Hi Andy!
Thanks for reply! My code is like:

dwt_rxdiag_t dia;
static uint32_t status_reg = 0;
void setup(){
......//some config before Rx
 dwt_configciadiag(1);
}
void loop(){
  dwt_setpreambledetecttimeout(0);                        
  dwt_setrxtimeout(0); 
  dwt_rxenable(DWT_START_RX_IMMEDIATE);
//pull until receive a good fream
  while (!((status_reg = dwt_read32bitreg(SYS_STATUS_ID)) & (SYS_STATUS_RXFR_BIT_MASK | SYS_STATUS_ALL_RX_TO | SYS_STATUS_ALL_RX_ERR)))
	    	    { 
                   printf("Not Good~~~~~\n");
                   printf("status_reg is:0x%08X,   & is:%d\n",status_reg,(status_reg&DWT_INT_RXFR_BIT_MASK));
          };
  dwt_readdiagnostics(&dia);
  printf("ipatovPeak: %u\n",dia.ipatovPeak);
}

I dont know where is wrong, could you please give me some advise?