Replies: 19 comments 18 replies
-
Hmm, I don't see anything immediately obvious that could cause those bitshifts - how are receiving the signal? With another CC1101 or some SDR? |
Beta Was this translation helpful? Give feedback.
-
Looking around it seems there are a couple posts in a variety of forums regarding unexpected delays in the esp32-S2 spi transfers. I have a few things I can try related to that and I think I have an ESP32-S3 sitting around somewhere that I can throw in my socketed test board to try as well. |
Beta Was this translation helpful? Give feedback.
-
Tested with fresh Radiolib on my test board with QT py ESP32 S2 - Problem persists With all of the above I am going to go ahead and say I don't think it is my PCB, nor my pin selection. Both ESP32S2 and ESP32S3 are Adafruit QT py boards, perhaps an issue with power/noise? Not quite sure how I could check/mitigate. MOSI is right next to the 3v pin. I will test a full size feather board...but I really need something small. I suppose it could also be an issue with the ebyte cc1101's (two different ones were tested) |
Beta Was this translation helpful? Give feedback.
-
What board is that? I am getting to the point where I just want something that works |
Beta Was this translation helpful? Give feedback.
-
Looks like @phretor has implemented FIFO refills in RFquack's fork of Radiolib. He is doing it by polling the TX_BYTES register I find this piece interesting as well in https://github.com/rfquack/RFQuack/blob/master/src/radio/RFQCC1101.h |
Beta Was this translation helpful? Give feedback.
-
At this point I would be happy to send you hardware to play with. Or if you
happen to be in Germany, I will be in the country in October.
…On Mon, Jul 1, 2024, 11:57 AM Jan Gromeš ***@***.***> wrote:
My development setup is a Raspberry Pi 3B+ with a bunch of jumper cables
connecting its GPIO header to a breadboard, on which I have the various RF
modules, CC1101 in this case. It's a rather simple setup, with zero care
taken to isolate signals and power, so I would be sceptical about noise or
cross-talk being the root cause. But I admit it is slowly getting into
hair-pulling territory ...
—
Reply to this email directly, view it on GitHub
<#1138 (reply in thread)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AULD4G4IINJTVVTCWT454STZKF36BAVCNFSM6AAAAABJ23RB2SVHI2DSMVQWIX3LMV43SRDJONRXK43TNFXW4Q3PNVWWK3TUHM4TSMRXGMZTA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
After some tweaking in URH 3rd signal looks a lot better but there is still an issue there |
Beta Was this translation helpful? Give feedback.
-
Seems like a significant improvement even if still not perfect. The only major difference I can see between what RFQuack did and my OG one is RFquack left this and I did not use that above. Instead I went with the IRQ for FIFO thr |
Beta Was this translation helpful? Give feedback.
-
Also notice with the 3rd signal with the issue 3 bytes missing and: |
Beta Was this translation helpful? Give feedback.
-
Hardware Tested:
Adafruit QT Py ESP32-S3
Adafruit Feather ESP32-S3
All ESP32's used in socketed boards (also tested in breadboards with other pinouts) one was directly soldered into the PCB with the CC1101. All ESP32's exhibited the exact same behavior. Radiolib SPI Settings: 2000000, MSB, SPI_MODE0 (Included build opt attached) Test sketch and CC1101 files attached Decode Settings: Hardware:
|
Beta Was this translation helpful? Give feedback.
-
Maybe byte alignment is playing a role. I might play around with packing. |
Beta Was this translation helpful? Give feedback.
-
I realized how stupid the above was. If it was byte alignment none of them would come out correctly. This seems to be working well though, every single one is perfect. I used FSTXON then checked the MARCSTATE until it left 0x12 before filling the fifo and strobing tx. At the end of the signal I am repeatedly checking MARCSTATE until it enters Idle (end check maybe not needed, I just want to be sure the fifo is empty) Need to do more long term testing, but the above and another test I did both came out great, and the bitshift I was seeing was 1 in 4 typically. |
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
Still can't leave this alone 🤣 . Think I found some interesting tidbits. Here are the ones I can currently confirm:
Need to do some more testing tomorrow, but here are my suspicions:
Based on that, and page 58 Section 22.1 which states "The VCO characteristics vary with temperature
|
Beta Was this translation helpful? Give feedback.
-
I have implemented quite a bit of the calibrations and checks the datasheet supports if you would like a PR |
Beta Was this translation helpful? Give feedback.
-
Mine was a power issue. Put on a 100 uf cap and tried 40 straight transmissions, and a 6.5Mhz SPI speed with a gap between transmissions, no errors. I needed a gap because it is an electrolytic capacitor, and as a result isn't super fast to refill. So looks like if I want to do what I want to do I will need to revise my PCB to include some power smoothing |
Beta Was this translation helpful? Give feedback.
-
0.1uf (100nf) ceramic cap for filtering/droop is working very well. Still need to keep testing as ESP32-S2 is running at 160Mhz and I have SPI at 4Mhz. Will keep working up till it gets unstable, and I might also try a slightly bigger but still small ceramic cap (maybe 0.15uf or 0.22uf). Hardware is not my favorite, probably because I don't know much if anything about it. Still learning experience. |
Beta Was this translation helpful? Give feedback.
-
Still more testing going on + moving. Got a couple more slightly different variation PCBs coming. A variety of caps, a through test suit designed with a python frontend for consistency and things are narrowing down. I expect I will upstream by the end of Dec at the latest. If someone is familiar with DMA that would be the effective/efficient way to fill/refill the FIFO |
Beta Was this translation helpful? Give feedback.
-
I'll leave this one open and contain my FIFO madness to it.
Below you will find a sketch that is nearly there with the following settings:
5 Mhz SPI
God mode (only because I wanted to leave CC1101.cpp / .h alone while testing but still had to bypass the 63 byte limit).
Notes: The below usually returns between 94 bytes and 98.5 bytes when rxed. I had attempted to use ISR's for both FIFO low and FIFO full, but we care more about empty space in the FIFO than if it is full or not, and this method seems most consistent with txed signals.
If you RX some of these signals you will get some that are perfect "AAAAAAAAA" and some that bitshift "AAAAA55555." I don't think it is the FIFO running empty, but who knows.
I apologize for the ping @jgromes, but I think with your additional insight we might be able to get this across the finish line, even if it is a sliding scale of amount of bytes able to txed (eg higher baud lower max bytes).
Beta Was this translation helpful? Give feedback.
All reactions