Так не получается. Проект генерю из STM32CubeMx. Пока работаю только с датчиком температуры, подключены SO, SCK и CS. Если конфигурить SPI как Full-Duplex Master то программа виснет на чтении данных, если как Receive Only Msster то данные идут, но не полностью.
SPI сконфигурю с DMA, когда наступает момент чтения температуры вызываю функции
Код
uint16_t Temp; // Значение измеренной температуры
…………………………………………………
HAL_GPIO_WritePin(GPIOA,CS_Termo_Pin,GPIO_PIN_RESET);
HAL_SPI_Receive_DMA(&hspi1,(uint8_t*)&Temp,2);
По окончанию работы DMA вызывается прерывание со статусом HAL_DMA_STATE_READY_MEM0, поднимаю пин CS
Код
HAL_GPIO_WritePin(GPIOA,CS_Termo_Pin,GPIO_PIN_SET);
Но по осциллографу вижу, что CS отключает датчик температуры ровно посередине второго байта. Соответственно первый байт приходит, видно он меняется, второго байта нет. Почему так может быть? В какой момент отключать CS?
Как правильно работать с несколькими девайсами ни одном SPI? Нужно и одно чтение и одна запись и Full-Duplex Master для третьего девайса.