(прочитал что ему нужно 2.8-2.9 вольта)
поставить стабилитрон BZX55C3v3 и последовательно диод ?
от 3,3 В может сгореть, поищите хотя бы на 2,8-3 В стабилизаторы например LP3985-2.8, LP3985-3.0, TPS76330DBVR, MIC5219-3.0.ВитГо писал(а):Я нашел следующие материалы:
http://www.sunbizhosting.com/~spiral/1100/
http://ziblog.ru/2011/04/12/podklyuchen ... okia-1100/
Как то от 3.3 после предупреждения боязно питать...
Не надо боятся, работает без проблем при напряжение 3.3в.ВитГо писал(а): Как то от 3.3 после предупреждения боязно питать...
А почему должно быть 7 ?otest писал(а):См. программу что в ней делается. И почему от управления 6 а не 7 проводов?
vddi на работу не влияет, видел кучу схем где питание vddi и vcc объединены.otest писал(а):На моей схеме приведённой выше VDDI 1,8v
Для STM не пишу. Если правильно понял первой командой идёт очистка. Я делаю по другому.
1. сброс
2. инит.
3 очистка
4 печать
Скорость менял, задержки менял...Foks писал(а):Не факт что предыдущий дисплей битый. Возможно у Вас скорость интерфейса была выше, чем поддерживает дисплей, либо задержки между операциями слишком малы.
если можно поподробней опиширезет на VCC, и сброс программный
ну в принципе уже все описалotest писал(а):если можно поподробней опиширезет на VCC, и сброс программный
Код: Выделить всё
; Информация о подключении дисплея:
; Бит RST (RESET). Сброс дисплея
; Если не используется аппаратный сброс то можно завести на VCC (+3 v.)
; для включения аппаратного сброса смотрите ниже процедуру LCD_INIT
LCD_RST_ODR EQU GPIOC_ODR ; порт для установки/сброса бита
LCD_RST_BIT EQU 0 ; номер бита RST
; бит CS (CAS). Выбор дисплея для операции
LCD_CS_ODR EQU GPIOC_ODR ; порт для установки/сброса бита
LCD_CS_BIT EQU 1 ; номер бита CS
; бит SDA (DATA). Данные для дисплея
LCD_SDA_ODR EQU GPIOC_ODR ; порт для установки/сброса бита
LCD_SDA_BIT EQU 2 ; номер бита SDA
; бит SCLK (CLK). Тактирование данных
LCD_SCLK_ODR EQU GPIOC_ODR ; порт для установки/сброса бита
LCD_SCLK_BIT EQU 3 ; номер бита SCLK
Код: Выделить всё
; Макросы для управления выводами подключения дисплея
; не менять! используется в программе управления дисплея !
; -CS (выбор устройства)
MACRO
SET_CS
SET_BIT PERIPH_BB_BASE, LCD_CS_ODR, LCD_CS_BIT
MEND
MACRO
RES_CS
RES_BIT PERIPH_BB_BASE, LCD_CS_ODR, LCD_CS_BIT
MEND
; -RST (сброс устройства)
MACRO
SET_RST
SET_BIT PERIPH_BB_BASE, LCD_RST_ODR, LCD_RST_BIT
MEND
MACRO
RES_RST
RES_BIT PERIPH_BB_BASE, LCD_RST_ODR, LCD_RST_BIT
MEND
; SCLK (строб данных)
MACRO
SET_SCLK
SET_BIT PERIPH_BB_BASE, LCD_SCLK_ODR, LCD_SCLK_BIT
MEND
MACRO
RES_SCLK
RES_BIT PERIPH_BB_BASE, LCD_SCLK_ODR, LCD_SCLK_BIT
MEND
; SDA (данные)
MACRO
SET_SDA
SET_BIT PERIPH_BB_BASE, LCD_SDA_ODR, LCD_SDA_BIT
MEND
MACRO
RES_SDA
RES_BIT PERIPH_BB_BASE, LCD_SDA_ODR, LCD_SDA_BIT
MEND
Код: Выделить всё
; Управляющая последовательность инициализации дисплея
LCD_INIT_SEQ DCB 0xE2 ; софтварный сброс
DCB 0xEB ; температурная компенсация включена
DCB 0x2F ; режим питания
; DCB 0xA1 ; направление справа на лево (зеркало по горизонту)
DCB 0xA4 ; очистить все пиксели жки
DCB 0xA6 ; позитивное изображение
; DCB 0xA7 ; негативное изображение
DCB 0xAF ; включить дисплей
Код: Выделить всё
LCD_INIT
; +--------------------------------------------------------------+
; | ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ |
; |--------------------------------------------------------------|
; | Процедура настраивает дисплей для последующей работы |
; +--------------------------------------------------------------+
PUSH {LR}
RES_SCLK ; уберем строб данных
RES_SDA ; уберем данные
RES_CS ; -CS (выберем устройство)
; фрагмент КОДа ДЛЯ АППАРАТНОГО СБРОСА дисплея ------------------------------------
; без него сброс осуществляется только программно
; если дисплей плохо "заводиться" то можно попробовать сделать еще и аппаратный
; сброс - раскомментируйте весь блок !
; иногда дополнительно нужно подобрать задержку для сброса (по умолчанию 100000)
; RES_RST ; -RST (сбросим дисплей)
; MOV32 R0 , #100000 ; задержка для сброса дисплея
;LCD_RESDELAY SUBS R0 , R0 , #1
; BNE LCD_RESDELAY
; SET_RST ; дисплей "на старт"
;
; -----------------------------------------------------------------------------
; выдача на дисплей последовательности инициализации
MOV32 R5 , LCD_INIT_SEQ
MOV R6 , #6 ; количество команд инициализации
LCD_INIT_LOOP LDRB R2 , [R5], #1 ; загрузим команду
BL LCD_SEND_COMAND ; отправим ее на дисплей
SUBS R6 , R6 , #1 ; уменьшим счетчик
BNE LCD_INIT_LOOP ; циклимся пока не передадим все команды
LCD_CLEAR_ACTION ; точка входа для очистки дисплея
; установка координат начала вывода данных
MOV R2 , #0 ; Y
MOV R3 , #0 ; X
BL LCD_ATYX
; цикл очистки
MOV R3 , #(96*9)
MOV R2 , #0x00 ; значение очистки
LCD_INIT_L1 BL LCD_SEND_DATA
SUBS R3 , R3 , #1
BNE LCD_INIT_L1 ; циклимся пока не очистим
POP {LR}
BX LR ; возврат из подпрограммы
Весь бы пример, Дискавери есть и дисплей тоже.ВитГо писал(а):Далее код инициализации
на реализацию не глядите, важнее алгоритм
Ну и остается только код LCD_SEND_COMAND - это как раз отправка команды на дисплей.
сбрасываем SCLK в "0" сбрасываем CS в "0" (дисплей активен при лог "0")
первый бит 0 (для команды) выставляем на SDA потом дергаем SCLK в "1", потом убираем SCLK в "0" и дальше передаем 8 бит данных, начиная со старшего к младшему, каждый раз дергая SCLK
в конце выставляем CS в "1" - это как раз отключение от работы с дисплеем
код нужен ?