Nordic Bluetooth 切换到DFU Mode
转义Nordic文档:关于如何切换BLE如何切换到DFU Mode。
下面的流程图展示了如何将蓝牙切换到DFU Mode:

如图所示,需要满足两个条件:
1)打开中央设备的notificaton功能(即订阅notify的characteristic)
2)给设备发送Start DFU命令:0x01xx(xx取值为01 SoftDevice/02 Bootloader/03 SoftDevice Bootloader/04 Application),一般使用0x0104就好。
Xamarin.Form示例代码如下:
var notifyDFUCharacter = await DFUservice.GetCharacteristicAsync(Guid.Parse(Rlm1BleControlPointCharUuid));
notifyDFUCharacter.ValueUpdated += ((o, args) =>
{
var bytes = args.Characteristic.Value;
string text = "";
for (int i = 0; i < bytes.Length; i++)
{
text += ($"0x{bytes[i].ToString("X2")},");
}
Debug.WriteLine($"**********DFU {text.TrimEnd(',')} notify");
Rlm1DFUNotifyHandel(DFUservice, bytes);
});
await notifyDFUCharacter.StartUpdatesAsync();
//4 switch to DFU mode
await Task.Delay(5 * 100);
const byte opCodeStartDfu = 0x01;
const byte imageType = 0x04;
var writeDFUCharacter = await DFUservice.GetCharacteristicAsync(Guid.Parse(Rlm1BleControlPointCharUuid));
await writeDFUCharacter.WriteAsync(new byte[] { opCodeStartDfu, imageType });

浙公网安备 33010602011771号