Other Parts Discussed in Thread: C2000WARE
I adapted the fsi_ex8_ext_p2pconnetion_Xx projects to work on our custom board containing two TMS320F28388D's. I want to use the FSI for inter-chip coms. From the tx chip, I send a known fixed pattern (0x1,0x2,0x3,0x4,0x5,0x6) and not the increasing pattern used by default.
On the receiving side I have the following rx_isr:
uint16_t rxDataArray[16]; __interrupt void fsiRxInt1ISR(void) { rxEventSts = FSI_getRxEventStatus(FSIRXA_BASE); fsiRxInt1Received = 1U; // // Increment number of data frames received // if((rxEventSts & FSI_RX_EVT_DATA_FRAME) != 0) { dataFrameCntr++; FSI_readRxBuffer(FSIRXA_BASE, rxDataArray, nWords, 0); FSI_setRxBufferPtr(FSIRXA_BASE, 0U); } // // Clear the interrupt flag and issue ACK // FSI_clearRxEvents(FSIRXA_BASE,rxEventSts); Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP4); }
But looking at the array it always has an offset
If I understand correctly the rxbuffer should be a circular buffer and because I set the nword length to 6 it should loop the circ buf every 6 words, correct? And because I call the FSI_setRxBufferPtr function and set it to 0, it should always receive the first byte to position 0 correct? What am I missing?
Kind regards
EDIT:
I don't think that the clock settings should affect the FSI in a manner that would cause this issue, but I also changed device.h to use new cristal
// // 18.432MHz XTAL on controlCARD. For use with SysCtl_getClock() and // SysCtl_getAuxClock(). // #define DEVICE_OSCSRC_FREQ 18432000U // // Define to pass to SysCtl_setClock(). Will configure the clock as follows: // PLLSYSCLK = 18.432MHz (XTAL_OSC) * 54 (IMULT) / (1 (REFDIV) * 5 (ODIV) * 1(SYSDIV)) // #define DEVICE_SETCLOCK_CFG (SYSCTL_OSCSRC_XTAL | SYSCTL_IMULT(54) | \ SYSCTL_REFDIV(1) | SYSCTL_ODIV(5) | \ SYSCTL_SYSDIV(1) | SYSCTL_PLL_ENABLE | \ SYSCTL_DCC_BASE_1) // // 200MHz SYSCLK frequency based on the above DEVICE_SETCLOCK_CFG. Update the // code below if a different clock configuration is used! // #define DEVICE_SYSCLK_FREQ ((DEVICE_OSCSRC_FREQ * 54) / (1 * 5 * 1)) // // 50MHz LSPCLK frequency based on the above DEVICE_SYSCLK_FREQ and a default // low speed peripheral clock divider of 4. Update the code below if a // different LSPCLK divider is used! // #define DEVICE_LSPCLK_FREQ (DEVICE_SYSCLK_FREQ / 2) // // Define to pass to SysCtl_setAuxClock(). Will configure the clock as follows: // AUXPLLCLK = 20MHz (XTAL_OSC) * 50 (IMULT) / (2 (REFDIV) * 4 (ODIV) * 1(AUXPLLDIV) ) // #define DEVICE_AUXSETCLOCK_CFG (SYSCTL_AUXPLL_OSCSRC_XTAL | SYSCTL_AUXPLL_IMULT(50) | \ SYSCTL_REFDIV(2U) | SYSCTL_ODIV(4U) | \ SYSCTL_AUXPLL_DIV_1 | SYSCTL_AUXPLL_ENABLE | \ SYSCTL_DCC_BASE_0) // // 125MHz AUXCLK frequency based on the above DEVICE_AUXSETCLOCK_CFG. Update // the code below if a different clock configuration is used! // #define DEVICE_AUXCLK_FREQ ((DEVICE_OSCSRC_FREQ * 50) / (2 * 4 * 1))