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

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

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

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

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

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


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

Добрый день. Подключаю дисплей к МК. Нашел либы, кучу всего нашел под I2C интерфейс. Очень долго с ними разбираться. Хочу просто включить экран для начала. Может у кого есть под F030 готовый проект или код который просто запустить? Тот что я нашел написан проффи)) там 3 разных шрифта, куча макросов и т.д. Для быстрого старта от туда долго выпиливать куски буду. По ходу выпиливания еще и надо вникать в суть...
Код для F429 с гитхаба...
Реклама:
miwutka вне форума   Ответить с цитированием
Непрочитано 17.09.2016, 23:40   #2
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Могу под SPI для F10x предложить.
Висит на SPI1.
Вложения:
Тип файла: zip F103_oled_test.zip (1.71 Мб, 0 просмотров)
omercury вне форума   Ответить с цитированием
Сказали "Спасибо" omercury
miwutka (17.09.2016)
Непрочитано 17.09.2016, 23:57   #3
miwutka
Почётный гражданин KAZUS.RU
 
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
miwutka на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Спасибо. Пусть будет на всякий. Покупал было написано SPI, а пришел I2C. Ну я и хотел I2C - меньше проводов...
miwutka вне форума   Ответить с цитированием
Непрочитано 18.09.2016, 00:57   #4
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от omercury Посмотреть сообщение
Могу под SPI для F10x предложить.
Висит на SPI1.
Изображения:
 
AR_Favorit вне форума   Ответить с цитированием
Непрочитано 18.09.2016, 01:09   #5
индюк
Заблокирован
 
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,715
Сказал спасибо: 189
Сказали Спасибо 3,199 раз(а) в 2,074 сообщении(ях)
индюк на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Deley..........
индюк вне форума   Ответить с цитированием
Непрочитано 18.09.2016, 02:18   #6
omercury
Почётный гражданин KAZUS.RU
 
Аватар для omercury
 
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
omercury на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

Сообщение от индюк Посмотреть сообщение
Deley..........
Не нравится название файла?
Мой файл, как хочу - так и обзываю.

Фавориту вон нравится.

Сообщение от AR_Favorit Посмотреть сообщение
Содержимое видели?

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

Вот, пожалуйста.
За ХАЛ, сильно не пинайте.
Миниатюры:
Нажмите на изображение для увеличения
Название: IMG_5188.JPG
Просмотров: 0
Размер:	1.48 Мб
ID:	101694  
Вложения:
Тип файла: rar OLED_STM.rar (6.73 Мб, 0 просмотров)
Zoosman вне форума   Ответить с цитированием
Непрочитано 18.09.2016, 11:14   #8
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

AR_Favorit, Не, круче то, что у тебя CVAVR установлен ...


Сообщение от Zoosman Посмотреть сообщение
За ХАЛ, сильно не пинайте.
А что же?
Если не юзать кал, существенно похудеет не только прошивка но и исходник .
Код будет ясный и прозрачный в отличии от "спагетти" кала.
__________________
Осторожно , злой кот

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

Ну спагеттизмом я даже на АВР не страдал.
А вообще, кто бы спорил. ХАЛ однозначно зло...
Вот мэйн от ОЛЕД:


Нажмите, чтобы открыть спойлер

Код:
/**
  **************************************************  ****************************
  * File Name          : main.c
  * Date               : 28/04/2015 10:35:08
  * Description        : Main program body
	* Author		         : Zoosman
  **************************************************  ****************************
  */

/* Includes ------------------------------------------------------------------*/

#include "stm32f0xx_hal.h"
#include "stm32f0xx_hal_adc.h"
#include ‹string.h›
#include ‹stdlib.h›
#include ‹stdio.h›

#include ‹cstdio›
#include ‹cstdlib›

#include "platform.h"
#include "system.h"
#include "gpio.h"
#include "i2c.h"
#include "dma.h"
#include "usart.h"
#include "utils.h"
#include "adc.h"
#include "ssd1306xled.h"
#include "VW_logo.h"

extern uint8_t limit_sw_status;

void dev_init(void);
void Sample_SimpleRanging(void);


int main(void)
{
	

  HAL_Init();
	
	
	init_system();
	init_gpio();
	init_i2c();
	init_usart();
	init_dma();
	
	
	init_adc();
	
	ssd1306_init();

	ssd1306_fillscreen(1);

//	ssd1306_setpos(1,0);
	//ssd1306_string_font6x8("Test line 1");
//	ssd1306_setpos(20,1);
	//ssd1306_string_font6x8("test line 2");
	
	int x_offset = (128 - 48) / 2;
	ssd1306_draw_bmp(x_offset, 2, x_offset + 48, 8, matrix);
	
while (1)
  {
	//	ssd1306_string_font6x8("test screen");
	;
	}
}


#ifdef USE_FULL_ASSERT

/**
   * @brief Reports the name of the source file and the source line number
   * where the assert_param error has occurred.
   * @param file: pointer to the source file name
   * @param line: assert_param error line source number
   * @retval None
   */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */

}

#endif

Последний раз редактировалось Zoosman; 18.09.2016 в 11:39.
Zoosman вне форума   Ответить с цитированием
Непрочитано 18.09.2016, 11:41   #10
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: OLED ssd1306 + STM32f030f4

А вот весь код инита и работы с i2c .
Заметьте что ему уже не во что разворачиваться в отличии от кала и спл.
Нажмите, чтобы открыть спойлер

Код:
#define RDA5807_OWN_ADDRESS (0x11)
#define EEPROM_OWN_ADDRESS (0x50)
uint8_t  temp1, temp2;


	void i2c_init(void)
	{
		RCC-›AHBENR |= RCC_AHBENR_GPIOFEN;
		
		RCC-›APB1ENR |= RCC_APB1ENR_I2C1EN;
		RCC-›CFGR3 |= RCC_CFGR3_I2C1SW; 
		
		GPIOF-›AFR[0] |= (1‹‹(4*0)) |(1‹‹(4*1));
		GPIOF-›MODER &= ~(GPIO_MODER_MODER0 |GPIO_MODER_MODER1);
		GPIOF-›MODER |= (GPIO_MODER_MODER0_1 |GPIO_MODER_MODER1_1);
		GPIOF-›OTYPER |=(GPIO_OTYPER_OT_0 |GPIO_OTYPER_OT_1);
		
		I2C1-›TIMINGR = (uint32_t)0x00B01A4B; 
		I2C1-›CR1 = I2C_CR1_PE; 
  
	
		
	}


void 	rda5807_send_reg(uint8_t reg, uint8_t data_h,uint8_t data_l)
		{
		I2C1-›CR2 =  I2C_CR2_AUTOEND | (3‹‹16) | (RDA5807_OWN_ADDRESS‹‹1); 
		
			/* Check Tx empty */
	  while (!(I2C1-›ISR & I2C_ISR_TXE) );
	
	 I2C1-›TXDR = reg; /* Byte to send */
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
		
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		I2C1-›TXDR = data_h; /* Byte to send */
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		
		I2C1-›TXDR = data_l; /* Byte to send */
	
			
		}
uint16_t 	rda5807_read16_reg(uint8_t reg)
{ 
	 uint16_t temp=0;
	I2C1-›CR2 =   (1‹‹16) | (RDA5807_OWN_ADDRESS‹‹1); 
	 while (!(I2C1-›ISR & I2C_ISR_TXE) );
	 I2C1-›TXDR = reg; /* Byte to send */
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
	 while (!(I2C1-›ISR & I2C_ISR_TC) ){};
	 I2C1-›CR2 =  I2C_CR2_AUTOEND | (2‹‹16) | 
		            (RDA5807_OWN_ADDRESS‹‹1) |
		             I2C_CR2_RD_WRN |
		             I2C_CR2_NACK; 
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
	 while (!(I2C1-›ISR & I2C_ISR_RXNE) ){};
	 temp  = (uint16_t)(I2C1-›RXDR ‹‹8);
		while (!(I2C1-›ISR & I2C_ISR_RXNE) ){};
	 temp |=  (uint16_t)I2C1-›RXDR; 
		 return temp;
}
	

void 	rda5807_write16_reg(uint8_t reg, uint16_t data )
{
	I2C1-›CR2 =  I2C_CR2_AUTOEND | (3‹‹16) | (RDA5807_OWN_ADDRESS‹‹1); 
		
			/* Check Tx empty */
	  while (!(I2C1-›ISR & I2C_ISR_TXE) );
	
	 I2C1-›TXDR = reg; /* Byte to send */
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
		
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		I2C1-›TXDR = (uint8_t)(data››8); /* Byte to send */
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		
		I2C1-›TXDR = (uint8_t)(data &0x00FF); /* Byte to send */
	
}


uint8_t eeprom_read(uint16_t address)
{
	 uint8_t temp=0;
	I2C1-›CR2 =   (2‹‹16) | (EEPROM_OWN_ADDRESS‹‹1); 
	 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_TC) ){};
	 I2C1-›CR2 =  I2C_CR2_AUTOEND | 
		             (1‹‹16) | 
		            (EEPROM_OWN_ADDRESS‹‹1) |
		             I2C_CR2_RD_WRN |
		             I2C_CR2_NACK; 
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
	 while (!(I2C1-›ISR & I2C_ISR_RXNE) ){};
	 temp  = I2C1-›RXDR ;
	
		 return temp;
}

void eeprom_write(uint16_t address, uint8_t data)
{
	
	I2C1-›CR2 =  I2C_CR2_AUTOEND | (3‹‹16) | (EEPROM_OWN_ADDRESS‹‹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 */
	 	
}

void eeprom_pagewrite(uint16_t address, uint8_t *buf,uint8_t nbytes)
{
	uint8_t index=0;
	I2C1-›CR2 =  I2C_CR2_AUTOEND | ((2+nbytes)‹‹16) | (EEPROM_OWN_ADDRESS‹‹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 */
	for(index=0;index‹=nbytes-1;index++)
	 {
		while (!(I2C1-›ISR & I2C_ISR_TXIS) );
		
		I2C1-›TXDR = buf[index] ; /* Byte to send */
	 }
}

void eeprom_pageread(uint16_t address,uint8_t* buf,uint8_t nbytes)
{
	
	uint8_t index=0;
	I2C1-›CR2 =   (2‹‹16) | (EEPROM_OWN_ADDRESS‹‹1); 
	 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_TC) ){};
	 I2C1-›CR2 =  I2C_CR2_AUTOEND |
            		 (nbytes‹‹16) | 
		            (EEPROM_OWN_ADDRESS‹‹1) |
		             I2C_CR2_RD_WRN |
		             I2C_CR2_NACK; 
	 I2C1-›CR2 |= I2C_CR2_START; /* Go */
		for(index=0;index‹=nbytes-1;index++)
	 { 
	 while (!(I2C1-›ISR & I2C_ISR_RXNE) ){};
	 buf[index]  = I2C1-›RXDR ;
	
	 }
}
__________________
Осторожно , злой кот
dosikus вне форума   Ответить с цитированием
Сказали "Спасибо" dosikus
Zoosman (19.09.2016)
Ответ

Закладки


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

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, время: 13:55.


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