Communication lost after Wakeup

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]Hello all,[/font][/size][/color]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]I have some issues and I would like to share with you…[/font][/size][/color]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]My standart ranging code is working well. It works all fine and stable.My problem is about sleeping. [/font][/size][/color]

[code][color=#000000]
uint8_t aon_wcfg[/color][color=#666600][[/color][color=#000000]LEN_AON_WCFG[/color][color=#666600]];[/color][color=#000000]
memset[/color][color=#666600]([/color][color=#000000]aon_wcfg[/color][color=#666600],[/color][color=#000000] [/color][color=#006666]0[/color][color=#666600],[/color][color=#000000] LEN_AON_WCFG[/color][color=#666600]);[/color][color=#000000]
dwSpiRead[/color][color=#666600]([/color][color=#000000]dev[/color][color=#666600],[/color][color=#000000] AON[/color][color=#666600],[/color][color=#000000] AON_WCFG_SUB[/color][color=#666600],[/color][color=#000000] aon_wcfg[/color][color=#666600],[/color][color=#000000]LEN_AON_WCFG[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]//memset(aon_wcfg, 0, LEN_AON_WCFG);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_wcfg[/color][color=#666600],[/color][color=#000000] LEN_AON_WCFG[/color][color=#666600],[/color][color=#000000] ONW_LDC_BIT[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]//setBit(aon_wcfg, LEN_AON_WCFG, ONW_L64P, true);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_wcfg[/color][color=#666600],[/color][color=#000000] LEN_AON_WCFG[/color][color=#666600],[/color][color=#000000] PRES_SLEEP[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_wcfg[/color][color=#666600],[/color][color=#000000] LEN_AON_WCFG[/color][color=#666600],[/color][color=#000000] ONW_LLDE[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]//setBit(aon_wcfg, LEN_AON_WCFG, ONW_LDD0_BIT, true);[/color][color=#000000]
dwSpiWrite[/color][color=#666600]([/color][color=#000000]dev[/color][color=#666600],[/color][color=#000000] AON[/color][color=#666600],[/color][color=#000000] AON_WCFG_SUB[/color][color=#666600],[/color][color=#000000] aon_wcfg[/color][color=#666600],[/color][color=#000000] LEN_AON_WCFG[/color][color=#666600]);[/color][color=#000000]

[/color][color=#880000]// uint8_t pmsc_ctrl1[LEN_PMSC_CTRL1];[/color][color=#000000]
[/color][color=#880000]// memset(pmsc_ctrl1, 0, LEN_PMSC_CTRL1);[/color][color=#000000]
[/color][color=#880000]// dwSpiRead(dev, PMSC, PMSC_CTRL1_SUB, pmsc_ctrl1, LEN_PMSC_CTRL1);[/color][color=#000000]
[/color][color=#880000]// setBit(pmsc_ctrl1, LEN_PMSC_CTRL1, ATXSLP_BIT, false);[/color][color=#000000]
[/color][color=#880000]// setBit(pmsc_ctrl1, LEN_PMSC_CTRL1, ARXSLP_BIT, false);[/color][color=#000000]
[/color][color=#880000]// dwSpiWrite(dev, PMSC, PMSC_CTRL1_SUB, pmsc_ctrl1, LEN_PMSC_CTRL1);[/color][color=#000000]

uint8_t aon_cfg0[/color][color=#666600][[/color][color=#000000]LEN_AON_CFG0[/color][color=#666600]];[/color][color=#000000]
memset[/color][color=#666600]([/color][color=#000000]aon_cfg0[/color][color=#666600],[/color][color=#000000] [/color][color=#006666]0[/color][color=#666600],[/color][color=#000000] LEN_AON_CFG0[/color][color=#666600]);[/color][color=#000000]

[/color][color=#880000]// dwSpiRead(dev, AON, AON_CFG0_SUB, aon_cfg0, LEN_AON_CFG0);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_cfg0[/color][color=#666600],[/color][color=#000000] LEN_AON_CFG0[/color][color=#666600],[/color][color=#000000] WAKE_SPI_BIT[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_cfg0[/color][color=#666600],[/color][color=#000000] LEN_AON_CFG0[/color][color=#666600],[/color][color=#000000] WAKE_PIN_BIT[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]false[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]// setBit(aon_cfg0, LEN_AON_CFG0, WAKE_CNT_BIT, false);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_cfg0[/color][color=#666600],[/color][color=#000000] LEN_AON_CFG0[/color][color=#666600],[/color][color=#000000] SLEEP_EN_BIT[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
dwSpiWrite[/color][color=#666600]([/color][color=#000000]dev[/color][color=#666600],[/color][color=#000000] AON[/color][color=#666600],[/color][color=#000000] AON_CFG0_SUB[/color][color=#666600],[/color][color=#000000] aon_cfg0[/color][color=#666600],[/color][color=#000000] LEN_AON_CFG0[/color][color=#666600]);[/color][color=#000000]

uint8_t aon_ctrl[/color][color=#666600][[/color][color=#000000]LEN_AON_CTRL[/color][color=#666600]];[/color][color=#000000]
memset[/color][color=#666600]([/color][color=#000000]aon_ctrl[/color][color=#666600],[/color][color=#000000] [/color][color=#006666]0[/color][color=#666600],[/color][color=#000000] LEN_AON_CTRL[/color][color=#666600]);[/color][color=#000000]
dwSpiWrite[/color][color=#666600]([/color][color=#000000]dev[/color][color=#666600],[/color][color=#000000] AON[/color][color=#666600],[/color][color=#000000] AON_CTRL_SUB[/color][color=#666600],[/color][color=#000000] aon_ctrl[/color][color=#666600],[/color][color=#000000] LEN_AON_CTRL[/color][color=#666600]);[/color][color=#000000]

memset[/color][color=#666600]([/color][color=#000000]aon_ctrl[/color][color=#666600],[/color][color=#000000] [/color][color=#006666]0[/color][color=#666600],[/color][color=#000000] LEN_AON_CTRL[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]//setBit(aon_ctrl, LEN_AON_CTRL, UPL_CFG_BIT, false);[/color][color=#000000]
setBit[/color][color=#666600]([/color][color=#000000]aon_ctrl[/color][color=#666600],[/color][color=#000000] LEN_AON_CTRL[/color][color=#666600],[/color][color=#000000] SAVE_BIT[/color][color=#666600],[/color][color=#000000] [/color][color=#000088]true[/color][color=#666600]);[/color][color=#000000]
[/color][color=#880000]//setBit(aon_ctrl, LEN_AON_CTRL, RESTORE_BIT, true);[/color][color=#000000]
dwSpiWrite[/color][color=#666600]([/color][color=#000000]dev[/color][color=#666600],[/color][color=#000000] AON[/color][color=#666600],[/color][color=#000000] AON_CTRL_SUB[/color][color=#666600],[/color][color=#000000] aon_ctrl[/color][color=#666600],[/color][color=#000000] LEN_AON_CTRL[/color][color=#666600]);[/color][/code]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]When I put device into sleep mode power consumtion drops. And I call wakeup with spi chip select ( I tried both setting the cs gpio and sending blank buffer to spi to wake up) I can communicate with device properly.[/font][/size][/color]
[color=#222222][size=small][font=Arial, Helvetica, sans-serif]But if I try to send data tx interrupt never fired. I can’t receive or send data anyway. Only line that i comment is sleep function that I shared above and code works. [/font][/size][/color]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]I hope i can express my problem clearly.[/font][/size][/color]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]Thank you , [/font][/size][/color]

[color=#222222][size=small][font=Arial, Helvetica, sans-serif]Have a nice day…[/font][/size][/color]

Hi,
Could I ask you:

Please see our example code which includes examples of sleep and waking up.

Check the IC user manual chapter 8.1 (application information) . There you’ll see the external pull-down resistor required.

Lastly, any of the interrupts have to cleared before the DW1000 can enter sleep. If the interrupt line is high the device will not enter sleep. See also chapter 2.2.2 Interrupts in the IC user manual

But first check the sample codes. That might well fix the issue
/L

Hi,

Could you please let me know where is the example?!

Hi,
For example code see website: https://www.decawave.com/software/
and look for the 4th one down: DW1000 Application Programming Interface with STM32F10x Application examples and choose version 2.14

/leo

1 Like