SPI communication

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User18655
Level 1
Level 1
Hello,

Can anybody help me with the setting for XMC4300 Relax board?

I try to connect with ISO11813T but i can't see a clock signal with Osci.
I use a alduino Pins and U0C1.

Great thanks in advise!


#define SPI_MISO P2_2
#define SPI_MOSI P2_5
#define SPI_SCLK P2_4
#define SPI_SS P2_3


/**
* @brief SPI configuration structure
*/
const XMC_SPI_CH_CONFIG_t spi_config =
{
.baudrate = 1000000,
.selo_inversion = XMC_SPI_CH_SLAVE_SEL_INV_TO_MSLS,
.bus_mode = XMC_SPI_CH_BUS_MODE_MASTER,
.parity_mode = XMC_USIC_CH_PARITY_MODE_NONE
};


int main(void) {

//XMC_GPIO_Init(ADC_nCS, &gpio_config_out);

//XMC_GPIO_Init(GPIO_BUTTON1, &gpio_config_btn);
//XMC_GPIO_Init(GPIO_LED1, &gpio_config_led1);



XMC_SPI_CH_Init(XMC_SPI0_CH1, &spi_config);

XMC_SPI_CH_SetWordLength(XMC_SPI0_CH1, 8);
XMC_SPI_CH_SetFrameLength(XMC_SPI0_CH1, 8);

/*Input source selected*/
XMC_GPIO_CONFIG_t gpio_config_miso;
gpio_config_miso.mode = XMC_GPIO_MODE_INPUT_TRISTATE;
XMC_GPIO_Init(SPI_MISO, &gpio_config_miso);
XMC_SPI_CH_SetInputSource(XMC_SPI0_CH1, XMC_SPI_CH_INPUT_DIN0, USIC0_C1_DX0_P2_2);

/* Configure the clock polarity and clock delay */
XMC_SPI_CH_ConfigureShiftClockOutput(XMC_SPI0_CH1,
XMC_SPI_CH_BRG_SHIFT_CLOCK_PASSIVE_LEVEL_1_DELAY_DISABLED,
XMC_SPI_CH_BRG_SHIFT_CLOCK_OUTPUT_SCLK); // CPOL=1, CPHA=0

XMC_GPIO_CONFIG_t gpio_config_ss;
gpio_config_ss.output_level = XMC_GPIO_OUTPUT_LEVEL_HIGH;
gpio_config_ss.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL | USIC0_C1_DX2_P2_3;
gpio_config_ss.output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_MEDIUM_EDGE;
XMC_GPIO_Init(SPI_SS, &gpio_config_ss);

XMC_GPIO_CONFIG_t gpio_config_mosi;
gpio_config_mosi.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL | USIC0_C1_DX0_P2_5;
gpio_config_mosi.output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_MEDIUM_EDGE;
XMC_GPIO_Init(SPI_MOSI, &gpio_config_mosi);

XMC_GPIO_CONFIG_t gpio_config_clk;
gpio_config_clk.mode = XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2 | USIC0_C1_DX1_P2_4;
gpio_config_clk.output_strength = XMC_GPIO_OUTPUT_STRENGTH_STRONG_MEDIUM_EDGE;
XMC_GPIO_Init(SPI_SCLK, &gpio_config_clk);

XMC_SPI_CH_Start(XMC_SPI0_CH1);

while(1U)
{
delay(10000U);
XMC_SPI_CH_EnableSlaveSelect(XMC_SPI0_CH1, XMC_SPI_CH_SLAVE_SELECT_0);

XMC_GPIO_SetOutputLow(SPI_SS);

XMC_SPI_CH_SetTransmitMode(XMC_SPI0_CH1, XMC_SPI_CH_MODE_STANDARD);

XMC_SPI_CH_Transmit(XMC_SPI0_CH1, 0x33, XMC_SPI_CH_MODE_STANDARD);

while((XMC_SPI_CH_GetStatusFlag(XMC_SPI0_CH1) & (XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION)) == 0U);

XMC_SPI_CH_ClearStatusFlag(XMC_SPI0_CH1, XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION | XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION);


XMC_GPIO_SetOutputHigh(SPI_SS);
XMC_SPI_CH_DisableSlaveSelect(XMC_SPI0_CH1);
}
}
0 Likes
0 Replies