On the ADV7625, when incorporating Blimp, I ran into a problem with the SPI bus. I have an ARM9 microcontroller running Linux. I compiled the Blimp OSD source and properly handled I2C and SPI writes and reads. There is no external SPI flash, so the device is an SPI slave.
When Blimp writes to the device (In this case, an IBOX_INSTR to index 0x2B with data: 0x0A 0xC0 0x7A 0xD3 0x80), I see a successful transaction:
MOSI: 0x07 0x2B 0x0A 0xC0 0x7A 0xD3 0x80
MISO: 0x00 0x00 0x00 0x00 0x00 0x00 0x00
But when the Blimp code reads back the data from the ADV7625, I get an incorrect value:
MOSI: 0x06 0x2B 0x00 0x00 0x00 0x00 0x00 0x00
MISO: 0x00 0x00 0x00 0xC0 0x7A 0xD3 0x80 0x80
So the read command gets back corrupt data (First byte 0x0A is lost, and last byte 0x80 is repeated twice):
Original: 0x0A 0xC0 0x7A 0xD3 0x80
Returned: 0xC0 0x7A 0xD3 0x80 0x80
This causes layout issues in Blimp code. I worked around this by using a shadow RAM in my SPI handler routine but wanted to understand if this is a known behaviour or if there is something I should be aware of.