SPI slave not receiving data

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

cross mob
lock attach
Attachments are accessible only for community members.
HeGi_2497906
Level 5
Level 5
100 replies posted 50 replies posted 25 replies posted

I have an SPI slave set up on a CY8C4125AZI-473 and I am seeing some very odd behavior in both the setup controls and the SPI is not sending or receiving data.  The project bundle is attached.  When configuring, the dialog defaults to the one internal interrupt unchangeable, and I do receive the interrupt, but never receive any data, nor send any data. 

The scope plot show the transmission, from a CYBLE-212006-01, 16bytes, 0,0, active low CS.  We have also tried active high, but no change.

Sending an array of A5 5A, which should be echoed back by hard code, I am not trying to hand data off, the transmit should be getting the same array, here is the call that loads the TX buffer:

SPIS_SpiUartPutArray(Readings,CONTROL_DATA_LEN);

RigolDS12.png

We have scoped the MOSI, CLOCK and SS to the pins on the device and the signals are present.

There is also a second SPI in the design, which works, but generates an error during build, that must be handled, but it should not be there.  It is a Master that talks to a dedicated peripheral, when configuring that SPI, the dialog allows no interrupts:

But when you do a build, these instructions are in the generated source code, and have to be commented out on each clean and build

Map,.\CortexM0\ARM_GCC_541\Debug/EPR0226_Power_Control.map -T Generated_Source\PSoC4\cm0gcc.ld -specs=nano.specs -Wl,--gc-sections -g -ffunction-sections -O0 -ffat-lto-objects -Wl,--end-group

.\CortexM0\ARM_GCC_541\Debug\EPR0226_Power_Control.a(SPI_TLE_SPI_UART.o): In function `SPI_TLE_SpiUartClearRxBuffer':

C:\Users\Administrator\Documents\PSoC Creator\smartrvpanel\EPR0226_Power_Control.cydsn/Generated_Source\PSoC4/SPI_TLE_SPI_UART.c:205: undefined reference to `SPI_TLE_DisableInt'

C:\Users\Administrator\Documents\PSoC Creator\smartrvpanel\EPR0226_Power_Control.cydsn/Generated_Source\PSoC4/SPI_TLE_SPI_UART.c:224: undefined reference to `SPI_TLE_EnableInt'

.\CortexM0\ARM_GCC_541\Debug\EPR0226_Power_Control.a(SPI_TLE_SPI_UART.o): In function `SPI_TLE_SpiUartClearTxBuffer':

C:\Users\Administrator\Documents\PSoC Creator\smartrvpanel\EPR0226_Power_Control.cydsn/Generated_Source\PSoC4/SPI_TLE_SPI_UART.c:422: undefined reference to `SPI_TLE_DisableInt'

C:\Users\Administrator\Documents\PSoC Creator\smartrvpanel\EPR0226_Power_Control.cydsn/Generated_Source\PSoC4/SPI_TLE_SPI_UART.c:432: undefined reference to `SPI_TLE_EnableInt'

0 Likes
1 Solution

Thanks for the reply, I went checking and found that the first transaction stopped after 8 bytes, my SW implementation is not allowing my 16 byte buffer.  I reduced the package to 8 bytes, and now get successful communications.  Which device can I upgrade into to get a full 16 byte buffer?

H

View solution in original post

8 Replies