Dear Community!
We are trying to establish a SPI connection with an ICEv2 board (TMDSICE3359). We are trying to use the SPI1 connectors on J3(pins 12, 14, 16, 18).
I have a problem to establish a transmission with my code(is attached below). I can’t measure a clock signal with an oscilloscope. Could you help to find the fault please. The project development sticks because of the SPI interface.
Thank you in advance!
#include "tiesc_appreload.h" #include "soc_AM335x.h" #include "osdrv_oledlcd.h" #include "osdrv_mcspi.h" Uint8 uartInstance = 0; Uint8 boardType = 0; Void main() { uartInstance = 3; // 5 for ICE, 3 for ICEv2 UartOpen(uartInstance, NULL); char t_str[8]; UARTPutString(uartInstance, "\nSPI Example"); sprintf(t_str, "%d", UTILsGetArmClockRate()); UARTPutString(uartInstance, "\n\rARM Clock rate \t: "); UARTPutString(uartInstance, t_str); //--------------------------------------------HIER Beginn SPI Kommunikation char t_str1[8]; //INITIALISIERUNG / CONFIG McSPIClkConfig( SOC_SPI_1_REGS , MCSPI_IN_CLK , MCSPI_OUT_FREQ , MCSPI_CHANNEL_0 , MCSPI_CLK_MODE_0 ); McSPIReset(SOC_SPI_1_REGS);//mcspi McSPICSEnable(SOC_SPI_1_REGS);//mcspi McSPIMasterModeEnable(SOC_SPI_1_REGS);//mcspi //unsigned int baseAddress = SOC_SPI_1_REGS; sprintf(t_str1,"%d",SOC_SPI_1_REGS);//plat_mcspi UARTPutString(uartInstance,"\n\rBaseAddress SPI \t: "); UARTPutString(uartInstance , t_str1); if( McSPIMasterModeConfig(SOC_SPI_1_REGS , MCSPI_MULTI_CH , MCSPI_TX_RX_MODE , MCSPI_DATA_LINE_COMM_MODE_2 , MCSPI_CHANNEL_0) )//mcspi UARTPutString(uartInstance,"\n\rMasterConfig \t: TRUE"); else UARTPutString(uartInstance,"\n\rMasterConfig \t: FALSE"); UARTPutString(uartInstance,"\n\r Clock Config Done"); McSPICSPolarityConfig( SOC_SPI_1_REGS , MCSPI_CS_POL_LOW , MCSPI_CHANNEL_0); McSPITxFIFOConfig(SOC_SPI_1_REGS, MCSPI_TX_FIFO_ENABLE, MCSPI_CHANNEL_0); McSPIRxFIFOConfig(SOC_SPI_1_REGS, MCSPI_RX_FIFO_ENABLE, MCSPI_CHANNEL_0); unsigned int data_rx = 0; UARTPutString(uartInstance, "\n\r Read \t: "); sprintf(t_str1, "%u , %X", data_rx, data_rx); UARTPutString(uartInstance, t_str1); while (1) { int i = 0; //for(i=0;i<0xFFFFFFF;i++); McSPIWordLengthSet( SOC_SPI_1_REGS, MCSPI_WORD_LENGTH(29), MCSPI_CHANNEL_1); McSPICSAssert( SOC_SPI_1_REGS, MCSPI_CHANNEL_1); //mcspi McSPIChannelEnable( SOC_SPI_1_REGS, MCSPI_CHANNEL_1); while (MCSPI_INT_TX_EMPTY(MCSPI_CHANNEL_1) != (McSPIIntStatusGet(SOC_SPI_1_REGS) & MCSPI_INT_TX_EMPTY(MCSPI_CHANNEL_1))); McSPITransmitData(SOC_SPI_1_REGS, 0xff00, MCSPI_CHANNEL_1); while (MCSPI_INT_RX_FULL(MCSPI_CHANNEL_1) != (SOC_SPI_1_REGS & MCSPI_INT_RX_FULL(MCSPI_CHANNEL_1))); //data_rx = McSPIReceiveData(McSPIGetBaseAddressSOC_SPI_1_REGS), MCSPI_CHANNEL_1); //data_rx = McSPIReceiveData(0x800e, MCSPI_CHANNEL_1); data_rx = McSPIReceiveData(SOC_SPI_1_REGS, MCSPI_CHANNEL_1); //AUSGABE BUFFER UARTPutString(uartInstance, "\n\rDATA SPI \t: "); sprintf(t_str1, "%u , %X \n", data_rx, data_rx); UARTPutString(uartInstance, t_str1); } }