Кремень КД Реклама
Кремень КМ Реклама

Сенсорный экран для большого дерева.

jmz
Идет загрузка
Загрузка
28.12.2022
4079
5
Техничка

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8

Сенсорный экран для большого дерева.Подключение сенсорного экрана MKS TS35 к платам BigTreeTech SKR.

При всей широте ассортимента электроники для 3D печати, выпускаемой компанией BIQU, в части экранов предложение ограничено Smart Screen различного размера. Такой экран представляет собой автономный принт сервер, ничего не знающий о внутреннем устройстве принтера, поэтому его возможности по настройке параметров принтера весьма и весьма ограничемы.Три предлагаемых модели умеют работать в режиме эмуляции экрана 12864 с полноценным доступом к меню принтера, но использование экрана 3,5 дюймового экрана для отображения такой картинки выглядит несколько расточительно.

Альтернативой выступает экран MKS TS35, ни разу не умный, но со подключением к стандарным EXP1/EXP2 разъёмам.Собственного микроконтроллера у этого экрана нет и отрисовкой картинки занимается прошивка основной платы.Поддержка TFT экранов в Marlin есть для STM32F1/F4 и для LPC176x, подключать экран я буду, соответственно, к SKR Mini v1.1 и SKR v1.3.Изначально MKS TS35 сделан для использования с MKS Robin Nano v2.x и v3.x, но благодаря удачной распиновке прекрасно дружит и с другими платами.

Первое, о чём нужно помнить - это альтернативный взгляд MKS на разъемы EXP1/EXP2.Проблема не новая и тянется со времен экранов 2004 и 12864. По сравнению RepRap электроникой, MKS использует перевернутые разъемы EXP1/EXP2.Три стандартных варианта решения:

  • снять пластиковую часть разъемов и поставить её ключем в другую сторону
  • спилить ключ на разъёмах кабеля (с одной стороны) и воткнуть их обратной стороной
  • взять кабель для подключения RepRap контроллеров к платам MKS

Пины для подключения MKS TS35 к SKR Mini v1.1 и SKR v1.3 уже прописаны в соответствующих pins.h файлах.Для других плат может потребоваться добавить следующие строчки

  #define BEEPER_PIN                 EXP1_01_PIN  #define BTN_ENC                    EXP1_02_PIN  #define BTN_EN1                    EXP2_03_PIN  #define BTN_EN2                    EXP2_05_PIN  #define TFT_CS_PIN                 EXP1_07_PIN  #define TFT_SCK_PIN                EXP2_02_PIN  #define TFT_MISO_PIN               EXP2_01_PIN  #define TFT_MOSI_PIN               EXP2_06_PIN  #define TFT_DC_PIN                 EXP1_08_PIN  #define TFT_A0_PIN                  TFT_DC_PIN  #define TFT_RESET_PIN              EXP1_04_PIN  #define LCD_BACKLIGHT_PIN          EXP1_03_PIN  #define TFT_BACKLIGHT_PIN    LCD_BACKLIGHT_PIN  #define TOUCH_BUTTONS_HW_SPI  #define TOUCH_BUTTONS_HW_SPI_DEVICE          1  #define TOUCH_CS_PIN               EXP1_05_PIN  #define TOUCH_SCK_PIN              EXP2_02_PIN  #define TOUCH_MISO_PIN             EXP2_01_PIN  #define TOUCH_MOSI_PIN             EXP2_06_PIN  #define LCD_READ_ID                       0xD3  #define LCD_USE_DMA_SPI  #define TFT_BUFFER_SIZE                   2400

Параметр TOUCH_BUTTONS_HW_SPI_DEVICE нужно сконфигурировать в соответствии с используемым аппаратным SPI.Для снижения нагрузки на микроконтроллер, вывод данных из буфера на экран осуществляется с использованием DMA, поэтому размер буфера не может превышать максимальное значение счётчика DMA контроллера.В этом месте заботливо прикопаны грабли для LPC176x. Возможности DMA контроллера в этих MCU ограничены передачей 4095 (0xFFF) 8-ми или 16-ти битных значений.Для сравнения - DMA контроллер в STM32 может передавать до 65535 (0xFFFF) таких значений.Из-за ограничений DMA контроллера вывод на экран у LPC176x осуществляется маленькими порциями и визуально медленнее, чем у STM32.

Осталось настроить соответствующие параметры в Configuration.h:У меня энкодер имеет склонность к перескакиванию через строчку, поэтому излишняя его ретивость ограничивается параметром

#define ENCODER_PULSES_PER_STEP 5

Задаем тип используемого экрана

#define MKS_TS35_V2_0

Указываем, какой графический интерфейс использовать

#define TFT_COLOR_UI

Включаем поддержку сенсорного экрана

#define TOUCH_SCREEN

Компилируем, прошиваем и радуемся результату.Сенсорный экран для большого дерева.Сенсорный экран для большого дерева.

С параметром #define LCD_LANGUAGE обращатся осторожно.При неправильном использовании, в зависимости от свежести кода, можно получить или нечитаемые цифробуквы, или нечитаемые (для большинства) иероглифы.Сенсорный экран для большого дерева.Первое лечится заменой выбранного языка на английский (en), второе -  заменой на язык, известный пользователю.

Сенсорный экран для большого дерева.

Если выбраный язык не использует иероглифы (т.е. не Корейский, не Китайский и не Японский), то в Configuration_adv.h:Включить поддержку юникода в именах файлов (имена в кодировке CP1251, CP866 и прочие KOI8-как по-прежнему не поддерживаются)

#define UTF_FILENAME_SUPPORT

(По желанию) включить поддержку длинных имен файлов при работе через COM порт.

#define LONG_FILENAME_HOST_SUPPORT#define LONG_FILENAME_WRITE_SUPPORT
Поддержка юникода и дополнительних наборов символов на момент написания статьи ещё ожидает включения в основной репозиторий.https://github.com/MarlinFirmware/Marlin/pull/25073

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.

Отписаться от уведомлений вы всегда сможете в профиле автора.

8
Комментарии к статье