We have a system in which we need to combine single an double buffer modes of operation and we have problems in the following situation:
- We are in double buffer mode and receive an even number of packets, ICRBP ends up with value 1.
- We go to single buffer mode and receive packets with ICRBP=HSRBP=1 without problems.
- We go back to double buffer mode (starting with ICRBP=HSRBP=1), and then we are not able to receive the first packet.
If we receive an odd number of packets in double buffer modes, and then we go back from single to double buffer mode with ICRBP=0, it works fine.
The problem is when activating the double buffer coming from a status where ICRBP=1.
Is this because dobule buffer mode is not designed to start from ICRBP=1?
Do you know how to solve this?
Can you expand more on how you switch between the modes, do you switch when the DW is in IDLE? Do you have a simple script that would show this issue, or a modification of DW’s double buffer simple example that would show this issue?
All the switching between the modes is done in IDLE.
As you can see in the attached figure, it only happens when we receive an even number of packets while in double buffer mode.
The packets that are crossed out are actually received by the DW, but we do not get any interrupt.
We always sync the HSRBP, so that is not the issue.
Also we tried forcing a toggle of the HSRBP before the second Double Buffer ON section, but it did not help.
At the moment we cannot provide code, since it is for a critical market, but if you have problems understanding/reproducing the issue we can try to do it with an example.
We have the same problem. Do you know how to solve this?