I need to perform SPI transfers of more than 16 bytes. As there is no DMA available for that, is there some reliable way to do that on that device. Note that I only uses the MOSI signal. I don't care about the clock or the input signals, but there could be no interruption (almost none) in the data stream. Can it be done ?
Can I simply hook an ISR and perform multiple block transfers without disrupting the BLE stack ? If so, how long can I stay in the ISR before breaking something ?
Solved! Go to Solution.
I have also observed that there is a pause in the data after about 14 bytes. The transmit buffer is supposed to be 16 bytes deep. In that case, what causes that pause ?
Also, it is possible to get access to a "real" datasheet/user guide for the device and/or the content of the ROM. It is probably because I am used to work with TI devices and have access to all the information. I find it frustrating to always have to guess why things are not working as expected.
We cannot provide the contents of the ROM.
The datasheets for the 20737 SoC and SIP module are here:
Within the SDK, please refer to the /WICED-Smart-SDK/Apps/spi_comm_master and /WICED-Smart-SDK/Apps/spi_comm_slave examples as these are tested and have been designed to work with one another.
SPI wise, the device works. My issue is that I am using the SPI port to implement a kind on PWM one-wire protocol. For this, it is important that the transmission be continuous without interruption as the time between each transition define that data being transmitted. I was expecting a device with a 16 bytes buffer to be able to send 15 bytes without interruption.
Your datasheets/API/documentation describe what you do in in the ROM or how does you peripheral really work therefore I have no way to determine what could be wrong.
That is what I meant by real user guides. You ROM is a black box and the peripherals also is therefore there is no way to debug by ourselves or be creative about what can be done with the device.