问题标签 [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.
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 再次打开。
这是一个错误吗?
accelerometer - 如何从真实加速度 3 轴中消除重力?
我想从我的 3 轴数据中移除重力,请帮我修复它。
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?请参阅我尝试过的所有内容。
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 毫秒的广告间隔,但仍然没有看到连接速度有任何重大改进。显然,我发现发现速度有了显着提高
c - 内部引导加载程序 ARM cortex M4 NRF52 芯片
我正在为一个辅助项目制作一个引导加载程序。
我读入了一个十六进制文件,验证了校验和,并将所有内容存储在闪存中,对应的地址偏移为 0x4000。我在跳转到我的应用程序时遇到问题。我已经阅读、搜索并尝试了很多不同的东西,比如这里的代码。
http://www.keil.com/support/docs/3913.htm
我当前的代码是这样的;
}
这只是跳转到一个随机位置,不做任何事情。我已经使用 keil 的注册窗口手动将地址添加到 PC,它直接跳转到我的应用程序,但我还没有找到使用代码的方法。有任何想法吗?先感谢您。
十六进制文件的倒数第二行还有起始线性地址记录: http ://www.keil.com/support/docs/1584.htm
有谁知道这条线怎么办?
谢谢,
埃里克·米卡勒夫
node.js - 一个中央控制多个 BLE 外设
我对 IoT 和 BLE 还很陌生。我想要实现的是同时或在很短的时间内(即少于 100 毫秒)写入至少 100 个外围设备的 GATT 特性。目前我的外围设备是 Ble nano (nRF51822),上面运行着自定义 GATT 服务。我正在使用我的 Mac 作为中央 BLE。我正在使用 Node.js 和高贵来实现中心。我想知道这样的事情是否可能,如果可能,请将我链接到示例代码。:)
bluetooth - 如何在 Central 设备(蓝牙)上创建白名单
我想在 Central 设备上创建一个白名单。因为周围有很多外围设备,我只想连接一个外围设备。首先,我将中心设备的地址注册到外围设备。当我使用单个外围设备和单个中央设备时,连接建立并且我可以将命令从中央设备发送到外围设备。但是当我附近有多个外围设备时,我无法向从中央设备注册的外围设备发送命令。所以我决定在中央设备上创建白名单来连接我之前注册的外围设备。但我不知道如何在 Central 设备上创建白名单。你有什么例子吗?(ble_app_hrs 除外)
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端收到的包号,不是设备端的包号:
bluetooth-lowenergy - BLE 服务中是否需要循环冗余校验
在北欧的这个应用程序中
https://github.com/adafruit/Bluefruit_LE_Connect_Android
将循环冗余校验 (CRC) 添加到有效负载字节数组中,然后再将其写入 UART 接收特性。
CRC有必要吗?BLE栈不是自己加前导码、CRC等来滤除噪音的吗?
谢谢