Ahoj, pokouším se komunikovat s SD kartou a nedaří se mi správně rozchodit SPIčko. Podle návodů co jsem četl, tak ke komunikaci potřebuju vyslat jeden znak a jeden znak přijmout. Odeslat znak se mi daří bez problémů, ale jakmile se znak odešle tak hodiny přestanou tikat a já tedy nemůžu žádný znak přijmout. SS se s tímto také nastaví do high. Nevíte někdo, kde je zakopanej pes? Zde je kód:
spi_init(){
SPI1->CR1 = 0
| SPI_CR1_MSTR // Master Selection
| SPI_CR1_BR_0 // Baud Rate Control
| SPI_CR1_BR_1 // Baud Rate Control
| SPI_CR1_BR_2; // Baud Rate Control
SPI1->CR2 = 0
| SPI_CR2_SSOE; // SS Output Enable
}
uint8_t SPI_sendchar(uint8_t send_char){
uint16_t read_spi;
SPI1->CR1 |= SPI_CR1_SPE; // SPI Enable
SPI1->DR = (uint8_t)send_char;
while(!(SPI1->SR & SPI_SR_TXE));
while(!(SPI1->SR & SPI_SR_RXNE));
read_spi = SPI1->CR1;
while(!(SPI1->SR & SPI_SR_TXE));
while((SPI1->SR & SPI_SR_BSY));
SPI1->CR1 &= ~SPI_CR1_SPE; // SPI Disable
return ((uint8_t)SPI1->CR1);
}