问题标签 [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.
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.pdf和https://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)。
任何帮助表示赞赏。
c - TRF7970:Mifare Classic 身份验证
我正在做一个项目,旨在通过(基于 Cortex™-M4F)和(多协议全集成 13.56-MHz NFC / RFID 收发器 IC)从Mifare Classic rfid 卡读取/写入数据。nrf52832
TRF7970A
预认证部分是根据 ISO14443-3 标准完成的(如图所示)并且工作正常(之间的通信nrf52832
并TRF7970A
通过 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
可能有人对出了什么问题有任何想法,或者有人可以指导我进行类似的项目。
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
我试过在刷应用程序之前刷软设备,但在这种情况下刷机失败。如果我首先擦除芯片,表明软设备与应用程序一起闪烁,则应用程序只会闪烁(对吗?)。
nrf52 - 关于nRF52832的GPIOTE功能(外部中断)
我用nRF52832 sdk控制GPIOTE功能有些麻烦,当使用14.01版本(SDK)时,GPIOTE功能似乎不能与BLE功能一起使用,我使用了下面的代码,它造成了系统的挂起问题,为什么?
我想知道GPIOTE功能是否不能与BLE功能一起使用,以及另一种使用BLE功能的方法,提前感谢您的支持和好意,
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 板是否有任何问题,或者有什么不同的原因?
bluetooth-lowenergy - 在 nrf52 中处理 iso 日期时间
我正在使用 nrf52832 芯片。我将以 isoFormat 接收时间。
我想知道如何转换 iso 格式以在我的 C 程序中获取日期和时间。
我没有使用任何 RTOS,而是在裸机上做所有事情。
java - BLE备份绑定信息
我实现了与 nordic nrf52 ble 芯片配对和绑定的 android 应用程序。
我想知道它是否可以在 Android 中备份或保存绑定信息并在另一部 Android 手机中重复使用,以防我丢失绑定的手机?
android - 从相同的特征写入和通知
来自同一特征的写入和通知是否存在问题?还是建议一个创建两个特性,一个用于接收数据,另一个用于传输?与 NRF52 系列相比,这对 Android 来说不是一个问题吗?
谢谢
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 状态=0D/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) 支持
bluetooth-lowenergy - 与 Nrf UART 的蓝牙配对无法正常工作
蓝牙配对无法正常工作。我正在开发基于蓝牙与 UART 配对的应用程序。在这里,我包含了我的概念和程序。帮助我解决问题。
我的预期结果是如果用户按下连接按钮。它应该在没有用户输入和配对请求和 PIN 的确认屏幕的情况下配对。最后设备响应连接。
我的实际结果是确认屏幕和用户输入弹出窗口将打开。之后设备配对。最后设备没有回复我已连接。
我被困在那个问题超过 2 天。帮我解决这个问题。
1.在onstart()方法中注册PAIRING
2. BroadcastReceiver,用于接收PairingRequest。
/* 连接设备后,我正在创建绑定*/