My blackfin is an SPI slave which must receive high speed half duplex variable length messages over the SPI bus on an existing system to replace / upgrade an obsolete ASIC part in existing deployed equipment.
In order to ensure the blackfin receives/transmits all data I am using DMA (the blackfin must continue performing continuous processing in a main loop and cannot predict when it will receive a new SPI message). What I am struggling to do is get an interrupt on on the reception of message, i.e. at the end of a muti-byte transfer when the chip select becomes de-asserted.
I am unable to use the DMA completion interrupt as the blackfin does not know how long the message that it will receive is.
The blackfin must decode and act on the received message in about 1us and the continuous processing is large and time consuming so the code cannot poll fast enough to meet this timing constraint.
The SPI bus is running at >10MHz which would consume far too much processor time to handle the data a vyte at a time (hence the DMA reception)
I can receive the data fine; I just can't work out how to get this interrupt to be able to process it.
All analog devices documentation that I can find only describes the byte at a time / pre-determined length DMA method of operation to get a suitable interrupt hook which is not applicable in my case.
If anyone knows how I can achieve my goal / knows it is impossible then I would be very grateful for your insights; if I am unable to do it with the blackfin then I'll have to move across to a TI part.