问题标签 [nrf52]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1072 浏览

gpio - 通过 SWD 接口控制 Nordic nRF52

我正在尝试对 Nordic Semi MCU 进行编程/暂停/启动/擦除等。这是 nRF52 中的 ARM-Cortex M4。我正在使用芯片的 SWD 引脚,如果我将商业 J-Link 与 nrfjprog 命令行工具或他们的 Segger windows 实用程序一起使用,则可以实现这一点。

但是,我想通过第二个 MCU 的 GPIO 引脚从另一个 MCU 控制 nRF52,并通过将 3 根线连接到 nRF52 - SWCLK、SWDIO 和 GND 来编写我自己的 SWD 驱动程序。

这些线现在由主机驱动,我正在使用 SWD 的 ARM 参考手册。对于我想要实现的目标,该协议相对简单。以下 PDF 包含一些详细信息: http: //hackipedia.org/Hardware/CPU/ARM/pdf,%20Cortex/IHI0031A_ARM_debug_interface_v5.pdfhttps://www.silabs.com/Support%20Documents/TechnicalDocs/AN0062.pdf

我设法发送初始数据包标头(START、APnDP、Read、Addr、Stop、Parity 等)。然而,在那之后,SWDIO 就再也没有转过身来。我的主机 MCU 浮动 SWDIO 并准备好接收输入。然而,nRF52 似乎从未开始使用 ACK 驱动 SWDIO 线。

我想这一定是因为 NRF52 从来没有看到数据包头或者不喜欢我发送的东西,但我不知道是什么。有没有人经历过这种情况或有任何线索为什么会发生这种情况?顺便说一下,SWDCLK 转换发生在 100 kHZ。(时钟周期为 10 us)。

任何帮助表示赞赏。

0 投票
1 回答
441 浏览

c - TRF7970:Mifare Classic 身份验证

我正在做一个项目,旨在通过(基于 Cortex™-M4F)和(多协议全集成 13.56-MHz NFC / RFID 收发器 IC)从Mifare Classic rfid 卡读取/写入数据。nrf52832TRF7970A

预认证部分是根据 ISO14443-3 标准完成的(如图所示)并且工作正常(之间的通信nrf52832TRF7970A 通过 SPI 完成) 图片预认证部分

但是在这部分之后,我遇到了身份验证问题。

就 TRF7970A 不支持 MIFARE 卡而言,需要TRF7970A <-> MIFARE根据 TI PDF 通过特殊直接模式继续通信"Using Special Direct Mode With the TRF7970A"(由于新用户的 Stackoverflow 限制,无法链接)

一切都是根据 TI PDF 配置的,但我仍然无法通过 3stage 身份验证。

为了说明问题,附上3张图片。认证过程由逻辑分析仪捕获。

捕获的信号 上图 - 尝试通过 auth1 阶段失败。(TRF 在从卡发送响应之前发送一个 IRQ)

中间图片 - 成功尝试通过 auth1 阶段。(代码保持不变,只是有时它通过了 1 个阶段,有时没有。)

下图 - 成功通过 auth1 后,进入 auth 2,我从未看到 trf7970/Mifare Classic 卡的答案

加密部分取自sdm mifare lib on trf7970AEVM

可能有人对出了什么问题有任何想法,或者有人可以指导我进行类似的项目。

0 投票
1 回答
225 浏览

keil - 无法跳过 Keil 反汇编窗口中的第一条指令

当我在调试模式下运行 UART 应用程序nRF5_SDK_12.3.0_d7731ad\examples\peripheral\uart时,反汇编窗口打开,我似乎卡在第一条指令上。Step over不会跳过第一条指令。这是为什么?谢谢你。

在此处输入图像描述

这是我的调试设置

在此处输入图像描述

这是我的高级调试设置

在此处输入图像描述

以下是我遵循的设置 J-link 调试器设置的说明

http://www.keil.com/support/man/docs/jlink/jlink_cortexdebug.htm

我试过在刷应用程序之前刷软设备,但在这种情况下刷机失败。如果我首先擦除芯片,表明软设备与应用程序一起闪烁,则应用程序只会闪烁(对吗?)。

0 投票
1 回答
1299 浏览

nrf52 - 关于nRF52832的GPIOTE功能(外部中断)

我用nRF52832 sdk控制GPIOTE功能有些麻烦,当使用14.01版本(SDK)时,GPIOTE功能似乎不能与BLE功能一起使用,我使用了下面的代码,它造成了系统的挂起问题,为什么?

我想知道GPIOTE功能是否不能与BLE功能一起使用,以及另一种使用BLE功能的方法,提前感谢您的支持和好意,

0 投票
0 回答
671 浏览

bluetooth-lowenergy - 无法读取 Nordic UART 服务的 TX 特征值,在 Linkitone 板上作为中央设备

我是 GATT 和 ble 的业余爱好者。

我使用Linkit一块板作为中央设备Nrf51板作为外围设备。中心设备与外围设备连接成功,可以搜索到所有的Services UUID,Characteristic UUID,但是读取不到特征值。Linkit 端显示的值与北欧端显示的值不同。

我能够在北欧应用程序以及作为外围设备的北欧板中获得特征值。

Linkitone 作为中心设备无法从任何外围设备读取北欧 uart 服务的 TX 特征值。即使我尝试将 Linkitone 作为外围设备并尝试通过 nordic 应用程序读取 Nordic uart 服务值,它也失败了。应用程序每次都被挂起。

下面我提到了赋予 tx 特征的值,该值位于中心侧。那么具有 ble UART 服务的 Linkitone 板是否有任何问题,或者有什么不同的原因?

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
76 浏览

bluetooth-lowenergy - 在 nrf52 中处理 iso 日期时间

我正在使用 nrf52832 芯片。我将以 isoFormat 接收时间。

我想知道如何转换 iso 格式以在我的 C 程序中获取日期和时间。

我没有使用任何 RTOS,而是在裸机上做所有事情。

0 投票
1 回答
204 浏览

java - BLE备份绑定信息

我实现了与 nordic nrf52 ble 芯片配对和绑定的 android 应用程序。

我想知道它是否可以在 Android 中备份或保存绑定信息并在另一部 Android 手机中重复使用,以防我丢失绑定的手机?

0 投票
3 回答
1130 浏览

android - 从相同的特征写入和通知

来自同一特征的写入通知是否存在问题?还是建议一个创建两个特性,一个用于接收数据,另一个用于传输?与 NRF52 系列相比,这对 Android 来说不是一个问题吗?

谢谢

0 投票
3 回答
893 浏览

android - rxandroidble write 只发送前20B

我尝试在给定(自定义)特征上写入 >20 字节的数据。在以下日志中,我尝试写入 85 个字节:

代码:

结果:在服务器端(nrf52)我可以看到 EXEC_WRITE 但只发送了前 20B。

这是日志猫:

D/RxBle#ClientOperationQueue: 排队 ConnectOperation(17461182) D/RxBle#ClientOperationQueue: 已启动 ConnectOperation(17461182) D/RxBle#ClientOperationQueue: 排队 ConnectOperation(218660306) D/RxBle#ClientOperationQueue: 已启动 ConnectOperation(218660306) D/RxBle#BluetoothG onConnectionStateChange newState=2 status=0 D/RxBle#BluetoothGatt: onConnectionStateChange newState=2 status=0 D/RxBle#ClientOperationQueue: FINISHED ConnectOperation(218660306) D/RxBle#ClientOperationQueue: FINISHED ConnectOperation(17461182) D/RxBle#ConnectionOperationQueue: QUEUED ServiceDiscoveryOperation (125599796) D/RxBle#ConnectionOperationQueue: 已启动 ServiceDiscoveryOperation(125599796) D/RxBle#BluetoothGatt: onServicesDiscovered status=0 D/RxBle#ConnectionOperationQueue:QUEUED CharacteristicReadOperation(2626026) D/RxBle#ConnectionOperationQueue: FINISHED ServiceDiscoveryOperation(125599796) D/RxBle#ConnectionOperationQueue: STARTED CharacteristicReadOperation(2626026) D/RxBle#BluetoothGatt: onCharacteristicRead 特性=0000fa03-0278-03be-4447-0dfe 状态RxBle#ConnectionOperationQueue: 已完成 CharacteristicReadOperation(2626026) D/RxBle#ClientOperationQueue: QUEUED ConnectOperation(158692575) D/RxBle#ClientOperationQueue: 已启动 ConnectOperation(158692575) D/RxBle#BluetoothGatt: onConnectionStateChange newState=2 status=0 D/RxBle#ClientOperationQueue:已完成 ConnectOperation(158692575) D/RxBle#ConnectionOperationQueue: 排队 ServiceDiscoveryOperation(20778996) D/RxBle#ConnectionOperationQueue: 已启动 ServiceDiscoveryOperation(20778996) >D/RxBle#BluetoothGatt:onServicesDiscovered 状态=0
D/RxBle#ConnectionOperationQueue: QUEUED CharacteristicWriteOperation(51009974) D/RxBle#ConnectionOperationQueue: FINISHED ServiceDiscoveryOperation(20778996) D/RxBle#ConnectionOperationQueue: STARTED CharacteristicWriteOperation(51009974)
> D/RxBle#BluetoothGatt: onCharacteristicWrite 特性=00020fa444-7883 -091eba91df8e 状态=0

D/RxBle#ConnectionOperationQueue:完成 CharacteristicWriteOperation(51009974)

我还尝试使用长 rxAndroidBlewrite 过程:

它发送了几个连续的写命令,但它不是长写过程(带有 n ATT_prepare 和 1 ATT_exec),它是独立的写:

D/RxBle#ConnectionOperationQueue: QUEUED CharacteristicLongWriteOperation(74131396) D/RxBle#ConnectionOperationQueue: FINISHED ServiceDiscoveryOperation(250008320) D/RxBle#ConnectionOperationQueue: STARTED CharacteristicLongWriteOperation(74131396)

D/RxBle#BluetoothGatt:onCharacteristicWrite 特性=0000fa04-0278-03be-4447-091eba91df8e 状态=0

D/RxBle#BluetoothGatt:onCharacteristicWrite 特性=0000fa04-0278-03be-4447-091eba91df8e 状态=0

D/RxBle#BluetoothGatt:onCharacteristicWrite 特性=0000fa04-0278-03be-4447-091eba91df8e 状态=0

D/RxBle#BluetoothGatt:onCharacteristicWrite 特性=0000fa04-0278-03be-4447-091eba91df8e 状态=0

D/RxBle#BluetoothGatt:onCharacteristicWrite 特性=0000fa04-0278-03be-4447-091eba91df8e 状态=0

D/RxBle#ConnectionOperationQueue:已完成 CharacteristicLongWriteOperation(74131396)

当然我可以设法在服务器上重建或修改 MTU,但我想使用 BLE 排队写入,这通常由我的中央 (rxandroidble) 和我的外围设备 (nrf52) 支持

0 投票
1 回答
726 浏览

bluetooth-lowenergy - 与 Nrf UART 的蓝牙配对无法正常工作

蓝牙配对无法正常工作。我正在开发基于蓝牙与 UART 配对的应用程序。在这里,我包含了我的概念和程序。帮助我解决问题。

我的预期结果是如果用户按下连接按钮。它应该在没有用户输入和配对请求和 PIN 的确认屏幕的情况下配对。最后设备响应连接。

我的实际结果是确认屏幕和用户输入弹出窗口将打开。之后设备配对。最后设备没有回复我已连接。

我被困在那个问题超过 2 天。帮我解决这个问题。

1.在onstart()方法中注册PAIRING

2. BroadcastReceiver,用于接收PairingRequest。

/* 连接设备后,我正在创建绑定*/