HAL_SPI_Transmit does not transfer 8 bits
We want to use HAL_SPI_Transmit to send data (master) in 8-bit units.
However, even though we have set SPI_DATASIZE_8BIT, data is sent in 16 bits.
Is there anything incorrect in the code below?
uint8_t *spi_txdata;
spi_txdata = (uint8_t *)malloc(2 * sizeof(uint8_t));
spi_txdata[0] = 1;
spi_txdata[1] = 2;
/* SPI5_CS High_out */
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);
/* SPI5_CLK En */
__HAL_SPI_ENABLE(&hspi5);
/* SPI5_CS Low_out */
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);
/* SPI5_Transmit */
hal_spi_err = HAL_SPI_Transmit(&hspi5, spi_txdata, sizeof(spi_txdata), 1000);
/* SPI5_CS High_out */
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);
**************************************************************
static void MX_SPI5_Init(void)
{
/* SPI5 parameter configuration*/
hspi5.Instance = SPI5;
hspi5.Init.Mode = SPI_MODE_MASTER;
hspi5.Init.Direction = SPI_DIRECTION_2LINES;
hspi5.Init.DataSize = SPI_DATASIZE_8BIT;
hspi5.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi5.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi5.Init.NSS = SPI_NSS_SOFT;
hspi5.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi5.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi5.Init.TIMode = SPI_TIMODE_DISABLE;
hspi5.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi5.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi5) != HAL_OK)
{
Error_Handler();
}
}
