Wpis z mikrobloga

No siema, podłączał może ktoś dwa SPI w ramach jednej płytki? SPI1 jako master SPI2 jako slave komunikacja full duplex. Używam HALa i generuje kod z cubemx czy to co napisałem wystarczy do odbierania danych an SPI2? W IDE niestety przy debuggowaniu Receive czeka aż dostanie jakąś daną i tak to się kończy. Poniżej wklejam kod i jak podłączyłem.

HALSPITransmit(&hspi1,&send,sizeof(send),HALMAXDELAY);
while(HALSPIGetState(&hspi1) != HALSPISTATEREADY);

HAL
SPIReceive(&hspi2,&receive,sizeof(receive),HALMAXDELAY);
while(HAL
SPIGetState(&hspi2) != HALSPISTATEREADY);

PA5->PB13 (SCK)
PA6->PB14 (MISO)
PA7->PB15 (MOSI)
PB12 ->GND (NSS)

Dorzucam jeszcze ustawienia SPI1 oraz SPI2

hspi1.Instance = SPI1;
hspi1.Init.Mode = SPIMODEMASTER;
hspi1.Init.Direction = SPIDIRECTION2LINES;
hspi1.Init.DataSize = SPIDATASIZE8BIT;
hspi1.Init.CLKPolarity = SPIPOLARITYLOW;
hspi1.Init.CLKPhase = SPIPHASE1EDGE;
hspi1.Init.NSS = SPINSSSOFT;
hspi1.Init.BaudRatePrescaler = SPIBAUDRATEPRESCALER8;
hspi1.Init.FirstBit = SPIFIRSTBITMSB;
hspi1.Init.TIMode = SPITIMODEDISABLE;
hspi1.Init.CRCCalculation = SPICRCCALCULATIONDISABLE;
hspi1.Init.CRCPolynomial = 10;

hspi2.Instance = SPI2;
hspi2.Init.Mode = SPIMODESLAVE;
hspi2.Init.Direction = SPIDIRECTION2LINES;
hspi2.Init.DataSize = SPIDATASIZE8BIT;
hspi2.Init.CLKPolarity = SPIPOLARITYLOW;
hspi2.Init.CLKPhase = SPIPHASE1EDGE;
hspi2.Init.NSS = SPINSSSOFT;
hspi2.Init.BaudRatePrescaler = SPIBAUDRATEPRESCALER2;
hspi2.Init.FirstBit = SPIFIRSTBITMSB;
hspi2.Init.TIMode = SPITIMODEDISABLE;
hspi2.Init.CRCCalculation = SPICRCCALCULATIONDISABLE;
hspi2.Init.CRCPolynomial = 10;

#mikrokontrolery #stm32 #nucleo #embedded #elektronika
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@zaglada: Słuchaj, sprawa jest prosta, podłączasz wtyczke HU-J do wtyczki DUP-2A a potem zamykasz protokół JP2GMDXD2, jak nie zadziała wciskasz dwa czincze i stawiasz grzyba na czekponcie,a jak nie to zawsze można zapytać na elektrodzie
  • Odpowiedz