SPI Transmit Problem on XMC4800

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

cross mob
Not applicable
Hello all,

I am new about XMC family. I tried to communicate with my sensor using DAVE apps but When I check signals, transmit signal is false. After that, I tried to communicate use XMC functions but the result is same.

I attached my output signals and my codes.

So,how can I solve my problem ?

XMC_SPI_CH_Init(XMC_SPI1_CH0, &spi_config);
XMC_SPI_CH_SetInputSource(XMC_SPI1_CH0,XMC_SPI_CH_INPUT_DIN0,USIC1_C0_DX0_P0_5);


XMC_GPIO_SetMode(SPI_MOSI, XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2);
XMC_GPIO_SetMode(SPI_SS, XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2);
XMC_GPIO_SetMode(SPI_SCLK, XMC_GPIO_MODE_OUTPUT_PUSH_PULL_ALT2);
XMC_GPIO_SetMode(SPI_MISO, XMC_GPIO_MODE_INPUT_TRISTATE);


uint16_t readata = 0x85;

XMC_SPI_CH_Start(XMC_SPI1_CH0);

while(1U)
{
XMC_SPI_CH_EnableSlaveSelect(XMC_SPI1_CH0, XMC_SPI_CH_SLAVE_SELECT_0);

/*Sending a byte*/
XMC_SPI_CH_Transmit(XMC_SPI1_CH0,readata, XMC_SPI_CH_MODE_STANDARD);
/*Wait till the byte has been transmitted*/
while((XMC_SPI_CH_GetStatusFlag(XMC_SPI1_CH0) & XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION) == 0U)
{

}
XMC_SPI_CH_ClearStatusFlag(XMC_SPI1_CH0, XMC_SPI_CH_STATUS_FLAG_TRANSMIT_SHIFT_INDICATION);

/*Disable Slave Select line */
XMC_SPI_CH_DisableSlaveSelect(XMC_SPI1_CH0);

XMC_SPI_CH_EnableSlaveSelect(XMC_SPI1_CH0, XMC_SPI_CH_SLAVE_SELECT_0);



Here is my code using DAVE Apps.


uint8_t readata = 0x85;


uint32_t status1 = 0;
uint32_t status2 = 0;


SPI_MASTER_SetMode(&SPI_MASTER_0, XMC_SPI_CH_MODE_STANDARD);


/* Clear the flags */
SPI_MASTER_ClearFlag(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION);
SPI_MASTER_ClearFlag(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION);

while(1U)
{

SPI_MASTER_Transmit(&SPI_MASTER_0,readata,1);
while(SPI_MASTER_0.runtime->tx_busy);
/* Wait till dummy data is received from epson sensor */
do
{
status1 = SPI_MASTER_GetFlagStatus(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION);
status2 = SPI_MASTER_GetFlagStatus(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION);
} while(((status1 == 0) && (status2 == 0)));

/* Clear the flags */
SPI_MASTER_ClearFlag(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_ALTERNATIVE_RECEIVE_INDICATION);
SPI_MASTER_ClearFlag(&SPI_MASTER_0,XMC_SPI_CH_STATUS_FLAG_RECEIVE_INDICATION);
0 Likes
4 Replies
User12822
Level 1
Level 1
I can help you but not based on XMC library functions. Tell me, please, what pins do you use for the SPI interface on XMC4800 and what data frame your sensor needs.

Cheers,
Alex
0 Likes
Not applicable
Hello Alex,
Thank you for your reply
I use 0.4 0.5 0.6 0.11
I need to send 8bit data and also read 8 bit data

My clock cannot be up to 1 mhz to work with sensor.

Thank You,
Best Regards.
Kadir Karson
0 Likes
User14803
Level 1
Level 1
Do you have solved it?
0 Likes
Not applicable
No I still cannot communicate with them
0 Likes