Hi,
I'm using SDK5 V16 with the NRF52dk. I'm writing a SPI <-> BLE <-> USB I/O chain and am still kinda stumped by the SPI. All the examples work just fine, but when I look at the SPI packets with an oscilloscope I found some weird things:
1) CS is held low by the SPI Master for an extra 2.9+ ms? Is it possible to reduce this so that it's just low while the packet is being transmitted? In the photo below, I've sent the test string "000" so it should only be a 24-byte packet. The packet is sent (it's just blocked by the oscope cursor). Going through nrfmx_spim.c, it seems like the CS is handled through SW. This explains the delay, but the delay is pretty consistent ... almost too consistent for something handled in SW. Is there a more HW driven solution for the SPI available?
2) Regardless of the packet length, the SPI Master always clocks out an extra byte of 0's. This doesn't show up on the slave though. Is this expected? CS is still low and the clock is still toggling so why aren't these being picked up? There's a comment by 'fluent' on this thread where this problem is mentioned but that's for the nRF52832 and is not mentioned in the nRF52840 errata. Here is a photo of the same packet as sent above (only I've zoomed in on the packet lol). I'm expecting 24 bits, but, 32 clock pulses are sent through.
Thanks so much for your help.
- Ryan