I can’t change the pulse shape of QM33120W

Greetings,

I am running QM33120W chip using Qorvo_Nearby_Interaction software package v.3.1.
In the above environment, I am unable to change the pulse shape by putting a value of 0 or 1 in the dwt_set_alternative_pulse_shape function described in nRF52840DK.c. Do I need to change any other settings to enable the dwt_set_alternative_pulse_shape function?

Thank you in advance.

Hi @Fumiya ,

How can you be sure that you’re not able to change the pulse shape ?
Did you check the pulse shape in spectrum analyser?
In Qorvo_Nearby_Interaction software package v.3.1, dwt_set_alternative_pulse_shape(1); is called in nRF52840DK.c to set the alternative pulse shape.
If you replace this by dwt_set_alternative_pulse_shape(0) this should set the normal pulse shape.

Hi @Wassim_Qorvo ,
Thank you for your reply.

I observed the spectrum using a spectrum analyzer and the spectrum did not change with either the dwt_set_alternative_pulse_shape(0) or dwt_set_alternative_pulse_shape(1) settings in Qorvo_Nearby_Interaction software.
I also added the dwt_set_alternative_pulse_shape function to twr_demo software and observed the spectrum with a spectrum analyzer. Under these conditions, when dwt_set_alternative_pulse_shape(0) was set to dwt_set_alternative_pulse_shape(1), I confirmed that the shape of the spectrum changed.
Therefore, I think that there is no problem with the measurement environment and hardware.

Could you please tell me if you know why the pulse shape cannot be changed in Qorvo_Nearby_Interaction software?

Best regards.

Hi @Fumiya ,

I think this configuration is getting lost after the device went to sleep.
In dw3000_lp_mcu.c, can you add this line in state DW3000_OP_STATE_IDLE_RC:

    uint8_t setAltPulseShape = 1; //new line

    hal_uwb.disableIRQ();

    /* calibration of QM33xxx */
    ops->ioctl(dw, DWT_RESTORECONFIG, 0, NULL);

    /* need to re-set alt pulse shape after deepsleep */
    ops->ioctl(dw, DWT_SET_ALT_PULSE_SHAPE, 0, (void *)&setAltPulseShape); //new line

    /* workaround to drop the unwanted IRQ */
    ops->ioctl(dw, DWT_READSYSSTATUSLO, 0, (void *)&bitmask);
    ops->ioctl(dw, DWT_WRITESYSSTATUSLO, 0, (void *)&bitmask);

    hal_uwb.enableIRQ();

Hope it helps.

Hi @Wassim_Qorvo ,

Thank you for your help.
By adding the above source code, I have confirmed that the dwt_set_alternative_pulse_shape function works and changes the shape of the spectrum.

Best regards.