Witam,
na forum znalazłem kilka tematów z problemami podobnymi do moich, ale w żadnym nie znalazłem rozwiązania.
Mam zamiar skomunikować STM32F4 z układem nrf2401. Chcę użyć do tego SPI1 na pinach PA[5..7]. Konfiguracja SPI wygląda następująco
Następnie próbuję wysłać daną 0xAA:
W tym momencie w rejestrze SPI1->DR pojawia się wartość 0x000000FE. Flaga TXE dały czas ustawiona (bufor pusty). Po wpisaniu do DR kolejnej danej do wysłania ustawia się flaga OVF. I to by było na tyle.. Na pinach nie pojawiają się żadne wysokie stany, same zera na MISO, MOSI i SCK... Sprzętowo jest ok, żadnych przywarć do masy.
Może ktoś zna rozwiązanie problemu, może czegoś nie dopatrzyłem bardzo proszę o pomoc.
na forum znalazłem kilka tematów z problemami podobnymi do moich, ale w żadnym nie znalazłem rozwiązania.
Mam zamiar skomunikować STM32F4 z układem nrf2401. Chcę użyć do tego SPI1 na pinach PA[5..7]. Konfiguracja SPI wygląda następująco
RCC -> APB2ENR |= RCC_APB2ENR_SPI1EN; //zegar SPI1
RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //zegar GPIOA
GPIOA -> MODER |= GPIO_MODER_MODER1_0|GPIO_MODER_MODER2_0|GPIO_MODER_MODER3_0|GPIO_MODER_MODER5_1|GPIO_MODER_MODER7_1|GPIO_MODER_MODER6_1; PA[5..7] w AF, reszta wyjścia
GPIOA -> AFR[0] |= 5<<28 | 5<<24 | 5<<20; // PA[5..7] AF
SPI1 -> CR1 |= SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR;
SPI1 -> CR1 |= SPI_CR1_SPE; //SPI EN
Następnie próbuję wysłać daną 0xAA:
void NRF2401_Init_As_TX(void)
{
int i,a;
PWR_UP_HIGH; //pwr_up on
my_delay(1000);
CE_LOW; //CE off
my_delay(1000);
CS_HIGH; //CS on
my_delay(1000);
for(i=15;i>=0;i--)
{
while(!(SPI1 -> SR & (1<<1))); // Wait for SPI1 Tx buffer empty
SPI1 -> DR = 0xAA;
//SPI1 -> DR = NRF2401_CONF_TX[i]; //przeslanie 120 bitow konfiguracyjnych
W tym momencie w rejestrze SPI1->DR pojawia się wartość 0x000000FE. Flaga TXE dały czas ustawiona (bufor pusty). Po wpisaniu do DR kolejnej danej do wysłania ustawia się flaga OVF. I to by było na tyle.. Na pinach nie pojawiają się żadne wysokie stany, same zera na MISO, MOSI i SCK... Sprzętowo jest ok, żadnych przywarć do masy.
Może ktoś zna rozwiązanie problemu, może czegoś nie dopatrzyłem bardzo proszę o pomoc.