Пытаюсь установить, чтобы активация чипа (CE) на выводе поднималась до высокого уровня перед передачей SPI и возвращалась к низкому уровню после завершения передачи (TX или RX). Использую NRF24L01 и Nucleo-F303. Говорят, что когда CE высокий, тогда я могу сделать реальную передачу SPI на NRF24L01. Тем не менее, вывод CE на мгновение становится низким, а затем снова высоким даже до того, как реальная передача не была выполнена
Кажется, что остальные выводы синхронизируютсясоответственно. Как я могу получить, чтобы вывод CE точно поднялся до того, как сделать передачу SPI, а затем низко, когда все сделано или больше не выполняется.
Вот как я пытался решить проблему
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
MX_USART1_UART_Init();
HAL_Delay(5);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
uint8_t data[6] = {0x5C, 0xBA, 0xBB, 0x4D, 0x5E, 0xFB,};
uint8_t data1[6] = {0};
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_SET);
if(HAL_SPI_TransmitReceive(&hspi1, data, data1, 6, HAL_MAX_DELAY) == HAL_OK)
{
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, GPIO_PIN_RESET);
}
}
}
, и вот как я настроил GPIO_PIN_3 для работы
GPIO_InitStruct.Pin = GPIO_PIN_3;
GPIO_InitStruct.Pull = GPIO_PULLDOWN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // digital Output
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);