Skocz do zawartości

aro

Użytkownicy
  • Zawartość

    2
  • Rejestracja

  • Ostatnio

Wszystko napisane przez aro

  1. Cześć, w kursie przy sekcji o dołączaniu do biblioteki jest napisane: Problem w tym, że zaimportowany projekt nie zawiera tych folderów, są w folderach "wyżej". Nawet w zaprezentowanych sposobach dodawane są tylko dwa pliki (Fonts.c i SSD1331.c) do katalogu User Z kolei w załączniku z paczką projektu już w folderach jest prawidłowo porozmieszczane. Mógłby ktoś wyjaśnić dlaczego do Project Explorera są ładowane tylko podfoldery?
  2. Cześć, posiadam płytkę Nucleo STM32F767ZI. Chciałem podłączyć do niej wyświetlacz OLED 1,3'' (A) ze sterownikiem SH1106. Korzystałem z kursu STM32 F1 HAL – #10 – wyświetlacz graficzny na SPI i starałem się modyfikować program pod moją płytkę i sterownik wyświetlacza. Program kompiluje się bez błędów, ale na wyświetlaczu nie zaświeci się nawet piksel. Proszę o jakieś wskazówki czy w ogóle idę w dobrą stronę z tym programem. Wyprowadzenia podpięte są raczej prawidłowo: VCC - 3.3V GND - GND DIN - PA_7 CLK - PA_5 CS (CE) - PC_8 D/C (DC) - PC_9 RES (RST) - PC_10 #include "stm32f7xx.h" #define LCD_DC GPIO_PIN_9 #define LCD_CE GPIO_PIN_8 #define LCD_RST GPIO_PIN_10 SPI_HandleTypeDef spi; const unsigned char logo_mini_mono [] = { 0xFE,0x02,0x92,0x0A,0x54,0x2A,0x38,0xAA,0x12,0xAA,0x12,0xAA,0x12,0xAA,0x12,0xAA}; void lcd_reset() { HAL_GPIO_WritePin(GPIOC, LCD_RST, GPIO_PIN_RESET); // 0V Reset układu, aktywowany stanem niskim. HAL_Delay(200); HAL_GPIO_WritePin(GPIOC, LCD_RST, GPIO_PIN_SET); //3,3 } void lcd_cmd(uint8_t cmd) { HAL_GPIO_WritePin(GPIOC, LCD_CE|LCD_DC, GPIO_PIN_RESET); HAL_SPI_Transmit(&spi, &cmd, 1, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOC, LCD_CE|LCD_DC, GPIO_PIN_SET); // CS Wybór urządzenia magistrali SPI, aktywowany stanem niskim. // D/C Wybór trybu pracy - stan niski oznacza przesył komend, wysoki - danych. } void lcd_data(const uint8_t* data, int size) { HAL_GPIO_WritePin(GPIOC, LCD_DC, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOC, LCD_CE, GPIO_PIN_RESET); HAL_SPI_Transmit(&spi, (uint8_t*)data, size, HAL_MAX_DELAY); HAL_GPIO_WritePin(GPIOC, LCD_CE, GPIO_PIN_SET); } int main(void) { SystemCoreClock = 8000000; // taktowanie 8Mhz HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_SPI1_CLK_ENABLE(); GPIO_InitTypeDef gpio; gpio.Mode = GPIO_MODE_AF_PP; gpio.Pin = GPIO_PIN_5 | GPIO_PIN_7; // SCK, MOSI gpio.Pull = GPIO_NOPULL; gpio.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOA, &gpio); /*gpio.Mode = GPIO_MODE_AF_INPUT; gpio.Pin = GPIO_PIN_6; // MISO gpio.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOA, &gpio);*/ gpio.Mode = GPIO_MODE_OUTPUT_PP; gpio.Pin = LCD_DC|LCD_CE|LCD_RST; HAL_GPIO_Init(GPIOC, &gpio); HAL_GPIO_WritePin(GPIOC, LCD_CE|LCD_RST, GPIO_PIN_SET); spi.Instance = SPI1; spi.Init.Mode = SPI_MODE_MASTER; spi.Init.NSS = SPI_NSS_SOFT; spi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2; // 4MHz spi.Init.Direction = SPI_DIRECTION_2LINES; spi.Init.CLKPhase = SPI_PHASE_1EDGE; spi.Init.CLKPolarity = SPI_POLARITY_LOW; spi.Init.DataSize = SPI_DATASIZE_8BIT; spi.Init.FirstBit = SPI_FIRSTBIT_MSB; spi.Init.TIMode = SPI_TIMODE_DISABLE; spi.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; spi.Init.CRCPolynomial = 7; HAL_SPI_Init(&spi); __HAL_SPI_ENABLE(&spi); lcd_reset(); lcd_cmd(0xAE);//-- 11. turn off oled panel lcd_cmd(0x02);//-- 1. set low column address lcd_cmd(0x10);//-- 2. set high column address lcd_cmd(0x40);//-- 4. set start line address Set Mapping RAM Display Start Line (0x00~0x3F) lcd_cmd(0x81);//-- 5. set contrast control register lcd_cmd(0xCF);// Set SEG Output Current Brightness lcd_cmd(0xA1);//-- 6. Set SEG/Column Mapping lcd_cmd(0xC0);// 13. Set COM/Row Scan Direction lcd_cmd(0xA6);//-- 8. set normal display lcd_cmd(0xA8);//-- 9. set multiplex ratio(1 to 64) lcd_cmd(0x3f);//--1/64 duty lcd_cmd(0xD3);//- 14. set display offset Shift Mapping RAM Counter (0x00~0x3F) lcd_cmd(0x00);//-not offset lcd_cmd(0xd5);//-- 15. set display clock divide ratio/oscillator frequency lcd_cmd(0x80);//--set divide ratio, Set Clock as 100 Frames/Sec lcd_cmd(0xD9);//-- 16. set pre-charge period lcd_cmd(0xF1);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock lcd_cmd(0xDA);//-- 17. set com pins hardware configuration lcd_cmd(0x12); lcd_cmd(0xDB);//-- 18. set vcomh lcd_cmd(0x40);//Set VCOM Deselect Level lcd_cmd(0x20);//-Set Page Addressing Mode (0x00/0x01/0x02) lcd_cmd(0x02);// lcd_cmd(0x8D);//--set Charge Pump enable/disable lcd_cmd(0x14);//--set(0x10) disable lcd_cmd(0xA4);// Disable Entire Display On (0xa4/0xa5) lcd_cmd(0xA6);// Disable Inverse Display On (0xa6/a7) lcd_cmd(0xAF);//-- 11. turn on oled panel lcd_data(logo_mini_mono, sizeof(logo_mini_mono)); while (1) { } }
×
×
  • Utwórz nowe...