射频
前言
公司产品涉及相关方面,需加强了解。目前项目使用的射频芯片为ST25R501,开发板使用的为ST25R391b(模拟前端),自购的是nNRF52840。
NRF52840
核心板使用的是nice!nano,支持蓝牙、NFC-A(只发送),它比较出名的是用于客制化键盘的构建,支持ZMK、BlueMicro固件,由于此芯片的SDK并不开源,所以并未适配QMK,否则会违反其GPL协议。
使用它进行开发,目前有三大环境:
- nRF Connect SDK(NCS),vscode插件予以支持
- Arduino
- nRF5 SDK(已过时)
现使用Arduino框架,ini文件配置为:1
2
3
4
5
6
7[env:adafruit_feather_nrf52840]
platform = nordicnrf52
board = adafruit_feather_nrf52840
framework = arduino
upload_protocol = nrfutil
monitor_speed = 115200
Project
To be continue:正在验证其作为手表主控的能力,用于复刻SCA-B。
OLED显示
由于使用的板子nice!nano并没有Arduino的扳机支持包,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 在 Feather nRF52840 的 variant.cpp 中:
// P0.17 (NiceNano SDA) 被定义为引脚索引 29
// P0.20 (NiceNano SCL) 被定义为引脚索引 28
// 我们必须使用这两个“隐藏”的编号,而不是 NiceNano 丝印上的 2 和 3
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
// 1. 强制重映射 I2C 引脚
Wire.setPins(PIN_SDA_HACK, PIN_SCL_HACK);
// 2. 初始化 OLED
if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("SSD1306 allocation failed");
for(;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(F("nRF52840"));
display.display();
}
void loop() {
display.invertDisplay(true);
delay(500);
display.invertDisplay(false);
delay(500);
}





