Связь Arduino и STM32 по SPI
Arduino Leonardo выступает в качестве мастера, засылая по SPI команды на STM32F4-Discovery, STM настроена на Receive Only Slave, при приеме приходят не коррелируемые с отправляемыми значения, при связке Leonardo и Uno все так, как и должно быть. SPI на STM выглядит так:
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_SLAVE;
hspi2.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;
if (HAL_SPI_Init(&hspi2) != HAL_OK)
{
Error_Handler();
}
.
.
.
HAL_SPI_Receive_IT(&hspi2, &voice_cmd, sizeof (voice_cmd));
А так дело выглядит на Leonardo
SPI.begin();
.
.
.
SPI.beginTransaction(SPISettings(10000, MSBFIRST, SPI_MODE0));
SPI.transfer(CMD);
SPI.endTransaction();
Вроде полярность и фаза соблюдены, думал на то, что разные уровни, 5В и 3.3В, делитель ситуацию не исправил, в чем может быть проблема?