问题标签 [nrf51]

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 回答
129 浏览

bluetooth-lowenergy - 低功耗 PWM 库:如果从处理程序调用 low_power_pwm_stop,PWM 不会停止。这是一个错误吗?

我正在使用 SDK 12.0.0。

我正在使用low_power_pwm_init()初始化 pwm 并且在初始化时我已经通过了一个处理程序。我想从处理程序中停止 pwm,因此我low_power_pwm_stop()从处理程序中调用。我观察到 pwm 没有停止。

我试图调查原因,发现pwm_timeout_handler()在low_power_pwm.c 中正在重新启动pwm。以下是可疑的片段。

low_power_pwm_stop(),p_pwm_instance->pwm_state中分配NRF_DRV_STATE_INITIALIZED,并且在上面的代码段中,如果驱动程序状态为 ,则启动计时器NRF_DRV_STATE_INITIALIZED,导致 pwm 再次打开。

这是一个错误吗?

0 投票
0 回答
487 浏览

accelerometer - 如何从真实加速度 3 轴中消除重力?

我想从我的 3 轴数据中移除重力,请帮我修复它。

0 投票
2 回答
2857 浏览

linux - OpenOCD 无法与皮质处理器连接

我正在尝试从 Raspberry Pi 3 计算模块 GPIO 闪存基于 cortex m0 的 SoC,但它一直失败并出现相同的错误。

错误:无法初始化调试端口

我正在关注此https://learn.adafruit.com/programming-microcontrollers-using-openocd-on-raspberry-pi?view=all和本教程https://movr0.com/2016/09/02/use -raspberry-pi-23-as-a-jtagswd-adapter/。编译和安装没有问题。

cortex m0 SoC是Nordic Semiconductor nRF51822蓝牙芯片封装在ISP1302模块中。

根据教程,模块 GND 和 3.3V 直接连接到计算模块 dev-kit,SWDCLK 和 SWDIO 连接到 GPIO 25、24。SRST 或 TRST 没有连接。

配置文件如下:

(我bcm2835gpio_srst_num 18从 raspberrypi2-native.cfg 中删除)

执行与sudo openocd -f config.cfg

树莓派 CM3 正在运行该选项core_freq=250/boot/config.txt我需要此选项才能可靠地访问 UART1。我认为这可能与时钟有关,但不确定如何更改/修复。

我已经尝试了几种reset_config没有改变错误的组合。完整的初始化堆栈如下:

无论我尝试什么,我总是得到这个“错误:无法初始化调试端口”。

有趣的是,使用连接到 PI USB 的 ST-Link/V2 适配器并修改interface配置,它可以正常工作。

有什么建议么?我究竟做错了什么?需要对 GPIO 进行一些初始化吗?

编辑:

我注意到有人投票以“不清楚在问什么”来结束这个问题。

我在问:如何使用 GPIO 将 Raspberry Pi 连接到 nRF51 SoC?请参阅我尝试过的所有内容。

0 投票
1 回答
1005 浏览

ios - NRF51 - iOS BLE 广告间隔 - 提高连接速度

我正在考虑加快我的 iOS 应用程序和外围设备之间的连接时间。我查看了有关该主题的 Apples 文档:https ://developer.apple.com/library/content/qa/qa1931/_index.html

最初(在阅读上面的文档之前)我将广告间隔设置为 2 秒,我认为这是功耗和连接时间之间的一个很好的折衷。进一步阅读文档后,我将时间间隔更改为1285 ms#define ADVERTISING_INTERVAL 2056 ble_obj.setAdvertisingInterval(ADVERTISING_INTERVAL); 该应用程序始终可以快速发现该设备,但是在尝试连接时会出现问题。

但是,我没有看到我的应用程序和外围设备之间的连接时间没有增加。设备之间的连接可能需要 3-4 秒到 30 多秒的时间。

有什么我想念的吗?是在外围还是在中央?

外围BT芯片是Nordic Semiconductor NRF51822。在检查 Nordic Semiconductor 应用程序上的设备广告包时,我可以看到广告间隔通常从 1275 毫秒到大约 1295 毫秒不等(正如预期的那样?由于添加到广告包中的随机时间)

注意 还尝试了152.5 毫秒的广告间隔,但仍然没有看到连接速度有任何重大改进。显然,我发现发现速度有了显着提高

0 投票
1 回答
397 浏览

c - 内部引导加载程序 ARM cortex M4 NRF52 芯片

我正在为一个辅助项目制作一个引导加载程序。

我读入了一个十六进制文件,验证了校验和,并将所有内容存储在闪存中,对应的地址偏移为 0x4000。我在跳转到我的应用程序时遇到问题。我已经阅读、搜索并尝试了很多不同的东西,比如这里的代码。

http://www.keil.com/support/docs/3913.htm

我当前的代码是这样的;

}

这只是跳转到一个随机位置,不做任何事情。我已经使用 keil 的注册窗口手动将地址添加到 PC,它直接跳转到我的应用程序,但我还没有找到使用代码的方法。有任何想法吗?先感谢您。

十六进制文件的倒数第二行还有起始线性地址记录: http ://www.keil.com/support/docs/1584.htm

有谁知道这条线怎么办?

谢谢,

埃里克·米卡勒夫

0 投票
1 回答
549 浏览

node.js - 一个中央控制多个 BLE 外设

我对 IoT 和 BLE 还很陌生。我想要实现的是同时或在很短的时间内(即少于 100 毫秒)写入至少 100 个外围设备的 GATT 特性。目前我的外围设备是 Ble nano (nRF51822),上面运行着自定义 GATT 服务。我正在使用我的 Mac 作为中央 BLE。我正在使用 Node.js 和高贵来实现中心。我想知道这样的事情是否可能,如果可能,请将我链接到示例代码。:)

0 投票
0 回答
1338 浏览

bluetooth - 如何在 Central 设备(蓝牙)上创建白名单

我想在 Central 设备上创建一个白名单。因为周围有很多外围设备,我只想连接一个外围设备。首先,我将中心设备的地址注册到外围设备。当我使用单个外围设备和单个中央设备时,连接建立并且我可以将命令从中央设备发送到外围设备。但是当我附近有多个外围设备时,我无法向从中央设备注册的外围设备发送命令。所以我决定在中央设备上创建白名单来连接我之前注册的外围设备。但我不知道如何在 Central 设备上创建白名单。你有什么例子吗?(ble_app_hrs 除外)

0 投票
1 回答
631 浏览

android - Android蓝牙:丢包

我们已经构建了一个可穿戴设备,它每 20 毫秒通过 BLE 进行测量并将结果发送到 Android 设备。我们得到了奇怪的结果,前 270 个数据包按时收到并且没有丢失,但是在 271 时事情变得奇怪了。我们将给出 5 个数据包(按时)然后丢弃 32 个数据包,然后重复。
手机是安卓 7.1.1 的 Nexus 5X。该设备正在运行带有 BLE 4.2 的 nRF51。我们正在使用基于 Template 应用程序的 Android nRF 工具箱 v2.4.0。我们的一个假设是 ConnectionPriority 是错误的,我们需要设置更高的优先级。我们尝试在 BleManager 中添加以下内容: mBluetoothGatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH); 但是没有区别。奇怪的是,系统似乎可以找到前 270 个数据包。任何想法如何调试这个?

下面的示例 logcat。注意包号是Android端收到的包号,不是设备端的包号:

0 投票
1 回答
413 浏览

bluetooth-lowenergy - BLE 服务中是否需要循环冗余校验

在北欧的这个应用程序中

https://github.com/adafruit/Bluefruit_LE_Connect_Android

将循环冗余校验 (CRC) 添加到有效负载字节数组中,然后再将其写入 UART 接收特性。

CRC有必要吗?BLE栈不是自己加前导码、CRC等来滤除噪音的吗?

谢谢

0 投票
1 回答
234 浏览

keil - 调用堆栈窗口不显示本地值

我正在运行调试会话。

services_init我在第 201 行的函数内部设置了一个断点。

我运行了run up to break point命令

在此处输入图像描述

处理器按预期在第 201 行暂停。但是,堆栈窗口仅显示main函数的本地变量。

为什么我看不到本地变量services_init

在此处输入图像描述