СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №9/2016

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 52 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2016 Отдельная команда задания скоро- сти обмена Set Baud Rate обеспечивает выбор скорости обмена через UART из набора стандартных значений в диапа- зоне от 110 до 600 000 бит/с. Отдельная команда управления изображением blitComtoDisplay зада- ёт горизонтальную и вертикальную позиции верхнего левого угла изо- бражения, которое будет выведено на дисплей, ширину и высоту этого изо- бражения, а далее в своём теле содер- жит само изображение, передаваемое попиксельно в виде 16-разрядных слов, значение каждого из которых опреде- ляет цвет пикселя. Эта команда может быть очень длинной. Группа системных команд обеспе- чивает вывод на дисплей информа- ции о модели и версиях встроенного ПО (SPE, PmmC) модуля, а также зада- ёт режим, тайм-аут и скорость прокрут- ки изображения на дисплее. Основ- ные системные команды перечислены в таблице 5. Чтобы отменить прокрут- ку любого выводимого на дисплей изо- бражения, заданную в программе SPE по умолчанию, необходимо передать в модуль команду SSTimeout(0). Заметим, что отобразив, например, на дисплее какие-либо графические изображения, можно тут же рядом с ними или поверх них вывести и тек- стовые данные. И наоборот. То есть тек- стовый и графический режимы не раз- деляются. Рассмотримформат команды на при- мере команды Joystick. Передача через UART всегда ведётся побайтно. Сначала МК передаёт так называемый cmd-код команды (для Joystick cmd = 0xFFD9). Первым всегда передаётся старший байт. Если команда корректно воспри- нята модулем, он возвращает байт под- тверждения ACK, всегда равный 0x06. Какое-либо иное значение байта под- тверждения говорит о некорректном приёме команды. Затем модуль воз- вращает ответ на команду – один байт с номером кнопки, нажатой на момент опроса, то есть на момент поступления команды Joystick. Соответствие между значением ответа и изображёнными на принципиальной схеме кнопками при- ведено в таблице 6. Заметим, что одно- временное нажатие двух и более кно- пок является некорректным и приведёт к неоднозначному результату. Таблица 4. Основные команды доступа к памяти режима Serial Команда (библиотечная функция) Назначение команды peekB Возвратить прочитанное значение младшего байта системного регистра графического процессора с заданным адресом pokeB Задать значение младшего байта системного регистра графического процессора с заданным адресом peekW Возвратить прочитанное значение слова (2 байта) системного регистра графического процессора с заданным адресом pokeW Задать значение слова (2 байта) системного регистра графического процессора с заданным адресом Таблица 5. Основные системные команды режима Serial Команда (библиотечная функция) Назначение команды sys_GetModel Возвратить модель дисплея в форме текстовой строки без разделителя NULL sys_GetVersion Возвратить версию приложения SPE, загруженного в дисплей sys_GetPmmC Возвратить версию «прошивки» PmmC, загруженной в дисплей SSTimeout Задать значение тайм-аута экранной заставки в диапазоне 1…65535 мс. Значение 0 отключает экранную заставку SSSpeed Задать скорость прокрутки экранной заставки. Диапазоны возможных значений скорости различаются для различных моделей модулей. Для μOLED-128-G2 этот диапазон составляет от 0 (самая быстрая скорость) до 3 (самая медленная скорость) SSMode Задать направление прокрутки экранной заставки Таблица 6. Соответствие между значением ответа на команду Joystick и кнопками на принципиальной схеме, показанной на рисунке 3 (позициями джойстика) Значение байта ответа Кнопка на схеме, изображённой на рисунке 3 Позиция джойстика 0 Ни одна кнопка не нажата RELEASED 1 SB2 «U» Вверх – UP 2 SB1 «L» Влево – LEFT 3 SB4 «D» Вниз – DOWN 4 SB5 «R» Вправо – RIGHT 5 SB3 «P» Центр – PRESS Команда позиционирования тексто- вого курсора в определённое положе- ние на дисплее txt_MoveCursor будет выглядеть следующим образом. Сна- чала код cmd = 0xFFE4 (2 байта), затем параметры: номер строки (2 бай- та), номер столбца (2 байта). Ответ форматом этой команды не предус- мотрен. Например, чтобы переме- стить курсор в строку 7 (0x07), ряд 12 (0x0C), МК должен передать в модуль последовательность байтов: 0xFF 0xE4 0x00 0x07 0x00 0x0C, а в подтвержде- нии получить 0x06. Старшие байты в двухбайтовых параметрах должны быть заполнены незначащими нуля- ми. По умолчанию после сброса для вывода на дисплей текстовых дан- ных задан самый мелкий из возмож- ных размеров шрифта – «4D SYSTEM (7x8)» (см. рис. 5). С учётом разреше- ния дисплея 128 × 128 точек, для тако- го шрифта доступно тестовое поле из 16 строк и 18 столбцов. Команды вывода на дисплей символа и символь- ной строки выводят данные, начиная с текущей позиции курсора. Чтобы нарисовать на дисплее полый (не закрашенный) прямоугольник функцией gfx_Rectangle, нужно пере- дать код cmd = 0xFFCF (2 байта), коор- динаты позиции X1 (2 байта) в пик- селях, позиции Y1 (2 байта) в пиксе- лях, позиции X2 (2 байта) в пикселях, позиции Y2 (2 байта) в пикселях, цвет (2 байта) этого прямоугольника. Ответ форматом этой команды не предусмо- трен. Например, для синего (код цве- та 0x001F) прямоугольника, рисуемо- го из точки с координатами X1 = 10 (0x0A), Y1 = 20 (0x14) в верхнем левом углу дисплея в точку с координатами X2 = 80 (0x50), Y2 = 80 (0x50) в пра- вом нижнем углу, МК должен передать в модуль последовательность байтов: 0xFF 0xCF 0x00 0x0A 0x00 0x14 0x00 0x50 0x00 0x50 0x00 0x1F, а в подтверж- дение получить 0x06. Каждая переданная от МК коман- да требует определённого времени для её обработки модулем. Это время между моментами поступления коман- ды и генерации подтверждения на неё или ответа, если последний предусмо- трен форматом. Необходимо заметить, что передав в модуль команду, МК не должен передавать что-либо ещё, пока не дождётся от модуля подтверждения, а затем и ответа, если последний пред- усмотрен форматом. В противном слу- чае логика модуля поведёт себя неод- нозначно.

RkJQdWJsaXNoZXIy MTQ4NjUy