Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM32F030C8 SPI SSD1306

Непрочитано 08.11.2016, 09:01  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

Хаааа! ОуЩЕТ!! А ведь и правда, да, есть в конце инфа, четко написано же, блин.
Я то инфу об упаковке в ленты и коробки не читаю, мне дисплей привезли в пупырчатой пленке...

Хотя дисплейчик в целом неплохой. Почти удачно заменяет громоздкие Винстары и МЭЛТы 12864. Единственный недостаток - мелковат он конечно. Минимальный читаемый без напряга шрифт - 13, заполнение 4 строки по 16 моноширных символов.
Стандартный 8-й шрифт мелковат - высота символа 1,3 мм, хотя и дает 8 строк по 21 символ. Хотя, читать можно.

Размер видимой области: ширина 22 мм, высота части голубого свечения (48 пикс) - 8,3 мм, желтого свечения (16 пикс) - 3 мм
Реклама:
NewWriter вне форума  
Непрочитано 08.11.2016, 10:13  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

NewWriter, китайцы уже пристроили
https://ru.aliexpress.com/item/OLED-...4-1b357706e072
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 08.11.2016, 10:21  
avp94
Почётный гражданин KAZUS.RUN
 
Аватар для avp94
 
Регистрация: 26.01.2007
Сообщений: 3,116
Сказал спасибо: 61
Сказали Спасибо 1,151 раз(а) в 623 сообщении(ях)
avp94 на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

Сообщение от dosikus Посмотреть сообщение
китайцы уже пристроили
Им осталось пристроить пусковое устройство к этой пристройке:
Цитата:
Input inrush current : Cold start 30A
avp94 вне форума  
Непрочитано 11.11.2016, 23:04  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

dosikus, сорри что пропал... Ехал по трассе и словил в лобовое камень. Только оправился... Скоро вернусь к запуску...
miwutka вне форума  
Непрочитано 12.11.2016, 10:24  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

Сообщение от dosikus Посмотреть сообщение
Ты снова отсебятину лепишь . Я же писал - делай все как у меня, от и до .
блин я реально дефайн не видел... Уже всё исправил.
PHP код:
uint8_t SPI1_SendByte(uint8_t data)
{
SPI1_DR_8bit = data;                      
        while (!(SPI1-›SR & SPI_SR_RXNE));    
        
        return (SPI1_DR_8bit );    
} 
Вечером ослик подключу погляжу что там. Пока тишина..
miwutka вне форума  
Непрочитано 12.11.2016, 23:19  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

записал что ослик показывает. Каждые 800 мс примерно делаю заливку черную потом белую на экран. Вот это записал. Ножка чип селект притянута к земле. Желтый луч MOSI, синий - DC
Вроде всё правильно?....
в майне
PHP код:
SSD1306_SPI_Fill(SSD1306_SPI_COLOR_WHITE);
      SSD1306_SPI_UpdateScreen_My();
      
      Delay_ms(800);
      
      SSD1306_SPI_Fill(SSD1306_SPI_COLOR_BLACK);
      SSD1306_SPI_UpdateScreen_My();
      
      Delay_ms(800); 
Функция обновления экрана
PHP код:
void SSD1306_SPI_UpdateScreen_My(void) {
    uint8_t m;
    uint32_t i; //Объявляем переменную для цикла задержки
   
    for (m = 0; m ‹ 8; m++) {
        send_command(0xB0 + m);
        send_command(0x00);
        send_command(0x10);
        //for(i=0; i‹0x000FFFFF; i++);  //Задержка
        /* Write multi data */
        ssd1306_SPI_Multisend(0x40, &SSD1306_Buffer_SPI[LCDWIDTH * m], LCDWIDTH);
      
    }
} 
Вложения:
Тип файла: rar video1.rar (1.08 Мб, 0 просмотров)
miwutka вне форума  
Непрочитано 13.11.2016, 09:07  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

DC, то есть переключение данные/инструкции, дергать вообще не обязательно при выводе информации. Достаточно настроить первоначально автоинкремент страниц (команды 0х20, 0х00), и при выводе инфы непрерывно слать целиком полный кадр.
NewWriter вне форума  
Непрочитано 13.11.2016, 13:27  
miwutka
Почётный гражданин KAZUS.RUN
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

сейчас у меня даже инит не происходит....
это шлю в ините в дисплей. При карявых настройках этот инит работал для дисплея.
PHP код:
0xAF, //display on AE - off
0x20, //Set Memory Addressing Mode   
0x10, //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
0xB0, //Set Page Start Address for Page Addressing Mode,0-7
0xC8, //Set COM Output Scan Direction
0x00, //---set low column address
0x10, //---set high column address
0x40, //--set start line address
0x81, //--set contrast control register
0xFF,
0xA1, //--set segment re-map 0 to 127
0xA6, //--set normal display
0xA8, //--set multiplex ratio(1 to 64)
0x3F, //
0xA4, //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
0xD3, //-set display offset
0x00, //-not offset-------------------
0xD5, //--set display clock divide ratio/oscillator frequency
0xF0, //--set divide ratio
0xD9, //--set pre-charge period
0x22, //
0xDA, //--set com pins hardware configuration
0x12,
0xDB, //--set vcomh
0x20, //0x20,0.77xVcc
0x8D, //--set DC-DC enable
0x14, //
0xAF //--turn on SSD1306 panel 
miwutka вне форума  
Непрочитано 13.11.2016, 13:41  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

Вот простейшая, без изысков, работа с этим дисплеем.
Код рабочий, писался для F100RB. Для F0 надо будет подправить настройку портов и распиновку. В остальном так же. SPI по-моему не отличается в базовой работе.
CS управляется аппаратно. Но можно убрать и программно выставить CS = 0 и не париться.
Прерывания и DMA не используются - это уже следующий шаг, и чтобы не усложнять и не путать Михайло Потапыча.
Так же, по соображениями неусложнения - всё написано в одном файле одним куском. Пофик, для тестов фсамыйрас.
Кстати, там после подачи питания перед посылкой первой команды надо 100 мс выждать...

Функции:
PHP код:
//++++++++++++++++++++++++++++++++++++++++++++++++++  ++++++++
/* Private variables */

uint8_t GRAM[64/8][128];    // видеопамять размером 1 кБайт

//++++++++++++++++++++++++++++++++++++++++++++++++++  ++++++++
/* Private function prototypes */
void Interface_Init(void);
void Display_Init(void);
void OLED_Write(uint8_t data);
void Switch_to_Command(void);
void Switch_to_Data(void);
void Refresh_frame(void);

//++++++++++++++++++++++++++++++++++++++++++++++++++  ++++++++
/* Private functions */
/*-----------------------------------------------
 * Настройка интерфейса.
 * MOSI    - PB15 AF PP
 * SCK    - PB13 AF PP
 * CS    - PB12 AF PP
 * DC    - PB15    PP
 * SPI2: Master, 8 bit,  Bidir, BidiroutEnable,
 *       1/16, SSM+SSI, SSO
 */
void Interface_Init(void)
{
    RCC-›APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN;
    RCC-›APB1ENR |= RCC_APB1ENR_SPI2EN;

    /* Настройка выводов */
    GPIOB-›CRH &= ~(GPIO_CRH_CNF12 | GPIO_CRH_CNF13 |
                    GPIO_CRH_CNF14 | GPIO_CRH_CNF15);

    GPIOB-›CRH |= GPIO_CRH_CNF12_1 | GPIO_CRH_CNF13_1 |
                  GPIO_CRH_CNF15_1;

    GPIOB-›CRH |= GPIO_CRH_MODE12_0 | GPIO_CRH_MODE13_0 |
                  GPIO_CRH_MODE14_0 | GPIO_CRH_MODE15_0;

    /* Настройка SPI */
    SPI2-›CR1 = SPI_CR1_BR_0 | SPI_CR1_BR_1    |        // Скорость 1/16
                SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE |    // Bidir, BidirOutEnable
                SPI_CR1_SSM | SPI_CR1_SSM |            // SSM+SSI
                SPI_CR1_MSTR;                        // Master
    SPI2-›CR2 = SPI_CR2_SSOE;                        // SSO
    SPI2-›CR1 |= SPI_CR1_SPE;                        // SPI Enable
}//----------------------------------------------
/*-----------------------------------------------
 * Настройка дисплея, очистка и включение
 */
void Display_Init(void)
{
    Switch_to_Command();    // Переключение в режим команд

    OLED_Write(0x20);        // Ориентация и развертка дисплея
    OLED_Write(0x00);        // автоинкремент страниц, слева направо, сверху вниз

    OLED_Write(0x8D);        // Включение DC/DC
    OLED_Write(0x14);        // конвертера

    Switch_to_Data();        // Переключение в режим данных
    Refresh_frame();        // Очистка дисплея

    Switch_to_Command();    // Переключение в режим команд
    OLED_Write(0xAF);        // Включение дисплея

    Switch_to_Data();        // Переключение в режим данных
}//----------------------------------------------
/*-----------------------------------------------
 * отправка байта в дисплей
 */
void OLED_Write(uint8_t data)
{
    while (!(SPI2-›SR & SPI_SR_TXE)) {}        // Ожидание свободного буфера передачи
    SPI2-›DR = data;                        // Запись байта в буфер передачи
}//---------------------------------
/*----------------------------------
 * Переключение в режим команд, DC = 0
 */
void Switch_to_Command(void)
{
    while (SPI2-›SR & SPI_SR_BSY) {}        // Ожидание завершения передачи
    GPIOB-›BSRR = GPIO_BSRR_BR14;            // DC = 0
}//---------------------------------
/*----------------------------------
 * Переключение в режим данных, DC = 1
 */
void Switch_to_Data(void)
{
    while (SPI2-›SR & SPI_SR_BSY) {}        // Ожидание завершения передачи
    GPIOB-›BSRR = GPIO_BSRR_BS14;            // DC = 1
}//----------------------------------

/*-----------------------------------
 * Перерисовка полного кадра дисплея.
 * Отправляет в дисплей содержимое видеопамти полностью.
 */
void Refresh_frame(void)
{
    for (uint8_t y=0; y‹8; y++)
    {
        for(uint8_t x=0; x‹128; x++)
        {
            OLED_Write(GRAM[y][x]);            // Отправка байта данных
        }
    }
}//---------------------------------------------- 

Работа в майне: инит интерфейса, запуск дисплея, заполнение видеопамяти и обновление кадра дисплея
PHP код:
  Interface_Init();        // инит интерфейса
  Display_Init();        // запуск дисплея

 /* чето такое рисуется, сетка какаято */
  for (uint8_t y=0; y‹8; y++)
  {
      for (uint8_t x=0; x‹128; x++)
      {
          if (!(x%8)) GRAM[y][x] = 0xE7;
          else GRAM[y][x] = 0x81;
      }
  }
  Refresh_frame();        // обновление кадра 

Последний раз редактировалось NewWriter; 13.11.2016 в 14:06.
NewWriter вне форума  
Непрочитано 13.11.2016, 14:25  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: STM32F030C8 SPI SSD1306

NewWriter, у тебя 100ка же у него F0...

miwutka, ЛА есть?
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Кто-нибудь работал с RF модулями nRF2401A? Easyrider83 Автоматика и аппаратура связи 1481 04.09.2021 23:24
Atmega16 - много переферийных устройств SPI pavned AVR 21 23.01.2013 07:00
Работа с EEPROM по SPI dominik2 Микроконтроллеры, АЦП, память и т.д 15 05.05.2012 00:24
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


Часовой пояс GMT +4, время: 22:21.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.