GithubHelp home page GithubHelp logo

jimmy54 / nrf52-keyboard Goto Github PK

View Code? Open in Web Editor NEW

This project forked from genokolar/nrf52-keyboard

0.0 1.0 0.0 996 KB

A ble keyboard firmware using nRF52

License: Other

C# 1.28% C 80.17% Makefile 4.35% C++ 13.14% Objective-C 1.07%

nrf52-keyboard's Introduction

nrf52-keyboard

Overview

This is a TMK keyboard firmware for nRF52810, nRF51822 version see here.

概述

这是一个基于nrf52蓝牙键盘的固件,使用了nRF SDK 15.3作为底层硬件驱动,并使用TMK键盘库作为键盘功能的上部实现。

此固件中的USB部分和KeymapDownloader部分重用了 nrf51822-keyboard 的代码。

目录结构

  • application/ 固件相关
    • main/ 主程序
      • src/ 源码
        • ble/ 蓝牙相关代码
        • tmk/ tmk桥接相关
        • config/ 硬件配置相关
      • project/ 工程
    • bootloader/
      • src/ 源码
      • project/ 工程
  • keyboard/ 各个键盘实现相关
  • SDK/ nRF52 SDK
  • tmk/ tmk core 相关
  • usb/ USB部分代码

功能亮点

  • 蓝牙/USB双模切换
  • USB全键无冲
  • 配列下载更新
  • 电量上传
  • 支持多媒体按键
  • 耗电量低至400ua(使用lot60-ble硬件在关闭所有灯光条件下测得,不代表所有条件下的状态)
  • 高度自定义的事件系统

硬件支持

当前支持nrf52810和nrf52832两种主控硬件,此固件支持的键盘列表见Keyboard目录。

编译

首先下载 nRF5 SDK 15.3, 解压并放入SDK文件夹。 然后安装 gcc-arm-none-eabi-7-2018-q2-update,将template目录中对应平台的配置文件模板复制一份,重命名为Makefile.posixMakefile.windows,修改里面工具路径为你的安装目录。

Bootloader 的编译

参见这篇文章,先编译uECC库,然后再编译Bootloader

cd application/bootloader/project/armgcc
make

蓝牙程序和USB控制器的编译

现在蓝牙和USB控制器程序的Makefile都放在一起了。进入对应的硬件目录,直接make即可。

cd keyboard/lot60-ble
make

硬件移植

若使用的硬件方案与已有的硬件相同,则可以将keyboard文件夹内的配置文件复制一份并修改。主要修改项目是Makefile与config.h。

UART 通讯协议

基础格式

CMD DAT ... DAT SUM

  • CMD:命令
  • DAT:数据
  • SUM:前面所有数据和命令的校验和

其中,根据CMD的不同,DAT的长度可能有所变化。若DAT长度为0,则不需要SUM。

主机(CH554)会定期向从机(nRF52810)发送状态数据包,请求从机上传。

主机命令

Ping 包与当前状态

0b0001 xxxx
       ||||
       |||+--- 上次接收数据是否成功(成功置为1)
       ||+---- 充电状态(充满置为1)
       |+----- 主机状态(与主机连接成功置为1)
       +------ 当前Protocol

无DAT

LED 下传

0b010x xxxx
     + ++++--- 5Bit的LED状态

无DAT

Keymap 下传

0b1xxx xxxx 
   ||| ||||
   +++-++++--- 当前Keymap分包的ID,从0开始

DAT长度为60,存储着Keymap数据

从机命令

按键数据包上传

0b1aab bbbb 
   ||+ ++++--- 数据包的数据部分长度
   ++--------- 数据包类型: 0: keyboard, 1: consumer, 2: system, 3: nkro keyboard

DAT长度由上面定义

Keymap 响应

同 Ping 包与当前状态的格式。0x11为成功,0x10为失败。

nrf52-keyboard's People

Contributors

jim-kirisame avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.