Other Parts Discussed in Thread: TMDSICE3359
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);
}
}
