Very long SPI Transfer on the BCM20737

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Anonymous
Not applicable

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 ?

Thanks,

Yves

0 Likes
1 Solution
Anonymous
Not applicable

Yves,

15 bytes is the HW limit.

Thanks

JT

View solution in original post

0 Likes
4 Replies
Anonymous
Not applicable

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.

Thanks,

Yves

0 Likes

We cannot provide the contents of the ROM.

The datasheets for the 20737 SoC and SIP module are here:

BCM20737S Bluetooth Low Energy SiP Module Technical Reference

BCM20737 SOC Data Sheet

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.

0 Likes
Anonymous
Not applicable

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.

0 Likes
Anonymous
Not applicable

Yves,

15 bytes is the HW limit.

Thanks

JT

0 Likes