привет.
Подскажите как правильно управлять выводом GPIO для формирования сигнала cs? Использую Hal. Передача с использованием dma.
Настроил spi:
Код:
|
hspi4.Instance = SPI4;
hspi4.Init.Mode = SPI_MODE_MASTER;
hspi4.Init.Direction = SPI_DIRECTION_2LINES;
hspi4.Init.DataSize = SPI_DATASIZE_8BIT;
hspi4.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi4.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi4.Init.NSS = SPI_NSS_SOFT;
hspi4.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi4.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi4.Init.TIMode = SPI_TIMODE_DISABLED;
hspi4.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLED;
hspi4.Init.CRCPolynomial = 10;
HAL_SPI_Init(&hspi4); |
устанавливаю cs в нуль:
Код:
|
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_SPI_Transmit_DMA( &hspi4, array_spi, 10); |
устанавливаю cs в один :
Код:
|
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi){
if (hspi-›Instance == hspi4.Instance)
{
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);
}
} |
Как понял HAL_SPI_TxCpltCallback вызывается в конце передачи, но не смог найти что ее вызывает.