Skip to main content
Associate II
February 29, 2024
Question

Unable to read data from L6470 Motor Driver

  • February 29, 2024
  • 2 replies
  • 1549 views

I m using STM32L552ZE as SPI Master and slave device is L6470 stepper driver. Write operation everything is fine. While i tried to read the data from STATUS Register (0x19) or GETSTATUS register(0xD0). I received only floating values not a constant one. So i had doubt about read sequence.

This is my code.

uint32_t SPI_GetStatus(uint8_t command)
{
static uint8_t TramsmitData[4];
TramsmitData[0] = command;
TramsmitData[1] = 0x00;
TramsmitData[2] = 0x00;
TramsmitData[3] = 0x00;

static uint8_t receivedData[4] = {0};

for (int index = 0; index < 3; index++)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1,&TramsmitData[index], sizeof(TramsmitData[index]), HAL_MAX_DELAY);
HAL_SPI_Receive(&hspi1, &receivedData[index],sizeof(receivedData[index]), HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
}

DebugLog("receivedData[0] %d \r\n",receivedData[0]);
DebugLog("receivedData[1] %d \r\n",receivedData[1]);
DebugLog("receivedData[2] %d \r\n",receivedData[2]);
DebugLog("receivedData[3] %d \r\n",receivedData[3]);
}

This topic has been closed for replies.

2 replies

Cristiana SCARAMEL
Technical Moderator
March 6, 2024

Hello @Ibrahimsha and welcome to the ST Community.

I suggest to check the SPI configuration (CPOL and CPHA).

You must set CPOL = 1 and CPHA = 1 (the IC updates the out on the falling edge and samples on the rising edge).

Concerning to the communication protocol you can refer also to application notes AN4290 for more details.

Let me know if this solve your problem, if yes please accept it by clicking on "Accept as solution".

"If you feel a post has answered your question, please click ""Accept as Solution"""
Associate II
April 1, 2024

Thank you!