Использование JLink, STLink и других подобных отладчиков для записи прошивки, я предусмотрел на печатной плате (PCB) и корпусе разъём SWD для отладки. Для тех, у кого нет опыта разработки аппаратного обеспечения, позже я также выпущу загрузчик, который позволит обновлять прошивку через USB-порт.
О выборе электродвигателя?
Я использую электродвигатель 2204, бывший в употреблении. Однако в настоящее время его не так просто найти, поэтому можно выбрать аналогичный бесщёточный электродвигатель с подходящими размерами. Что касается параметров, то значение KV должно быть несколько ниже, примерно 200. На роторе электродвигателя необходимо вручную установить радиально намагниченный постоянный магнит для использования с энкодером. При использовании электродвигателей разных моделей может потребоваться настройка параметров FOC.
Как сопоставить кнопки клавиатуры с их функциями?
Чтобы полностью использовать преимущества схемы сканирования сдвигового регистра, описанной в видео, прошивка отделяет схему разводки печатной платы от порядка сканирования кнопок. Сопоставление выполняется программно. То есть порядок соединения кнопок на печатной плате может быть любым, а после завершения разводки порядок сканирования можно переназначить в файле hw_keyboard.h
в массиве keyMap[KEYMAP_NUM][IO_NUMBER]
.
Это двумерный массив, представляющий собой сопоставление клавиш KEYMAP_NUM слоёв с IO_NUMBER кнопками (то есть количеством кнопок на вашей клавиатуре); слой 0 является особым, он отвечает за сопоставление раскладки клавиатуры со стандартной раскладкой, последующие слои 1, 2, 3, 4... являются настраиваемыми и отвечают за сопоставление стандартных раскладок с любыми другими раскладками.
Пример:
Рассмотрим кнопку, на которую указывает стрелка на принципиальной схеме. Эта кнопка может находиться в любом месте печатной платы, но мы видим, что она находится на 10-м месте слева направо (согласно соединению 74HC165, то есть порядку сканирования сдвига). Поэтому её номер — 9 (считая от 0).
Если мы поместим эту кнопку на реальной печатной плате справа от Alt, то, как видно из кода в красном прямоугольнике на следующем рисунке, соответствующий элемент в первом слое сопоставления (стандартная раскладка) — это RIGHT_ALT
, номер которого равен 76. Тогда в элементе 76 на нулевом слое сопоставления мы должны указать номер 9 (синий прямоугольник).
Таким образом, мы получаем стандартную клавиатуру с хорошим сопоставлением клавиш. Последующие слои сопоставления можно настроить по своему усмотрению, и нет необходимости использовать цифровые обозначения. Вместо этого можно напрямую использовать имена кнопок перечисления.
Таким образом, если вы хотите изменить раскладку клавиатуры, вам нужно только добавить или удалить несколько последовательно соединённых 74HC165 на принципиальной схеме, затем выполнить разводку на печатной плате и удалить или добавить некоторые числа в код сопоставления нулевого слоя (например, моя клавиатура имеет 83 клавиши).; последующие слои могут быть изменены аналогичным образом.
В коде функция keyboard.Remap
используется для сопоставления различных слоёв, например, keyboard.Remap(2)
— это использование второго слоя сопоставления.
Об алгоритме фильтрации сигналов от кнопок?
Прошивка использует независимую фильтрацию для каждой кнопки, но делает это очень эффективно (в конце концов, это 1 кГц сообщений, и каждое сообщение сканируется дважды, что означает необходимость выполнения 1000 * 2 * [количество кнопок] операций фильтрации каждую секунду).
Принцип работы довольно прост: причина дребезга кнопок заключается в том, что после нажатия они будут многократно переключаться между высоким и низким уровнями напряжения. Обычно это занимает несколько десятков микросекунд (обратите внимание, что это время стабилизации уровня напряжения, а не время срабатывания кнопки, которое может достигать нескольких миллисекунд из-за неопределённости времени контакта кнопки).
QMK предоставляет различные методы фильтрации в документации qmk_firmware/feature_debounce_type, включая Eager и Defer, симметричные и асимметричные и т. д.
По умолчанию используется симметричная задержка глобальной фильтрации: все кнопки фильтруются одинаково, и данные сканирования отправляются только после того, как все кнопки стабилизируются.
Альтернативой является агрессивный метод фильтрации, который отправляет данные сканирования сразу после обнаружения изменения кнопки. Но после этого в течение N микросекунд никакие другие кнопки не будут реагировать (это позволяет избежать отправки постоянно дребезжащих кнопок). Этот метод имеет низкую задержку запуска, но чувствителен к шуму и может легко вызвать ложное срабатывание.
Для прошивки клавиатуры Huanwen я использую симметричную задержку независимой фильтрации: каждая кнопка проверяется дважды. Если при первом обнаружении изменения кнопки оно подтверждается при повторной проверке через N микросекунд, то считается, что кнопка была нажата. Этот процесс использует эффективную обработку с помощью операции XOR, которая идеально подходит для буфера кнопок, поскольку он уже представляет собой сдвиговый регистр, где каждый бит представляет отдельную кнопку.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )