Skocz do zawartości

Wyświetlacz graficzny SPI Nokia 5110 w STM32F030, brak AFIO


JFranko

Pomocna odpowiedź

Witam,
Posiadam płytkę SMT32F030 DEMO BOARD z STM32F030F4P6. Mikrokontroler posiada SPI.

Przeglądając kursy z różnych STM'ów dostosowywałem kod do możliwości tego mikrokontrolera, lecz teraz mam problem. Chciałbym uruchomić wyświetlacz z Nokii 5110. Posługując się kursem STM32 #10 dostosowałem kod do tego STMa, lecz nie ma tutaj w ogóle AFIO. Przeglądałem biblioteki StdPeriph_Driver i nigdzie nie trafiłem na żadną wzmiankę o AFIO. Jak mogę go uruchomić wykorzystując możliwości tego mikrokontrolera?

Pozdrawiam, JFranko.

Link do komentarza
Share on other sites

STM32F030 jak najbardziej obsługuje SPI. Niestety różni się nieco od omawianego podczas kursu F103, więc będziesz musiał się trochę napracować żeby przenieść program. Jak chodzi o konfigurację pinów to polecam otworzyć plik stm32f0xx_gpio.h i poszukać:

typedef enum
{
 GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode              */
 GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode             */
 GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */
 GPIO_Mode_AN   = 0x03  /*!< GPIO Analog In/Out Mode      */
}GPIOMode_TypeDef;

Link do komentarza
Share on other sites

Właśnie wzorowałem się we wszystkim na pliku stm32f0xx_gpio.h i stm32f0xx_rcc.h, na przykład nie można użyć tutaj

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

tylko

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

. Nie znalazłem nic dotyczącego tego AFIO, ale teraz już rozumiem, że chodzi o to alternate function, spróbuję jak zadziała z tym.

Link do komentarza
Share on other sites

Bawię się na STM32f0xx - także mam z tym problem.

Wydaje mi się że koledze @JFranko chodziło o uruchamianie zegara dla AF "RCC_APB2Periph_AFIO".

Dla f103:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

W STM32f0xx nie ma czegoś takiego jak Periph_AFIO - zapewne wynika to z budowy uC, ale najważniejsze pytanie:

Gdzie znajdę informację na temat tego jakie szyny danych uruchomić przy kolejnych interfejsach?

Dla przykładu STM32F103xx performance line block diagram - dokumentacja STM32F103, widzę że jest to linia APB1 lub APB2 (to już sprawdzę sobie w lib)

ale nie widzę wzmianki o załączaniu AFIO.

Tu także pytanie odnośnie poprawności konfiguracji SPI na stm32f070.

Poniżej zamieszczam kod dla SPI1, mam problem z jego uruchomieniem. Czy coś pomieszałem?

void spi_init(void){
SPI_InitTypeDef  SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

 //Enable SPI1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

GPIO_PinAFConfig(GPIOA, GPIO_PinSource5, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_0);
GPIO_PinAFConfig(GPIOA, GPIO_PinSource7, GPIO_AF_0);

// Configure SPI1 pins:      PA5 = SCK | PA6 = MISO|  PA7 = MOSI
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_Level_3;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_Init(GPIOA, &GPIO_InitStructure);

 //Configure SPI1 pin:         PA4 = CS - soft
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_OUT;
GPIO_Init(GPIOA, &GPIO_InitStructure);


// SPI1 configuration
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);

SPI_CalculateCRC(SPI1, DISABLE);

// Enable SPI1
SPI_Cmd(SPI1, ENABLE);
}
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.