DW1000 Based PCB TX Problem


I created my DW1000 driver.

First I applied my driver to DWM1000 (Module) based board. My DWM1000 based boards communicated each other successfully.
Now I’m trying my driver for DW1000 (chip) based board. I get TXFRS on the transmitter side, but i can’t RXDFR on the receive side. Receiver side is DWM1000 based PCB.

My init routines for module based PCB and chip based PCB are the same. In chip based PCB there is only one difference :

I read LDOTUNE_CAL value from OTP and, write this value to LDOTUNE register. Before this, I couldn’t get RFPLL Lock on RF_STATUS register. After this I can get RFPLL lock.
I set ONW_LLDO bit.(I dont use sleep and wake up procedure in application)
But still I can get TXFRS on transmitter and I can’t get RXDFR on receiver side.

I dont use TCXO.
Do you have any suggestions for hardware / software about these issues ?

King regards,

Hi Çağatay

With problems like this it is very useful to have a known good reference. In that way you can compare your software to functioning software on a known good system.

Then you can try your software on a known good hardware base.
If your software causes the problem and there is good operation with Decawave software then you can hunt down the problem in your software

Digi Key have a number of options


I hope this helps



Are you setting FS_XTALT correctly? When using the chip directly you need to measure and set the crystal tuning yourself, if this isn’t set then the frequency can be off and you’ll have trouble communicating.
For the modules you also need to set this but assuming the driver is correctly written it will be automatically reading the factory set value from the OTP and applying it automatically on startup.

Set one of the modules into RF test mode and find the spike on a spectrum analyser (you’ll need one that goes up to the centre frequency of the channel in use). Then put your board into RF test mode and adjust the crystal trim value until the two spikes are on top of each other. Save the correct value of tune into the OTP for that board.
Repeat for each board.

If you don’t have the equipment to do this then try a default guess of a value of 0x0F (middle of the range) and see if that works (don’t program this into the OTP). It doesn’t have to be perfect to get communications but the closer you are to the correct value the more reliable and longer range the link.

1 Like

Hi AndyA,
Thank you for your answer. We(with cagatay) have done this trimming yesterday and we see that we can not output at the exact center frequency. With the trim value being 0x1f, we can only have 6.4907, which is 1.1MHz far from channel 5 center freq. We have digged the forum but could not find a solution to this. We are using 0201 package capacitors and all the decouplings are as close as possible in our design.

Do you have any suggestion to overcome this?


What is the tolerance on the crystal you are using? Can you give a part number? Are the crystal caps the correct value for the part you’re using? Are they soldered correctly? If one wasn’t connected it would probably not work at all but could possibly work but run fast.

Andy, our crystal is ABM10-165-38.400MHZ-T3 . 10pF are 0201 package and soldered correctly.

You have a 10pF crystal. Assuming stray capacitances are ~2pF per pin then your capacitors should be 16pF not 10pF.
C1 = C2 = 2(crystal - stray)

If your caps are 40% too small the crystal is going to run fast.

Yes you are right, we have missed this very basic issue… We will change the capacitors (0201 package :s ) and observe the spectrum tomorrow. I will let you know. Thank you very much for your help.

We have made the modifications for the xtal and we can catch the center frequency. Now, the only issue remains is that the communication range is very small (4-5meters) in full power Tx. Think this is because an impedance problem.
Thanks for your help.

Hi Andy,

Older topic but I hope you still here or someone who could advise :slight_smile:

I think I have a similar issue as above like Çağatay.
I did my own board and used the same ABM 38.4MHz crystals but with 12pF capacitors. Some of my tags can’t communicate with the anchor. I figured out that those tag’s TX can’t be received by the anchor, however, same tags can receive.
I tried to tune FS_XTALT but no success. I could swap the capacitors but have no sufficient spectrum analyser as I’m using channel 5 and can only access a 4GHz specan.

My question: Can I set channel 1 (3.494GHz) temporarily and do the tuning with the capacitors? Setting back to CH5, will the DW1000 still maintain frequency accuracy?


I don’t see why that wouldn’t work. The crystal error is a function of the physical crystal not the selected frequency band, the correct tune for one band should be the correct tune for any band.

Thanks Andy,

I thought the same but was unsure.
Unfortunately I have no access to spectrum analysers higher than 4GHz being a one man only home made project.
I’ll give a try and give a feedback around end of next week.

Thanks again,