I think this bug is nothing but new, just see viewtopic.php?f=7&t=928
I am using DSPI.h for replacing the SD2Card.cpp bit bang routines. I am not really sure whether or not I am using interrupt driven I/O. For example, to receive I just do data = spi.transfer(0xFF);
In any case, another workaround I have found that works for me so far is to move the vectors conflict to another peripheral in my case I am using Serial, Serial1 and Serial2 so I move DSPI3 vectors which conflicts with SPI4 which indeed points to UART2 vectors, I move to I2C2 vector.
Something like this on Board_Defs.h line 372.
#define _DSPI2_BASE _CAN1_BASE_ADDRESS//_SPI3_BASE_ADDRESS
#define _DSPI2_ERR_IRQ _CAN1_IRQ//_SPI3_ERR_IRQ
#define _DSPI2_RX_IRQ _CAN1_IRQ//_SPI3_RX_IRQ
#define _DSPI2_TX_IRQ _CAN1_IRQ//_SPI3_TX_IRQ
#define _DSPI2_VECTOR _CAN_1_VECTOR//_SPI_3_VECTOR
#define _DSPI2_IPL_ISR _CAN1_IPL_ISR//_SPI3_IPL_ISR
#define _DSPI2_IPL _CAN1_IPL_IPC//_SPI3_IPL_IPC
#define _DSPI2_SPL _CAN1_SPL_IPC //_SPI3_SPL_IPC
#define _DSPI3_BASE _I2C2A_BASE_ADDRESS //_SPI4_BASE_ADDRESS
#define _DSPI3_ERR_IRQ _I2C2A_ERR_IRQ //_SPI4_ERR_IRQ
#define _DSPI3_RX_IRQ _I2C2A_RX_IRQ //_SPI4_RX_IRQ
#define _DSPI3_TX_IRQ _I2C2A_TX_IRQ //_SPI4_TX_IRQ
#define _DSPI3_VECTOR _I2C_2_VECTOR //_SPI_4_VECTOR
#define _DSPI3_IPL_ISR _I2C2_IPL_ISR //_SPI4_IPL_ISR
#define _DSPI3_IPL _I2C2_IPL_IPC //_SPI4_IPL_IPC
#define _DSPI3_SPL _I2C2_SPL_IPC //_SPI4_SPL_IPC
I am not sure whether or not DSPI3 I/O interrupt works this way, since I am just using DSPI0.
I have some questions about this.
1. Can you explain me how to use interrupt driven I/O for DSPI.
2. Could you tell me if my workaround have some problem.
Thank you for reading,