ОБНОВЛЕНИЕ: в беспорядке проводов я случайно не подключил мой провод мисо, поэтому я читал только случайные импульсы.
Я работаю с системным чипом, который говорит по SPI, я был возникли проблемы при получении сообщения и он хотел бы получить второе мнение о том, не соответствует ли моя установка спецификациям производителя.
Я использую полный дуплекс SPI stm32f4 с включением и выключением gpio в качестве csn. из того, что я вижу на листе данных, spi настроен на РЕЖИМ 1, с часами <5 МГц (им при 1,25) и где время до и после того, как csn опускается низко и высоко, должно быть больше 250 нс (что я я измерил) </p>
У меня такое ощущение, что моя интерпретация их кода ardiuno -> hal_library может быть неправильной
Мои настройки для этой библиотеки (каждый раз, когда я вызываю функцию, она использует библиотеку hal_spi для отправить его соответственно)
/* ================================================================================ */
/* ======================= SPI communication functions ====================== */
/* ================================================================================ */
uint8_t SBC_SPI_INIT(void) {
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, 1);
return 0;
}
uint16_t SBC_SPI_TRANSFER16(uint8_t Upper, uint8_t Lower) {
Tx16SPI_Buffer= (Upper<<8) | Lower;
TxSPI_Buffer[0]=Upper;
TxSPI_Buffer[1]=Lower;
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, 0);
HAL_SPI_TransmitReceive(&hspi1, TxSPI_Buffer , RxSPI_Buffer, 1, 200);
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, 1);
Rx16SPI_Buffer= RxSPI_Buffer[0]<<8 | RxSPI_Buffer[1];
return Rx16SPI_Buffer;
}
Мои настройки:
мой код и их код рекомендации (с использованием ardiuno); я уже настроил свой spi перед вызовом init, поэтому мне нужно только вернуть 0;
Это то, что я получаю 1 сигнал из многих, результаты для других на боковой панели:
Спи-спецификации следующие:
и иногда, когда я получаю такой ключ, я получаю такой короткий пинг от MOSI (все еще 0x00), когда в другой раз я получаю прямой 0x00