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

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

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

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

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

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


 
Опции темы
Непрочитано 21.09.2016, 02:05  
Zoosman
Вид на жительство
 
Регистрация: 03.06.2006
Адрес: Израиль
Сообщений: 388
Сказал спасибо: 2,063
Сказали Спасибо 337 раз(а) в 156 сообщении(ях)
Zoosman на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Я подключал к 5-ти.
К каким выводам Вы подключили I2C?
Реклама:
Zoosman вне форума  
Непрочитано 21.09.2016, 09:42  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

miwutka, Не чтение а запись
Код:
#define SSD1306_OWN_ADDRESS  0x3C// 0x3D

void 	ssd1306_send(uint8_t control_byte, uint8_t data)
		{
		I2C1-›CR2 =  I2C_CR2_AUTOEND | (2‹‹16) | (SSD1306_OWN_ADDRESS‹‹1); 
		
			/* Check Tx empty */
	  while (!(I2C1-›ISR & I2C_ISR_TXE) );
	
	 I2C1-›TXDR = control_byte; 
	 I2C1-›CR2 |= I2C_CR2_START; 
		
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		I2C1-›TXDR = data; 
		
	
			
		}
__________________
Осторожно , злой кот
dosikus вне форума  
Сказали "Спасибо" dosikus
miwutka (22.09.2016)
Непрочитано 21.09.2016, 09:51  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от miwutka Посмотреть сообщение
Появилось несколько вопросов. Переделываю библиотеку с 10х на 030. Есть непонятки с регистрами.
Тут правильная замена?
C 10x на F0 не перетянешь, модуль i2c совершенно другой...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 21.09.2016, 17:03  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от dosikus Посмотреть сообщение
C 10x на F0 не перетянешь, модуль i2c совершенно другой...
Это я и увидел.... ((( Там всё на автомате както работает на регистрах. Удобнее наверно .
Сообщение от Zoosman Посмотреть сообщение
К каким выводам Вы подключили I2C?
Та по даташиту порт А SCL, SDA вроде ноги 9,10. Ну я еепромку цеплял - работает.
Сообщение от dosikus Посмотреть сообщение
#define SSD1306_OWN_ADDRESS 0x3C// 0x3D
У меня адрес в примере 0х78. А у вас 0х3С. Какой правильный? )))
miwutka вне форума  
Непрочитано 21.09.2016, 17:13  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от miwutka Посмотреть сообщение
У меня адрес в примере 0х78. А у вас 0х3С. Какой правильный? )))
Тот что в даташите.

А он 7битный и равен 0x3C(D) и занимает старшие 7бит отсюда и сдвиг влево на 1 бит. Что в итоге и дает твои 0x78(A). А нулевой бит это R/W.
Пора, пора начать читать...

Цитата:
2) The slave address is following the start condition for recognition use. For the SSD1306, the slave
address is either “b0111100” or “b0111101” by changing the SA0 to LOW or HIGH (D/C pin acts as
SA0).
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 21.09.2016, 22:00  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от dosikus Посмотреть сообщение
А он 7битный и равен 0x3C(D) и занимает старшие 7бит отсюда и сдвиг влево на 1 бит. Что в итоге и дает твои 0x78(A).
Блин опять поверил либе. Там же для 10х либа. Там и был адрес 0х78. А надо было 0х3С ))) Я даташит открыл, увидел единички. Набрал с либы в калькулатор 78 в хексе. Увидел в битах ВРОДЕ оно и поверил... А оно не ОНО))...
Скажите чтобы выводить данные на дисплей нужно ТОЛЬКО писать?
miwutka вне форума  
Непрочитано 21.09.2016, 22:36  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

dosikus, подскажите плиз....
вот чужой пример отправки данных для инита.
PHP код:
/* Write command */
#define SSD1306_WRITECOMMAND(command)      ssd1306_I2C_Write(SSD1306_I2C, SSD1306_I2C_ADDR, 0x00, (command))

/* Init LCD */
    
SSD1306_WRITECOMMAND(0xAE); //display off
    
SSD1306_WRITECOMMAND(0x20); //Set Memory Addressing Mode   
    
SSD1306_WRITECOMMAND(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    
SSD1306_WRITECOMMAND(0xB0); //Set Page Start Address for Page Addressing Mode,0-7
    
SSD1306_WRITECOMMAND(0xC8); //Set COM Output Scan Direction
    
SSD1306_WRITECOMMAND(0x00); //---set low column address
    
SSD1306_WRITECOMMAND(0x10); //---set high column address
    
SSD1306_WRITECOMMAND(0x40); //--set start line address
    
SSD1306_WRITECOMMAND(0x81); //--set contrast control register
    
SSD1306_WRITECOMMAND(0xFF);
    
SSD1306_WRITECOMMAND(0xA1); //--set segment re-map 0 to 127
    
SSD1306_WRITECOMMAND(0xA6); //--set normal display
    
SSD1306_WRITECOMMAND(0xA8); //--set multiplex ratio(1 to 64)
    
SSD1306_WRITECOMMAND(0x3F); //
    
SSD1306_WRITECOMMAND(0xA4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    
SSD1306_WRITECOMMAND(0xD3); //-set display offset
    
SSD1306_WRITECOMMAND(0x00); //-not offset
    
SSD1306_WRITECOMMAND(0xD5); //--set display clock divide ratio/oscillator frequency
    
SSD1306_WRITECOMMAND(0xF0); //--set divide ratio
    
SSD1306_WRITECOMMAND(0xD9); //--set pre-charge period
    
SSD1306_WRITECOMMAND(0x22); //
    
SSD1306_WRITECOMMAND(0xDA); //--set com pins hardware configuration
    
SSD1306_WRITECOMMAND(0x12);
    
SSD1306_WRITECOMMAND(0xDB); //--set vcomh
    
SSD1306_WRITECOMMAND(0x20); //0x20,0.77xVcc
    
SSD1306_WRITECOMMAND(0x8D); //--set DC-DC enable
    
SSD1306_WRITECOMMAND(0x14); //
    
SSD1306_WRITECOMMAND(0xAF); //--turn on SSD1306 panel 
Я буду отправлять данные вот так
PHP код:
void ssd1306_write(uint16_t addressuint8_t data)
{
    
    
I2C1-›CR2 =  I2C_CR2_AUTOEND | (3‹‹16) | (SSD1306_I2C_ADDR‹‹1); 
        
            
/* Check Tx empty */
      
while (!(I2C1-›ISR I2C_ISR_TXE) );
    
     
I2C1-›TXDR =(uint8_t) (address››8); /* Byte to send */
     
I2C1-›CR2 |= I2C_CR2_START/* Go */
        
        
while (!(I2C1-›ISR I2C_ISR_TXIS) );
        
I2C1-›TXDR = (uint8_t)(address &0x00FF); /* Byte to send */
    
        
while (!(I2C1-›ISR I2C_ISR_TXIS) );
        
        
I2C1-›TXDR data /* Byte to send */
         

исходя из этого #define SSD1306_WRITECOMMAND(command) ssd1306_I2C_Write(SSD1306_I2C, SSD1306_I2C_ADDR, 0x00, (command)) в моей функции нужно address тоже постоянно 0х00 писать? А data уже будет 0хAE потом 0x20,0x10,0xB0 и т.д....?
miwutka вне форума  
Непрочитано 21.09.2016, 22:51  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Помогите понять немного принцип как к нему обращаться. Например я хочу включить дисплей. 0xAF - включить дисплей. Значит я пишу строку: ssd1306_write(0x00, 0xAF); ???
В моей функции мы передаем 16-бит адрес регистра а потом 8 бит данных. А как тут надо?
Наверно вот так?? Настраиваем 1 бит на передачу, автозавершение, пишем адрес дисплея, пишем в TXDR то что хотим передать, генерируем старт....

PHP код:
void ssd1306_write(uint8_t data)
{
    
    
I2C1-›CR2 =  I2C_CR2_AUTOEND | (1‹‹16) | (SSD1306_I2C_ADDR‹‹1); 
        
            
/* Check Tx empty */
      
while (!(I2C1-›ISR I2C_ISR_TXE) );
    
    
I2C1-›TXDR data /* Byte to send */
     
I2C1-›CR2 |= I2C_CR2_START/* Go */
        
        
while (!(I2C1-›ISR I2C_ISR_TXIS) );
        

miwutka вне форума  
Непрочитано 21.09.2016, 23:55  
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

сделал такой инит начальный. Реакции никакой у дисплея. Хоть бы засветился чтоли... ))
PHP код:
Init_I2C();
   
Delay_ms(100);
//   ssd1306_write2(0xAF);
   
ssd1306_write2(0xAE); //display off
    
ssd1306_write2(0x20); //Set Memory Addressing Mode   
    
ssd1306_write2(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
    
ssd1306_write2(0xB0); //Set Page Start Address for Page Addressing Mode,0-7
    
ssd1306_write2(0xC8); //Set COM Output Scan Direction
    
ssd1306_write2(0x00); //---set low column address
    
ssd1306_write2(0x10); //---set high column address
    
ssd1306_write2(0x40); //--set start line address
    
ssd1306_write2(0x81); //--set contrast control register
    
ssd1306_write2(0xFF);
    
ssd1306_write2(0xA1); //--set segment re-map 0 to 127
    
ssd1306_write2(0xA6); //--set normal display
    
ssd1306_write2(0xA8); //--set multiplex ratio(1 to 64)
    
ssd1306_write2(0x3F); //
    
ssd1306_write2(0xA4); //0xa4,Output follows RAM content;0xa5,Output ignores RAM content
    
ssd1306_write2(0xD3); //-set display offset
    
ssd1306_write2(0x00); //-not offset
    
ssd1306_write2(0xD5); //--set display clock divide ratio/oscillator frequency
    
ssd1306_write2(0xF0); //--set divide ratio
    
ssd1306_write2(0xD9); //--set pre-charge period
    
ssd1306_write2(0x22); //
    
ssd1306_write2(0xDA); //--set com pins hardware configuration
    
ssd1306_write2(0x12);
    
ssd1306_write2(0xDB); //--set vcomh
    
ssd1306_write2(0x20); //0x20,0.77xVcc
    
ssd1306_write2(0x8D); //--set DC-DC enable
    
ssd1306_write2(0x14); //
    
ssd1306_write2(0xAF); //--turn on SSD1306 panel 
miwutka вне форума  
Непрочитано 22.09.2016, 00:19  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Дык, он же не совсем шибанутый на весь свой силиконовый мозг, чтобы взять и просто так заработать! Для него ты глухонемой сын конфы. Сниппетсы ты не смотрел, в даташит на SSD1306 не заглядывал, а ждёшь результата, как с моря погоды.
STM32F0 вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OLED из ЖК 1602 mikesmith Делимся опытом 0 19.05.2016 17:34
LCD или OLED графический дисплей? NecroSS Электроника - это просто 0 06.08.2010 21:33
OLED индикаторы(возможно, от мобильных телефонов, 64х48 и более) Savrik Информация по радиокомпонентам 11 30.06.2010 12:17
Pictiva 128x64 (SSD0323) OLED Module Proteus VSM Model OttoStirliz Микроконтроллеры, АЦП, память и т.д 28 02.04.2008 17:44


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot