LSPI Transfer fail with Assert for non 32 bit multiples

cancel
Showing results for 
Search instead for 
Did you mean: 

LSPI Transfer fail with Assert for non 32 bit multiples

493 Views
mnewton
Contributor I

Trying to upgrade a previous MC33664 driver up to the latest ARMV2.2 S32DS tools and the latest RTM 3.03 SDK.

So far I have found that the older BCC library relies on 5,10 or 15 byte packets etc - all multiple of 5.

However there has always been code in the LSPI Master driver in the SDK that checks the frame is a multiple of the bits per frame value  - but the latest code in the SDK also rounds the bytes to multiples of 4 - so then when you come to a do a transfer it checks your transfer is a multiple of frame size, this then fails - because it says multiples of 40 bits aren't multiples of 8 bytes - having itself having rounded the five up to 8 with the cryptic comment as below -

    /* Due to some limitations all frames bigger than 4 bytes/frame must be composed only from 4 bytes chunks. */
    if (lpspiState->bytesPerFrame > 4U)
    {
        lpspiState->bytesPerFrame = (((lpspiState->bytesPerFrame - 1U) / 4U) + 1U) * 4U;
    }

Is there a preferred fix for this - still awaiting release / permission to download for the latest 2.1 BCC driver.

0 Kudos
1 Reply

383 Views
razva_tilimpea
NXP Employee
NXP Employee

Hi Mike,

When you want to send frames larger than 32 bits thinks are more complicated an not straight forward. 

You have 2 options: use continuous mode  where you can glue multiple frames by handling CS

                                 configure larger frame size in hardware, but your receive/transmit buffer must be multiple of 32.

I think you are on second option. I expected some problems in understanding how driver should be used in this case and our documentation contains some explanations. You can check our full documentation by opening doxygen file from source code folder or by checking HTML documentation.

pastedImage_1.png

As a conclusion if your case you have to align your buffers to 4 bytes and to set that parameter to 8 or multiple of 8.

Best regards,

Razvan

0 Kudos