Giter Site home page Giter Site logo

lotlab / nrf52-keyboard Goto Github PK

View Code? Open in Web Editor NEW
403.0 18.0 264.0 1.67 MB

A ble keyboard firmware using nrf52810/52832

License: Other

C# 0.96% C 93.84% Makefile 5.07% Dockerfile 0.02% Shell 0.11%
keyboard tmk nrf52 nrf52810 nrf52832 ch554 ble usb cmsis-dap

nrf52-keyboard's People

Contributors

comicchang avatar forhuan avatar jim-kirisame avatar myst729 avatar strivefar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nrf52-keyboard's Issues

usb芯片的问题

请问可以用ch552t的芯片替换 ch554T吗? 如果可以的话 是改哪里的配置就行, 还是要很多代码呢

USB won't connect on some device

I tried to connect this keyboard to a PC, but the usb connection does not work under both bios and OS. (USB light not on, keys does not work.)

However, when I connected the keyboard to a mac, usb connects without a problem.

I would like to learn how to debug this problem.

my keyboard is Omega64 and I updated to the latest firmware according to the instructions.

新固件切层反应巨慢

在 Omega45 和 NewHope64 更新新固件并通过 usb 方式更新排列后再使用按下切层输入第二层字符或触发宏的时候要等 1 秒以上才会正确触发。
比如第一层是字符,第二层设置了数字,当要输入数字时需要按下 LT2+要输入的数字按键,这时需要观察屏幕确定正确输入数字后才能松开 LT2 按键,等待时间要 1 秒以上。但是当正确输入第一个数字后,在未松开 LT2 的前提下继续输入其他数字则输入速度正常,所以判断是切层判断的等待时间过长。
因为已经都刷了新固件,且老固件未保留,对每天的日常使用带来巨大麻烦,请安排修复,谢谢~

还没支持#define LESS_IO //键盘阵列采用更少的IO口吗?

还没支持#define LESS_IO //键盘阵列采用更少的IO口吗?
用格老师的分支编译出来灯效有些不能用,切换到不能用的灯效灯不亮
用这个代码编译出来不能用,col和row用的相同脚,出现一插电连电脑就触发很多键的现象

ws2812第一个灯不能控制的吗?

ws2812第一个灯不能控制的吗?插着usb第一个灯关不了,不插usb开源关闭。第一个灯在很多效果下不亮,
睡眠时第一个灯亮绿色不灭,关闭rgb后休眠第一个灯还是会亮绿色。

M1 Macbook Pro13 唤醒问题

1、蓝牙配对的情况下:
USB或者蓝牙模式连接, M1 Mac休眠后唤醒, 50-70%概率会出现 不停的输入 唤醒按钮的字符, 直致 插拔USB解决.

2、删除蓝牙配对后:
type-c线连接, M1 Mac休眠后唤醒, 此时 ESC底部 RGB亮红灯, 唤醒动作无效, 必须插拔USB后, RGB灯变蓝, 此时才能唤醒Mac.

OS: macOS 11.4
电脑: M1 Macbook Pro 13

编译烧录后引脚失能问题的解决

git仓库中非docker部分,关于CONFIG_H_FILE宏,在以下几个文件中无定义,正常来讲会出现变异报错的问题,
如若在文件报错位置简单添加#include"config.h",虽然报错问题解决,但编译烧录后会导致18~30号引脚失能

这是使用cscope在docker环境配置中搜索到的含有CONFIG_H_FILE的条件编译选项的文件名称及其所在行:

Cscope tag: CONFIG_H_FILE
   #   line  filename / context / line
   1      2  ../../tmk/tmk_core/common/action_layer.c <<GLOBAL>>
             #ifdef CONFIG_H_FILE
   2      3  ../../tmk/tmk_core/common/action_layer.c <<GLOBAL>>
             #include CONFIG_H_FILE
   3     18  ../../tmk/tmk_core/common/keyboard.c <<GLOBAL>>
             #ifdef CONFIG_H_FILE
   4     19  ../../tmk/tmk_core/common/keyboard.c <<GLOBAL>>
             #include CONFIG_H_FILE
   5     17  ../../tmk/tmk_core/common/keymap.c <<GLOBAL>>
             #ifdef CONFIG_H_FILE
   6     18  ../../tmk/tmk_core/common/keymap.c <<GLOBAL>>
             #include CONFIG_H_FILE
   7     17  ../../tmk/tmk_core/common/matrix.c <<GLOBAL>>
             #ifdef CONFIG_H_FILE
   8     18  ../../tmk/tmk_core/common/matrix.c <<GLOBAL>>
             #include CONFIG_H_FILE
   9     24  ../../tmk/tmk_core/common/matrix.h <<GLOBAL>>
             #ifdef CONFIG_H_FILE
  10     25  ../../tmk/tmk_core/common/matrix.h <<GLOBAL>>
             #include CONFIG_H_FILE

现解决如下:在非docker中运行时,这里以ubutnu20.04为例,需要在上述各个文件中添加关于CONFIG_H_FILE的条件编译选项,如下:

#ifdef CONFIG_H_FILE       
    #include CONFIG_H_FILE 
#endif                     

最终:编译烧录后18~30号引脚失能问题解决

led的一些问题

参考你的Lot60-BLE-Keyboard里的电路 设置了某个引脚做大写锁定 指示灯的引脚, LED上拉驱动, 电路是电源正极接led,然后再链接到某引脚上, 发现开启大写的时候led是灭的, 大写关闭的时候led亮起, 代码就是这么设置的, 还是我链接的方式有问题?

NRF51822编译问题

您好,我在烧录“nrf52-keyboard”代码后,搜索不到设备,不知是选择编译“config.h”不对,还是其他问题,期待您的回复。
1
2

关于nrf52-keyboard固件烧录的一些问题

你好,
参照您在github上的这个项目,我在自己尝试制作一个蓝牙键盘,目前pcb已经制作完成,固件也编译完了,但是在烧录的时候有一些步骤不太了解,希望能得到您的帮助,具体如下:
参照https://wiki.lotlab.org/上的相关文档,我使用的是ch554t的芯片以及nrf52832的蓝牙芯片,均购买自淘宝散件,其中nrf52832使用的是易佰特的E73-2G4M04S1B(https://detail.tmall.com/item.htm?spm=a1z10.5-b-s.w4011-21814129248.67.3aa0475faiYeUE&id=597243668972&rn=c830af448ac18f69fab5bd968f211087&abbucket=3&skuId=4157008284764)
1.ch554的芯片烧录步是
参照Lot60-BLE-Keyboard的电路图,短接ch554上的k1按钮,插入电脑usb口,断开k1,使用烧录工具烧录ch554固件
2.linux下使用pyocd和dap link烧录蓝牙芯片
a.daplink 连接蓝牙的swd口(没有连接3v3引脚,直接usb连接电脑,即使用电脑usb口供电,而非dap link的3v3口供电)
b.使用pyocd烧录, pyocd flash -t nrf52 path/to/my/nrf-bootloader.hex
pyocd flash -t nrf52 path/to/my/Lot60-BLE-Keyboard-fw.hex
不知道上面蓝牙烧录步骤是否有问题,在使用swd烧录的时候,需不需要先短接nrf52的reset引脚(即,先短接reset引脚,然后连接usb)

Expose debounce settings to online builder

Hi Developers,

Thank you for making this project.

I found random double clicking for many keys on my keyboard and I want to increase the debounce time. Currently it seems the only way is to compile the firmware by myself. But I would appreciate it if you can expose the debounce settings in the online firmware builder (http://test.glab.online:10086)

btw, I am not sure if this is correct project to raise this issue, please advice where I should post if not.

现在不能显示电量了吗?

现在不能显示电量了吗?前版本电量还能显示 虽然不是很准
更新后现在一直都显示100% 就是没电了快不能开机也是100%

capslock灯始终是一半亮度

用的别人给的板子,不知道灯连在哪个引脚。自带的固件灯是可以正常工作的。我自己改的代码就一直半亮不亮的状态,按什么键都没反应。
我已经对LED_CAPS遍历尝试了所有引脚序号,都不行。
除了io口序号以外,还有哪些代码可能跟这个有关呢?

尝试做了一个键盘,但是OLED无法使用

想问一下,按照教程制作了一个键盘,但是按照make help里面,进行了make flash_softdeivce, make flash, make flash_setting这三步后无法搜索到蓝牙信号,然后我通过SDK中的example,刷入了一个secure_bootloader的例程,可以搜索到Dfutarg,之后DFU刷入固件包后键盘可以使用,旋钮也可以使用,只有OLED无法显示。
确认了一下接线还有在config和rules.mk中的设置应该是没有问题的,想问一下是因为刷入SDK例程中的BootLoader所以有影响么?如果我希望直接使用您固件中生成的文件,我上述的刷入方式有问题么?

自编译固件不运行

大神求助!
看到develop分支的新特性后,想做个新键盘,参考nrfmicro自己打了个板子,主控是RF-BM_ND04L,usb芯片是ch552T。
develop分支下固件成功编译,isp模式刷入usb固件,用手机dfu模式下刷入bootloader和application,(bootloader是用nrfutil把nrf52_bootloader.hex打包成zip)。键盘插入usb后,电脑可以显示键盘名称,但无法输出,ble、usb、chrg指示灯均不亮。蓝牙无法被搜到,nrfconnect可连接。
尝试用pyOCD连接,显示0 Lotlab CMSIS-DAP 44C79A55,但刷固件返回0002669:CRITICAL:main:No ACK received。
在config.h添加代码
#define SWD_DAT_IO T2 #define SWD_DAT_MASK bT2 #define SWD_DAT_PORT P1 #define SWD_CLK_IO T2EX #define SWD_CLK_MASK bT2EX #define SWD_CLK_PORT P1
重新编译、刷入,结果仍一样。
这是什么问题,是否是bootloader原因?应该怎么解决?
键盘设置文件

如何设置多于32个fn_actions?

我想把shift+按键的所有符号设为单独的key,这些符号就有20个,再加上切层、蓝牙、macro什么的,32个不够用呀。。
看了tmk的github和issue,没有明确的解决方案。想问问这里有没有人知道。(有人说用unimap,但具体怎么实现呢?)

最后一列无效,这个col和row数量有限制的吗?

这个col和row数量有限制的吗?
想把手里的104键的键盘改成无线的没结果编译好后发现col最后一列不能用
现在设置的是6x17的矩阵,编译完刷入发现第17列无效,换其他脚也不行,其他都正常。
这个固件最多可以 设置多少行多少列?求大佬指教

不插usb ws2812灯就不亮

插着usb才亮,一拔就灭。拔了以后蓝牙模式正常,三色状态指示灯正常。
代码里哪个地方可以控制这个行为呢?

按键宏该怎么使用?

按键宏在哪里添加?

是不是在keymap_plain.c 添加ACTION_MACRO(0),只有看到在data_storage.c有处理id为0的流程,该怎么使用?

newhope64?

Can someone please give me a link to the newhope64 PCB? I can not find anything

lot-60更改nrf52832主控编译的固件不能运行

使用lot60键盘的rev.g版本程序(develop分支的程序,未做任何更改),仅在其基础上更改common.mk中的主控为52832后编译固件完成,然后将固件烧录到52832模块中,搜不到蓝牙信号。但是使用core的程序或者Omega系列的程序自编译固件烧录到52832模块中可以运行并搜到蓝牙信号。
使用的烧录方式为Jlink烧录蓝牙完整程序包,操作过程为先make编译主程序然后make bootloader编译bootloader然后merge_all生成seething签名并打包,然后使用Jlink烧录打包完成的nrf52_kbd_sign_with_sd.hex固件。

nrf52832的编译问题

hello 又是我, 上一个问题提到的 52832 编译的问题 我多次尝试之后发现 报错是跟一个配置有关 就是这个

NRF52_DISABLE_FPU = yes # 禁用FPU

如果使用52832的主控 但是又开着这个fpu 编译bootloader的时候就会报错, 如果是 52810 就没关系, 不知道是我的环境有问题.
另外还想问一下 禁用这个有什么影响. 上个issue 关掉了, 然后大佬后来又没回复了, 所以我就新建了一个 希望大佬不要介意!

make bootloader 编译报错

求帮助
lkb-core目录

fcl@MiBook-Pro MINGW64 /e/nrd/nrf52-keyboard/keyboard/lkb-core (master)
make bootloader
make[1]: Entering directory 'E:/nrd/nrf52-keyboard/application/bootloader/project'
make[1]: Leaving directory 'E:/nrd/nrf52-keyboard/application/bootloader/project'
Makefile:277: *** empty variable name.  Stop.
../../application/main/project/bl.mk:19: recipe for target 'bootloader' failed
make: *** [bootloader] Error 2

template 目录

fcl@MiBook-Pro MINGW64 /e/nrd/nrf52-keyboard/keyboard/template (master)
$ make bootloader
make[1]: Entering directory 'E:/nrd/nrf52-keyboard/application/bootloader/project'
make[1]: Leaving directory 'E:/nrd/nrf52-keyboard/application/bootloader/project'
Makefile:277: *** empty variable name.  Stop.
../../application/main/project/bl.mk:19: recipe for target 'bootloader' failed
make: *** [bootloader] Error 2

编译时引入config.h 报错,

nrf52-keyboard\application\bootloader\sdk_config.h 文件的47行, 引入config.h 报错,找不到文件

Compiling file: nrfx_atomic.c
Compiling file: nrf_crypto_ecc.c
Compiling file: nrf_crypto_ecdsa.c
In file included from ../../../SDK/components/libraries/util/sdk_common.h:56:0,
                 from ../../../SDK/components/libraries/crc32/crc32.c:40:
../sdk_config.h:47:10: fatal error: config.h: No such file or directory
 #include "config.h"
          ^~~~~~~~~~
compilation terminated.
Compiling file: nrf_crypto_hash.c
make: *** [../../../template/Makefile.common:271: _build/nrf52_bootloader/crc32.c.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from ../../../SDK/components/libraries/util/sdk_common.h:56:0,
                 from ../../../SDK/components/libraries/mem_manager/mem_manager.c:40:
../sdk_config.h:47:10: fatal error: config.h: No such file or directory
 #include "config.h"
          ^~~~~~~~~~
compilation terminated.
In file included from ../../../SDK/components/libraries/util/sdk_common.h:56:0,
                 from ../../../SDK/components/libraries/balloc/nrf_balloc.c:40:
../sdk_config.h:47:10: fatal error: config.h: No such file or directory
 #include "config.h"

Arrow key support

This library in combination with the Lot60-BLE does support arrow keys right?

关于开发编译的问题

  1. 这个固件 协议栈如何编译,跟烧录, 协议栈 跟bootloader是什么关系, 是否都需要?
  2. 如何用jlink swd的链接方式烧录固件。
  3. 如何用jlink debug 程序

nrf52832的编译问题

我的环境是mac系统 docker 下的 ubuntu 20.04的环境, 按照你wiki的文档操作. 在lkb-core 这个项目下 用nrf52832芯片的情况下编译是没问题的, 并且已经烧录到硬件上 能成功连接到电脑了 貌似没什么问题. 可是在其他项目下 比如lot60-ble/rev_f, Omega45, Omega50 , 如果使用 nrf52810则编译成功, 如果把芯片改成nrf52832 则编译失败, 报错如下:

Compiling file: nrf_svc_handler.c
Compiling file: nrf_sdh.c
Compiling file: nrf_sdh_ble.c
Compiling file: nrf_sdh_soc.c
Compiling file: oberon_backend_chacha_poly_aead.c
Compiling file: oberon_backend_ecc.c
Compiling file: oberon_backend_ecdh.c
Compiling file: oberon_backend_ecdsa.c
Compiling file: oberon_backend_eddsa.c
Compiling file: oberon_backend_hash.c
Compiling file: oberon_backend_hmac.c
Linking target: /data/nrf52-keyboard/keyboard/Omega50/_build/nrf52_bootloader.out
/usr/local/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld: error: /data/nrf52-keyboard/keyboard/Omega50/_build/nrf52_bootloader.out uses VFP register arguments, ../../../SDK/external/micro-ecc/nrf52nf_armgcc/armgcc/micro_ecc_lib_nrf52.a(uECC.c.o) does not
/usr/local/gcc-arm-none-eabi-7-2018-q2-update/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file ../../../SDK/external/micro-ecc/nrf52nf_armgcc/armgcc/micro_ecc_lib_nrf52.a(uECC.c.o)
collect2: error: ld returned 1 exit status
make[1]: *** [../../../template/Makefile.common:293: /data/nrf52-keyboard/keyboard/Omega50/_build/nrf52_bootloader.out] Error 1
make[1]: Leaving directory '/data/nrf52-keyboard/application/bootloader/project'
make: *** [../../application/main/project/bl.mk:19: bootloader] Error 2

好像是 nrf52_bootloader.out 这个没有生成, 不知道是什么问题. 谢谢~

烧录后没有出现蓝牙信号

又来了 -、-
使用template改了一份87键配置 主要是832 改成 810 灯都注释 留了大小锁定 和 滚动锁定 修改了配列 引脚号 电源监测引脚号
config.h

#pragma once
#include <stdint.h>

/* USB和蓝牙的显示参数 */
#define VENDOR_ID 0x04d9 /* USB VID */
#define PRODUCT_ID 0xa002 /* USB PID */
// 配置协议使用的VID和PID,自行修改。ID组合不得重复。
#define CONF_VENDOR_ID 0x0001 /* 配置协议使用的VendorID */
#define CONF_PRODUCT_ID 0x4100 /* 配置协议使用的ProductID */
#define DEVICE_VER 0x0001 /* 硬件版本 */
#define MANUFACTURER "Varmilo" /* 硬件制造商,用于USB和蓝牙显示 */
#define PRODUCT "Lotlab VA87M" /* 硬件名称,用于USB和蓝牙显示 */
#define MACADDR_SEPRATOR '_' /* 蓝牙名称后地址的分隔符。若不设置则不显示蓝牙名称后面的地址 */

/* USB HID report parameter */
#define KEYBOARD_EPSIZE 8 /* 键盘上传端点大小,请不要修改 */
#define NKRO_EPSIZE 28 /* 键盘NKRO端点大小,请不要修改 */

// 定义Bootmagic/Bootcheck按键
#define BOOTMAGIC_KEY_BOOT KC_U /* 开机 */ 
#define BOOTMAGIC_KEY_ERASE_BOND KC_E /* 删除所有绑定 */

// 键盘省电参数
#define SLEEP_SLOW_TIMEOUT 15 // 键盘闲置多久后转入慢速扫描模式 (s)
#define SLEEP_OFF_TIMEOUT 1200 // 键盘闲置多久后转入自动关机 (s)
#define KEYBOARD_SCAN_INTERVAL 1 // 键盘最小时间单位TICK (ms)
#define KEYBOARD_FAST_SCAN_INTERVAL 10 // 通常模式下,多久扫描一次键盘 (ms)
#define KEYBOARD_SLOW_SCAN_INTERVAL 100 // 慢速模式下,多久扫描一次键盘 (ms)
#define LED_AUTOOFF_TIME 5 /* LED自动熄灭时长(s),设为0则不自动熄灭 */

// 键盘额外功能
// #define DYNAMIC_TX_POWER /* 启用自动发射功率调整 */
// #define PASSKEY_REQUIRED /* 需要输入配对码 */
#define ENABLE_WATCHDOG /* 启用看门狗 */
#define HIGH_TX_POWER /* 更改发射功率到+4dBm */
#define MULTI_DEVICE_SWITCH  /*启用多设备切换 */
#define KEYMAP_STORAGE /* 启用keymap存储 */
// #define MACRO_BLOCKING_MODE /* 在宏播放时禁用其他按键输入 */
#define MACRO_STORAGE /* 启用宏存储功能 */
#define CONFIG_STORAGE /* 启用配置存储功能 */
#define BUTTONLESS_DFU /* 启用免按钮DFU */

// #define DEBUG_SKIP_PWRON_CHECK /*  直接开机而跳过开机条件检测,用于调试 */

/* TMK固件内置功能 */
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT
//#define NO_ACTION_MACRO
//#define NO_ACTION_FUNCTION

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

/* key combination for command */
#define IS_COMMAND() ( \
    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)))

// LED 配置
// #define LED_NUM **
#define LED_CAPS 30
#define LED_SCLK 31
#define LED_POSITIVE // LED上拉驱动
// #define LED_NO_DEINIT // 不要deinit端口,可以避免部分IO灯光无法关闭的问题

// Bootloader 指示灯
#define LED_DFU_INIT 30
#define LED_DFU_START 31
// #define LED_DFU_FINISH **
#define LED_DFU_POSITIVE // LED上拉驱动

// 多用途 Bootloader 按钮
// #define NRF_BL_DFU_MULTI_ROLE_BTN ** 

// USB UART 传输配置
#define HAS_USB // 启用与CH554的通信支持
#define UART_RXD 17 // UART_RX口IO
#define UART_TXD 18 // UART_TX口IO
// #define UART_DET ** // UART 检测引脚,若此脚被拉低,则说明USB正在工作。若不配置则使用RX口作为检测引脚
#define UART_BAUDRATE NRF_UART_BAUDRATE_115200 // 通信波特率,请不要修改

// 电量检测配置
#define BATTERY_ADC_PIN 2 // 电量检测引脚

// 充电检测配置
#define PIN_CHARGING !UCC1 // CH554的充电检测。当UCC1拉低时表示正在充电。若不配置则禁用USB下发充电事件
#define PIN_STANDBY !UCC2 // CH554的充电检测。当UCC2拉低时表示充电完成。若不配置则只使用PIN_CHARGING作为是否充电的检测标志

// 按键阵列配置
#define MATRIX_ROWS 6 /* 硬件阵列行数 */
#define MATRIX_COLS 17 /* 硬件阵列列数 */
static const uint8_t row_pin_array[MATRIX_ROWS] = { 8, 7, 6, 5, 4, 3 };
static const uint8_t column_pin_array[MATRIX_COLS] = { 27, 26, 25, 9, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24 };
//#define ROW_IN // 键盘阵列的二极管方向是从COL->ROW

// 剩下 28,29 gpio

/* define if matrix has ghost */
// #define MATRIX_HAS_GHOST /* 按键阵列是否出现Ghost Key,若没有加二极管则需要启用这个项目 */

#define DEBOUNCE 5 /* 硬件消抖次数,设置为0则不消抖 */
#define MATRIX_SCAN_DELAY_CYCLE 36 /* 按键扫描等待IO稳定的延时时长 */

// 板载调试器设置
#define SWD_CLK_IO T2EX
#define SWD_CLK_MASK bT2EX
#define SWD_CLK_PORT P1
#define SWD_DAT_IO T2
#define SWD_DAT_MASK bT2
#define SWD_DAT_PORT P1

Makefile

# 此工程的根目录
ROOT_DIR := ../..

# 特殊目录控制
# SDK_ROOT := /var/nrf52/nRF52_SDK
# TEMPLATE_PATH := /var/nrf52/template

# 配置项:主控芯片类型
# 可选:nrf52810 或 nrf52832
NRF_CHIP := nrf52810

# 配置文件文件名
CONFIG_H = config.h
CONFIG_H_DIR = .
SRC_FILES += keymap_plain.c

# 配置项:功能选项
# 关于更多的可配置项目,请参考doc目录下的相应文档
BOOTMAGIC_ENABLE = yes	# 启用Bootmagic
BOOTCHECK_ENABLE = yes  # 启用Bootchek
MOUSEKEY_ENABLE = yes     # 启用鼠标键功能
EXTRAKEY_ENABLE = yes	# 启用媒体键功能
NKRO_ENABLE = yes	# 启用USB的全键无冲功能
USB_6KRO_ENABLE = yes # 启用USB的六键无冲功能

ONBOARD_CMSIS_DAP = yes # 启用板载调试器

########## STOP HERE ##########
# 除非你知道下面这些配置项是干什么的,否则不要去动它

INC_FOLDERS += .

APP_MAIN_DIR := $(ROOT_DIR)/application/main
TMK_CORE_DIR := $(ROOT_DIR)/tmk/tmk_core
USB_SOURCE_DIR := $(ROOT_DIR)/usb

APP_PROJ_DIR := $(APP_MAIN_DIR)/project
APP_SRC_DIR := $(APP_MAIN_DIR)/src

all: default ch554

include $(APP_PROJ_DIR)/kbd.mk
include $(USB_SOURCE_DIR)/usb.mk

使用makemake bootloadermake merge_all命令 合并出nrf52_kbd_sign_with_sd.hex
使用pyocd + cmsisdap 烧录命令pyocd flash --erase chip --target nrf52 nrf52_kbd_sign_with_sd.hex 烧录成功 重启之后 搜索不到蓝牙信号,
重新编译了nrf52_kbd.hex 和 nrf52_bootloader.hex
使用 pyocd flash --erase chip --target nrf52 nrf52_bootloader.hexpyocd flash --target nrf52 nrf52_kbd.hex 还是没有信号
然后使用了keyboard中其他的示例 仅修改52832 为 52810 ,仅编译烧录nrf52_kbd.hex 使用 pyocd flash --erase chip --target nrf52 nrf52_kbd.hex 烧录成功 重启依旧没有蓝牙信号

编译好后用pyocd烧写提示intelhex.AddressOverlapError

完整报错如下,有可能是什么原因呢?
D:\keyboard\pyocd> .\pyocd flash -t nrf52 ..\nrf52_kbd_with_sd.hex
0000139:WARNING:common:STLink and CMSIS-DAPv2 probes are not supported because no libusb library was found.
0000401:CRITICAL:main:uncaught exception: Hex file has data overlap at address 0x1000 on line 179
Traceback (most recent call last):
File "site-packages\pyocd_main_.py", line 368, in run
File "site-packages\pyocd_main_.py", line 529, in do_flash
File "site-packages\pyocd\flash\file_programmer.py", line 157, in program
File "site-packages\pyocd\flash\file_programmer.py", line 180, in program_hex
File "site-packages\intelhex_init
.py", line 90, in init
File "site-packages\intelhex_init_.py", line 212, in loadhex
File "site-packages\intelhex_init_.py", line 145, in _decode_record
intelhex.AddressOverlapError: Hex file has data overlap at address 0x1000 on line 179

蓝牙设备指示灯不亮

之前编译的是没问题的, 后来不确定是改了哪个配置,然后就不亮了, 确定灯没问题,使用的是3个直插二极管.下面是指示灯设置的几个参数, 请问还可以排查哪里

#define LED_BLE_CHANNEL1 27
#define LED_BLE_CHANNEL2 26
#define LED_BLE_CHANNEL3 25
#define LED_POSITIVE // LED上拉驱动

make:~/.local/gcc-arm-none-eabi-7-2018-q2-update/bin/arm-none-eabi-gcc:命令未找到

大神求助!
我根据LotKB固件编译移植指南,在Ubuntu 20.04.1 LTS(focal)上部署了环境
但是在/keyboard/template文件夹下make -j的时候出现如下错误:
Ozol_qusetion_about_the_gcc
我已经把nrf52-keyboard,gcc-arm-none-eabi-7-2018-q2-update这两个文件夹的权限改成了777,我曾今还怀疑过是gcc默认版本不对,于是我把默认版本换成了7.3.1,但还是出现同样的错误,我无法找到原因(网上也搜不到解决方案)。
请问有什么解决办法吗?
我也找到了了makefile.common里对应的127行的程序,但是我没有相关的知识,无法解读程序,下面是源码:

$(if $(shell $(CC) --version),,$(info Cannot find: $(CC).) \
  $(info Please set values in: "$(abspath $(TOOLCHAIN_CONFIG_FILE))") \
  $(info according to the actual configuration of your system.) \
  $(error Cannot continue))

这些程序提示了什么问题吗?求解答。

你好!在编译USB固件时出现以下问题

../../usb/usb.mk:41: recipe for target '_build/ch554' failed
make: [_build/ch554] Error 1 (ignored)
Compiling usb file: endpoints.c
../../usb/endpoints.c:60: error 4: 'fopen' failed on file '_build/ch554\endpoints.asm'
../../usb/usb.mk:48: recipe for target '_build/ch554/endpoints.rel' failed
make: *** [_build/ch554/endpoints.rel] Error 1

关于oled外设的疑问

大佬你好,我看到你的固件更新移植了一些外设的支持
所以我想给键盘加一个oled,翻遍了qmk文档都没有发现要求定义oled针脚的语句
在32u4这款mcu上oled是直接接在它的硬件i2c接口上的
而nrf52这款芯片我发现它有俩硬件i2c接口【但是还不知道是哪个针脚hhh】
我应该怎样接线呢
定义方式是不是和qmk的语句一样呢
感谢你的回答

关于Issue #47 #48 nrf52832编译bootloader出错原因

爬了一下代码,发现是这里的问题

在SDK/external/micro-ecc/nrf52nf_armgcc/armgcc/Makefile的37行,使用的是CFLAGS += -mfloat-abi=soft

application/bootloader/project/nrf52832.mk 14行的CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16 冲突

所以开启NRF52_DISABLE_FPU宏以后可以编译通过.不过,是否可以复制一份sdk里面的makefile,将micro-ecc的编译规则也放到application/bootloader下呢

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.