22.09.2016, 00:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Сообщение от dosikus
|
#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; }
|
Разобрался с даташитом. Понял что мне дали готовый код )) Теперь буду разбираться как формировать изображение... Если у кого будет "натхнення" напишите плиз как его формировать)) Там читать кучу... ))
Последний раз редактировалось miwutka; 22.09.2016 в 00:34.
|
|
|
|
22.09.2016, 00:32
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
STM32F0, шо такое снипет? Даташит смотрел раз 5... Читаю чужой код и пытаюсь понять по даташиту почему именно так пишут. Вот разобрался с инитом... ))) Далее нужно очистить дисплей и выводить изобр....
|
|
|
|
22.09.2016, 01:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Думаю вот так выводить изображение. Гляньте плиз. Еще не проверял.
PHP код:
|
typedef enum {
SSD1306_COLOR_BLACK = 0x00, /*!‹ Black color, no pixel */
SSD1306_COLOR_WHITE = 0x01 /*!‹ Pixel is set. Color depends on LCD */
} SSD1306_COLOR_t;
void SSD1306_Fill(SSD1306_COLOR_t color) {
/* Set memory */
memset(SSD1306_Buffer, (color == SSD1306_COLOR_BLACK) ? 0x00 : 0xFF, sizeof(SSD1306_Buffer));
}
void ssd1306_Multisend(uint8_t control_byte, uint8_t* data, uint16_t count)
{
uint8_t i;
I2C1-›CR2 = I2C_CR2_AUTOEND | (2‹‹16) | (SSD1306_I2C_ADDR‹‹1);
/* Check Tx empty */
while (!(I2C1-›ISR & I2C_ISR_TXE) );
I2C1-›TXDR = control_byte;
I2C1-›CR2 |= I2C_CR2_START;
for (i = 0; i ‹ count; i++) {
while (!(I2C1-›ISR & I2C_ISR_TXIS) );
I2C1-›TXDR = data[i];
}
}
void SSD1306_UpdateScreen_My(void) {
uint8_t m;
for (m = 0; m ‹ 8; m++) {
ssd1306_send(0x00,0xB0 + m);
ssd1306_send(0x00,0x00);
ssd1306_send(0x00,0x10);
/* Write multi data */
ssd1306_Multisend(0x40, &SSD1306_Buffer[SSD1306_WIDTH * m], SSD1306_WIDTH);
}
}
|
|
|
|
|
22.09.2016, 02:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Сделал чтобы экран заливался черным либо белым..... Ну теперь надо понять процесс рисования...
|
|
|
|
22.09.2016, 09:08
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,563 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Код:
|
void ssd1306_Multisend(uint8_t control_byte, uint8_t* data, uint16_t count)
{
uint8_t i;
I2C1-›CR2 = I2C_CR2_AUTOEND | (2‹‹16) | (SSD1306_I2C_ADDR‹‹1);
/* Check Tx empty */
while (!(I2C1-›ISR & I2C_ISR_TXE) );
I2C1-›TXDR = control_byte;
I2C1-›CR2 |= I2C_CR2_START;
for (i = 0; i ‹ count; i++) {
while (!(I2C1-›ISR & I2C_ISR_TXIS) );
I2C1-›TXDR = data[i];
}
} |
Так не получиться.
Во первых вот это счетчик передаваемых после адреса байт
Код:
|
I2C1-›CR2 = I2C_CR2_AUTOEND | (2‹‹16) | (SSD1306_I2C_ADDR‹‹1); |
Во вторых он только на 256
Цитата:
|
Bits 23:16 NBYTES[7:0]: Number of bytes
The number of bytes to be transmitted/received is programmed there.
|
Можно попробовать через DMA .
Заливка одним цветом
__________________
Осторожно , злой кот
Последний раз редактировалось dosikus; 22.09.2016 в 09:11.
|
|
|
Сказали "Спасибо" dosikus
|
|
|
22.09.2016, 09:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Разобрался. Получилось выводить и строки(готовые шрифты есть), и заливка, и инвертирование точек. Ночь оказалась продуктивной )))
Теперь надо подумать как DMA использовать для дисплея... При обновлении всего экрана заметно как он заливается чуток. Частота шини 400 кГц. Если увеличить частоту это может ускорить заливку?
|
|
|
|
22.09.2016, 10:01
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,563 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
__________________
Осторожно , злой кот
|
|
|
Сказали "Спасибо" dosikus
|
|
|
22.09.2016, 12:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
на 1.24 МГц работает хорошо... Буду ДМА подключать
|
|
|
|
22.09.2016, 12:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
А скажите код реально закрыть так чтоб не считали? ))) мне этот дисплей больше нравиться чем HD44780... У него ероглифы не пробегают. Скоро прийдут 2.4 дюйма ЖК. Еще их буду юзать...
Последний раз редактировалось miwutka; 22.09.2016 в 12:18.
|
|
|
|
22.09.2016, 12:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 05.07.2009
Адрес: Запорожье
Сообщений: 1,531
Сказал спасибо: 309
Сказали Спасибо 53 раз(а) в 48 сообщении(ях)
|
Re: OLED ssd1306 + STM32f030f4
Program Size: Code=4076 RO-data=10472 RW-data=76 ZI-data=2732 - сколько прошивка моя занимает в мк места? 10 кб?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:04.
|
|