RK3308 蓝牙接口测试

2023-05-16

BT相关接口

#deviceio_test bluetooth

  1. bt_server_open 蓝牙测试初始化,执行蓝牙测试前,先调用该接口。BLE的接收和数据请求回调函数的注册。注:BLE读数据是通过注册回调函数实现。当BLE连接收到数据主动调用接收回调函数。具体请参见 RkBtContent 结构说明和 rk_ble_register_recv_callback 函数说明。
  2. bt_test_set_class 设置蓝牙设备类型。当前测试值为0x240404。
  3. bt_test_get_device_name 获取本机设备名
  4. bt_test_get_device_addr 获取本机设备地址
  5. bt_test_set_device_name 设置本机设备名
  6. bt_test_enable_reconnect 使能A2DP SINK 和 HFP 自动重连功能。推荐紧跟01后调用
  7. bt_test_disable_reconnect 禁用A2DP SINK 和 HFP 自动重连功能。推荐紧跟在01后调用
  8. bt_test_start_discovery 扫描周围设备
  9. bt_test_cancel_discovery 取消8发起的扫描操作
  10. bt_test_is_discovering 是否正在扫描周围的设备
  11. bt_test_display_devices 打印扫描到的周围设备的信息
  12. bt_test_display_paired_devices 打印当前已配对的设备信息
  13. bt_test_get_paired_devices 获取当前已配对的设备列表
  14. bt_test_free_paired_devices 释放 13 中申请的,用于存放已配对设备信息的内存
  15. bt_test_pair_by_addr 和指定地址的设备配对,15 input FC:58:FA:29:37:35(Q9)
  16. bt_test_unpair_by_addr 取消和指定地址的设备配对,data:" 94:87:E0:B6:6D:AE "
  17. bt_test_source_auto_start A2DP Source 自动扫描开始,选择17前,要开启一个BT Sink设备,该设备处于可发现并可连接状态。17功能会自动扫描BT Sink设备并连接信 号最强的那个设备
  18. bt_test_source_connect_status 获取 A2DP Source 连接状态
  19. bt_test_source_auto_stop A2DP Source 自动扫描接口停止
  20. bt_test_sink_open 打开 A2DP Sink 模式
  21. bt_test_sink_visibility00 设置 A2DP Sink 不可见、不可连接
  22. bt_test_sink_visibility01 设置 A2DP Sink 不可见、可连接
  23. bt_test_sink_visibility10 设置 A2DP Sink 可见、不可连接
  24. bt_test_sink_visibility11 设置 A2DP Sink 可见、可连接
  25. bt_test_ble_visibility00 设置ble可见/可连接特性。visiable:0表示不可见,1表示可见。connect:0表示不可连接,1表示可连接。该接口仅适用于bsa(BSA only)
  26. bt_test_ble_visibility11 设置BLE可见可连接
  27. bt_test_sink_status 查询 A2DP Sink 连接状态
  28. bt_test_sink_music_play 反向控制设备播放
  29. bt_test_sink_music_pause 反向控制设备暂停
  30. bt_test_sink_music_next 反向控制设备播放下一曲
  31. bt_test_sink_music_previous 反向控制设备播放上一曲
  32. bt_test_sink_music_stop 反向控制设备停止播放
  33. bt_test_sink_set_volume 设置音量测试
  34. bt_test_sink_connect_by_addr 连接指定地址的设备,data: " 94:87:E0:B6:6D:AE "
  35. bt_test_sink_disconnect_by_addr A2DP Sink 断开链接
  36. bt_test_sink_get_play_status 获取播放状态,会触发play position change 回调
  37. bt_test_sink_get_poschange 当前连接的设备,是否支持播放进度上报
  38. bt_test_sink_disconnect A2DP Sink 断开连接
  39. bt_test_sink_close 关闭 A2DP Sink 服务
  40. bt_test_ble_start 启动BLE。设备被动连接后,收到“Hello RockChip”,回应“My name is rockchip”
  41. bt_test_ble_write 测试BLE写功能,发送134个‘0’-‘9’组成的字符串
  42. bt_test_ble_disconnect 断开BLE连接
  43. bt_test_ble_stop 停止BLE
  44. bt_test_ble_setup 停止BLE广播,该函数执行后,BLE变为不可见并且不可连接
  45. bt_test_ble_clean
  46. bt_test_ble_get_status 得到目前BLE的连接状态
  47. bt_test_spp_open 打开SPP,设备处于可连接状态
  48. bt_test_spp_write 送数据,data:数据指针,len:数据长度
  49. bt_test_spp_close 关闭SPP
  50. bt_test_spp_status 获取SPP的连接状态
  51. bt_test_hfp_sink_open 并存方式打开HFP HF与A2DP SINK
  52. bt_test_hfp_hp_open 仅打开HFP HF功能
  53. bt_test_hfp_hp_accept 主动接听电话
  54. bt_test_hfp_hp_hungup 主动挂断电话
  55. bt_test_hfp_hp_redail 重播
  56. bt_test_hfp_hp_report_battery 从0到9,每隔一秒上报一次电池电量状态,此时手机端可看到电量从空到满的图标变化过程。注:有些手机不支持蓝牙电量图标显示
  57. bt_test_hfp_hp_set_volume 从1到15,每隔一秒设置一次蓝牙通话的音量,此时手机端可看到蓝牙通话音量进度条变化过程。注:有些手 机并不动态显示进度条变化,主动加减音量触发进度天显示,此时可看到设备成功设置了手机端的音量。比 如本身音量为0,该接口运行结束后,主动按手机音量‘+’按钮,发现音量已经满格
  58. bt_test_hfp_hp_close 关闭HFP 服务
  59. bt_test_hfp_hp_disconnect 断开HFP连接
  60. bt_test_obex_init 打开obex服务
  61. bt_test_obex_pbap_connect 打开pbap服务,并连接指定设备
  62. bt_test_obex_pbap_get_pb_vcf 获取联系人电话薄,结果存储在/data/pb.vcf
  63. bt_test_obex_pbap_get_ich_vcf 获取来电历史记录,结果存储在/data/ich.vcf
  64. bt_test_obex_pbap_get_och_vcf 获取拨出历史记录,结果存储在/data/och.vcf
  65. bt_test_obex_pbap_get_mch_vcf 获取未接来电历史记录,结果存储在/data/mch.vcf
  66. bt_test_obex_pbap_disconnect 关闭pbap服务,并断开连接
  67. bt_test_obex_close 关闭obex服务
  68. bt_server_close

BT接口测试

蓝牙基础接口

Q9的设备地址:FC:58:FA:29:37:35

Which would you like: 15 input FC:58:FA:29:37:35   
BSA_trace 29@ 01/01 08h:36m:33s:716ms: BSA_SecBondInit
BSA_trace 30@ 01/01 08h:36m:33s:716ms: BSA_SecBond
Which would you like: BSA_trace 31@ 01/01 08h:36m:34s:647ms: bsa_sec_event_hdlr event:0
BSA_trace 32@ 01/01 08h:36m:34s:911ms: bsa_sec_event_hdlr event:6
BSA_trace 33@ 01/01 08h:36m:34s:912ms: BSA_SecSpCfmReplyInit
BSA_trace 34@ 01/01 08h:36m:34s:912ms: BSA_SecSpCfmReply
++++++++++ BT BOND BONDING: Q9, fc:58:fa:29:37:35 ++++++++++
BSA_trace 35@ 01/01 08h:36m:35s:805ms: bsa_sec_event_hdlr event:3
BSA_trace 36@ 01/01 08h:36m:35s:830ms: BSA_DiscStartInit
BSA_trace 37@ 01/01 08h:36m:35s:830ms: BSA_DiscStart
++++++++++ BT BONDED: Q9, fc:58:fa:29:37:35 ++++++++++
BSA_trace 38@ 01/01 08h:36m:38s:813ms: bsa_sec_event_hdlr event:1

BLE接口测试说明

1.手机安装第三方ble测试apk,如nRF Connnect

2.选择40 bt_test_ble_start函数

3.手机蓝牙扫描并连接 " ROCKCHIP_AUDIO BLE "

4.连接成功后,设备端会回调 bt_test.cpp 中的 ble_status_callback_test 函数,打印"+++++
RK_BLE_STATE_CONNECT +++++",注意这里手机上蓝牙图标上没显示连接的BLE设备,要通过APP才看到,而且测试过,同一时间只能连接一台BLE设备(不管是什么协议)

5.执行如下函数,进行具体功能测试:

  • void bt_test_ble_write(char *data) 测试BLE写功能,发送134个‘0’-‘9’组成的字符串
Which would you like: 41
BSA_trace 58@ 01/01 09h:47m:23s:554ms: BSA_BleSeSendIndInit
BSA_trace 59@ 01/01 09h:47m:23s:554ms: send notification:
BSA_trace 60@ 01/01 09h:47m:23s:555ms:     0000: 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35   0123456789012345
BSA_trace 61@ 01/01 09h:47m:23s:556ms:     0010: 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31   6789012345678901
BSA_trace 62@ 01/01 09h:47m:23s:557ms:     0020: 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37   2345678901234567
BSA_trace 63@ 01/01 09h:47m:23s:558ms:     0030: 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33   8901234567890123
BSA_trace 64@ 01/01 09h:47m:23s:559ms:     0040: 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39   4567890123456789
BSA_trace 65@ 01/01 09h:47m:23s:560ms:     0050: 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35   0123456789012345
BSA_trace 66@ 01/01 09h:47m:23s:561ms:     0060: 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31   6789012345678901
BSA_trace 67@ 01/01 09h:47m:23s:562ms:     0070: 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37   2345678901234567
BSA_trace 68@ 01/01 09h:47m:23s:563ms:     0080: 38 39 30 31 32 33                                 890123          
BSA_trace 69@ 01/01 09h:47m:23s:564ms: BSA_BleSeSendInd
  • void bt_test_ble_get_status(char *data) 测试BLE状态接口
Which would you like: 46
RK_ble_status_test: RK_BLE_STATE_CONNECT.
RK_ble_status_test: RK_BLE_STATE_DISCONNECT.
  • void bt_test_ble_stop(char *data) 停止BLE,停止后APP就搜索不到了

A2DP SINK接口测试说明

A2DP(Advanced Audio Distribution Profile)是蓝牙高音质音频传输协议,用于传输单声道,双声道音乐(一般在A2DP中用于stereo双声道),典型应用为蓝牙耳机。

谁发送音频数据谁就是Source,谁接收音频数据谁就是Sink,这里是Sink接口测试,也就是说,这时候,这个被测试设备就相当于成为了一个蓝牙音箱,被别的Source设备连接后,在Source设备上播放音乐,声音会从Sink设备播出,测试步骤如下:

1.选择bt_test_sink_open函数:

Which would you like: 20
++++++++++++ BT SINK EVENT: idle ++++++++++
BSA_trace 123@ 01/01 10h:08m:30s:022ms: BSA_AvkEnableInit
BSA_trace 124@ 01/01 10h:08m:30s:022ms: BSA_AvkEnable
BSA_trace 125@ 01/01 10h:08m:30s:024ms: BSA_AvkRegisterInit
BSA_trace 126@ 01/01 10h:08m:30s:024ms: BSA_AvkRegister
BSA_trace 127@ 01/01 10h:08m:30s:026ms: BSA_AvkRegister
BSA_trace 128@ 01/01 10h:08m:30s:026ms: UIPC_Open ChId:7
BSA_trace 129@ 01/01 10h:08m:30s:026ms: uipc_avk_open
BSA_trace 130@ 01/01 10h:08m:30s:027ms: uipc_fifo_open enter FIFO:./bt-avk-fifo
BSA_trace 131@ 01/01 10h:08m:30s:027ms: BSA_AvkRegister
BSA_trace 132@ 01/01 10h:08m:30s:028ms: uipc_avk_open AVK channel opened
BSA_trace 133@ 01/01 10h:08m:30s:028ms: uipc_fifo_task thread started
BSA_trace 134@ 01/01 10h:08m:30s:030ms: uipc_fifo_task fifo opened
BSA_trace 135@ 01/01 10h:08m:30s:030ms: uipc_fifo_task read thread will now read fifo
BSA_trace 136@ 01/01 10h:08m:30s:034ms: BSA_AvkOpenInit
BSA_trace 137@ 01/01 10h:08m:30s:035ms: BSA_AvkOpen
BSA_trace 138@ 01/01 10h:08m:33s:040ms: BSA_AvkOpenInit
BSA_trace 139@ 01/01 10h:08m:33s:040ms: BSA_AvkOpen

BSA_trace 141@ 01/01 10h:11m:12s:184ms: BSA_DmSetConfigInit
BSA_trace 142@ 01/01 10h:11m:12s:184ms: BSA_DmSetConfig
++++++++++++ BT SINK EVENT: connect sucess ++++++++++
BSA_trace 143@ 01/01 10h:11m:16s:058ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 144@ 01/01 10h:11m:16s:058ms: BSA_AvkGetElementAttrCmd

2.手机蓝牙扫描并连接"RockChip"

3.连接成功后,设备端会回调bt_test.cpp中的bt_sink_callback函数, 打印"++++++++++++ BT SINK EVENT:connect sucess ++++++++++"

4.打开手机的音乐播放器,播放歌曲:

++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
++++++++++++ BT A2DP SINK STATE: started ++++++++++
++++++++++++ BT SINK EVENT: playing ++++++++++
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 0, song_pos: 0
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 0, song_pos: 0
++++++++++++ BT SINK EVENT: paused ++++++++++
++++++++++++ BT A2DP SINK STATE: suspended ++++++++++
BSA_trace 145@ 01/01 10h:11m:37s:249ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 146@ 01/01 10h:11m:37s:250ms: BSA_AvkGetElementAttrCmd
++++++++++++ BT A2DP SINK STATE: started ++++++++++
++++++++++++ BT SINK EVENT: playing ++++++++++
BSA_trace 147@ 01/01 10h:11m:37s:279ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 148@ 01/01 10h:11m:37s:279ms: BSA_AvkGetElementAttrCmd
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: Mystery of Love 
    artist: Sufjan Stevens
    album: Call Me By Your Name (Original Motion Picture Soundtrack)
    genre: 
    num_tracks: 0
    track_num: 0
    playing_time: 249025
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: Mystery of Love 
    artist: Sufjan Stevens
    album: Call Me By Your Name (Original Motion Picture Soundtrack)
    genre: 
    num_tracks: 0
    track_num: 0
    playing_time: 249025
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 1001
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 1038
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 2039
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 2055
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 3057
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 3075
++++++++ bt sink position change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    song_len: 249025, song_pos: 4077
    song_len: 289973, song_pos: 257081
++++++++++++ BT SINK EVENT: paused ++++++++++
++++++++++++ BT A2DP SINK STATE: suspended ++++++++++
BSA_trace 165@ 01/01 10h:33m:05s:032ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 166@ 01/01 10h:33m:05s:032ms: BSA_AvkGetElementAttrCmd
BSA_trace 167@ 01/01 10h:33m:05s:539ms: BSA_AvkGetElementAttrCmdInit
BSA_trace 168@ 01/01 10h:33m:05s:540ms: BSA_AvkGetElementAttrCmd
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
++++++++ bt sink track change ++++++++
    remote device address: 9c:5a:81:40:5a:ad
    title: unknow
    artist: unknow
    album: unknow
    genre: 
    num_tracks: 
    track_num: 
    playing_time: 
BSA_trace 169@ 01/01 10h:33m:10s:558ms: BSA_DmSetConfigInit
BSA_trace 170@ 01/01 10h:33m:10s:558ms: BSA_DmSetConfig
++++++++++++ BT SINK EVENT: disconnected ++++++++++

5.执行如下函数,进行具体功能测试:21-39

A2DP SOURCE接口测试说明

1.选择bt_test_source_auto_start函数

2.设备会自动扫描身边的A2dp Sink类型设备,并连接信号最强的那个(在旁边打开一个蓝牙音箱,它能够连上蓝牙音箱)

3.连接成功后,设备端会回调bt_test.cpp中的bt_test_source_status_callback函数,打印"++++++++++++ BT SOURCE EVENT:connect sucess ++++++++++"

4.此时设备播放音乐,则音乐会从连接的A2dp Sink设备中播出

5.执行如下函数,进行具体功能测试:17-19

SPP接口测试说明

蓝牙串口是基于 SPP 协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输的一种设备。测试步骤如下:

1.手机安装第三方SPP测试apk,如 “Serial Bluetooth Terminal”

2.选择47 bt_test_spp_open函数

3.手机蓝牙扫描并连接"RockChip"

4.打开第三方SPP测试apk,使用spp连接设备。设备连接成功后,设备端会回调bt_test.cpp中的
bt_test_btspp_status_callback函数,打印"+++++++ RK_BT_SPP_EVENT_CONNECT +++++"

5.执行如下函数,进行具体功能测试:47-50

  • 48 测试SPP写功能。向对端发送“This is a message from rockchip board!”字串
Which would you like: 47
BSA_trace 27@ 01/01 08h:09m:53s:759ms: BSA_DgEnableInit
BSA_trace 28@ 01/01 08h:09m:53s:759ms: BSA_DgEnable
BSA_trace 29@ 01/01 08h:09m:53s:761ms: BSA_DgListenInit
BSA_trace 30@ 01/01 08h:09m:53s:761ms: BSA_DgListen
BSA_trace 31@ 01/01 08h:10m:42s:489ms: bsa_sec_event_hdlr event:0
BSA_trace 32@ 01/01 08h:10m:42s:652ms: bsa_dg_event_hdlr event:0
BSA_trace 33@ 01/01 08h:10m:42s:653ms: UIPC_Open ChId:11
BSA_trace 34@ 01/01 08h:10m:42s:653ms: uipc_cl_dg_open
+++++++ RK_BT_SPP_EVENT_CONNECT +++++

Which would you like: 48
BSA_trace 35@ 01/01 08h:11m:01s:488ms: DG outgoing Data:
BSA_trace 36@ 01/01 08h:11m:01s:488ms:     0000: 54 68 69 73 20 69 73 20 61 20 6d 65 73 73 61 67   This is a messag
BSA_trace 37@ 01/01 08h:11m:01s:489ms:     0010: 65 20 66 72 6f 6d 20 72 6f 63 6b 63 68 69 70 20   e from rockchip 
BSA_trace 38@ 01/01 08h:11m:01s:490ms:     0020: 62 6f 61 72 64 21                                 board!          
BSA_trace 39@ 01/01 08h:11m:01s:491ms: uipc_cl_dg_send_buf ChId:11 len:38
bt_test_spp_write failed, ret<0> != strlen(buff)<38>

Which would you like: 50
+++++++ RK_BT_SPP_STATE_CONNECT +++++

HFP接口测试说明

HFP(Hands-free Profile),让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号要视蓝牙耳机及电话是否支持。

1.选择 bt_test_hfp_sink_openbt_test_hfp_hp_open 函数

2.手机蓝牙扫描并连接"ROCKCHIP_AUDIO"。注:如果之前测试SINK功能时已经连接过手机,此时应在手机端先 忽略该设备,重新扫描并连接。

3.设备连接成功后,设备端会回调 bt_test.cpp 中的 bt_test_hfp_hp_cb 函数,打印“+++++ BT HFP HP CONNECT+++++”。如果手机被呼叫,此时打印“+++++ BT HFP HP RING +++++”,接通电话时会打印“+++++ BT HFP AUDIO OPEN +++++”。其他状态打印请直接阅读 bt_test.cppbt_test_hfp_hp_cb 函数源码。注:若调用了 bt_test_hfp_sink_open 接口,当设备连接成功后,A2DP SINK的连接状态也会打印,比如"++++++++++++ BT SINK EVENT: connect sucess ++++++++++"

4.执行如下函数,进行具体功能测试:51-67

总结

蓝牙的配对流程

从目前的测试结果来看,配对流程如下(个人猜想):

扫描→配对中(bonding)→bonded(已配对)→连接

问题:两台手机之间用蓝牙进行配对,一方向另一方发送了文件,这中间采用的是什么协议呢

BLE蓝牙

一般都是作为从设备的,不能作为主设备去连接

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RK3308 蓝牙接口测试 的相关文章

  • up-board

    安装ubuntu16 04 安装board内核 http www eeboard com bbs thread 59222 1 1 html 对管脚的控制 http www eeboard com bbs thread 59257 1 1
  • 【嵌入式软件实习】找实习和电话面试记录与总结

    前言 前一段时间就是非常想找实习 xff0c 这次是接到了一家还算是比较大的公司的面试通知和实习offer 做一下简单的记录给在找实习的大家一个参考吧 主要内容为 xff1a 三连即可提高学习效率0 0 x1f9d1 x1f3fb 作者简介
  • Ubuntu更换apt镜像源

    原文 xff1a Ubuntu更换apt镜像源 在ubuntu中 xff0c 默认使用 ubuntu 的官方源http archive ubuntu com xff0c 但是这个官方源在国内下载的速度太慢 xff0c 甚至只有几十k 于是考
  • JS 闭包 详细说明(教程)

    首先 xff0c 闭包是一个高阶函数 xff0c 高阶函数除了可以接受函数作为参数外 xff0c 还可以把函数作为结果值返回 xff08 不知道高阶函数是啥 xff0c 点击链接 xff09 先通过一个例子来了解一下如何把函数作为结果值返回
  • STVP烧录程序

    STVP介绍 STVD xff1a ST Visual Develop xff0c 可视化开发工具STVP xff1a ST Visual Programmer xff0c 可视化编程工具 xff0c stvp主要打开一些固件 hex s1
  • 传感器标定系列——Kalibr工具

    文章目录 Kalibr介绍安装资源 Kalibr介绍 Kalibr is a toolbox that solves the following calibration problems 多相机标定 Multi Camera Calibra
  • TCP传输图片及多线程

    最终效果图 xff1a 注意 xff1a 图片发送大体流程同 Qt网络编程 TCP IP 一 只是在发送时这里采用 的 数据流QDataStream形式 因为使用摄像进行监控时也是对一帧一帧的图片进 行处理 xff0c 因此掌握了如何用Qt
  • GCC编译过程及基本命令总结

    一 GCC简介 GCC即GNU Compiler Collection xff0c 原本只是针对C语言的编译工具 xff0c 现在已经变成了一个工具集 xff0c 包含了C C 43 43 JAVA等语言的集合体 管理和维护 xff1a 由
  • 第一章 PX4-Pixhawk-程序编译过程解析

    第一章 PX4程序编译过程解析 PX4 是一款软硬件开源的项目 xff0c 目的在于学习和研究 其中也有比较好的编程习惯 xff0c 大家不妨可以学习一下国外牛人的编程习惯 这个项目是苏黎世联邦理工大学的一个实验室搞出来的 该方案是基于 N
  • 第二章 PX4-Pixhawk-RCS启动文件解析

    第二章 PX4 RCS 启动文件解析 RCS 的启动类似于 linux 的 shell 文件 xff0c 如果不知道 shell 文件是什么东西可以理解成是为程序的流程框 xff0c 它是告诉处理器应该怎么样去运行 xff0c 前一章介绍的
  • 第三章 PX4-Pixhawk-SPI底层驱动解析

    第三章 PX4 SPI 底层驱动解析 这一章节我们会对 PX4 的底层驱动进行解析 xff0c 我们这里主要解析的是 SPI 协议 xff0c 因为这个协议是所有传感器的一个协议 xff0c 至于 IIC 和串口就可以类似的读写一下 xff
  • 第四章 PX4-Pixhawk-MPU6000传感器驱动解析

    第四章MPU6000传感器驱动解析 Mpu6000 是一个 3 轴加速度和 3 轴陀螺仪传感器 xff0c 这一章节我们将对 MPU6000 这个传感器进行解析 xff0c 依照这个解析步骤同样可以对 L3GD20 xff08 3 轴陀螺仪
  • 第五章 PX4-Pixhawk-GPS解析

    第五章 PX4 GPS解析 在上一章节我们对传感器MPU6000做了一个解析 xff0c MPU6000所支持的协议是SPI 这一章节我们来解析GPS xff0c GPS使用的是串口通信 这里我们着重讲解UBLOX的解析过程 xff0c 并
  • 第六章 PX4-Pixhawk-Sensors解析

    xfeff xfeff 第六章 PX4 Sensors 解析 这一章节并不难 xff0c 也很容易理解 xff0c 但是这一章节有几个函数需要我们去理解一下 xff0c 所以这里我们这里写一章来说明一下 Sensors 是所有传感器进行数据
  • 第七章 PX4-Pixhawk-Mavlink解析

    xfeff xfeff 第七章 PX4 Mavlink 解析 首先我们是还是来说一说 mavlink 吧 Mavlink 协议是无人机的一种开源通信协议 可以理解就是按照一定的格式来发送数据 这一章节涉及到了消息的打包发送和接收解析 首先我
  • STM8S 低功耗模式

    功耗控制的概念调整 功耗控制之硬件调整 在硬件体系中可以有以下优化手段 xff1a 优化电路设计优化电源供电效率 xff08 减少用于发热的能源 xff09 调节单片机时钟频率 xff08 频率越高功耗越高 xff09 选择单片机或者外围的
  • 第八章 PX4-Pixhawk-SDlog解析

    xfeff xfeff 第八章 PX4 SDlog 解析 这一章节我们对 SD 存储卡来进行解析 SD 卡涉及到 log 日志 xff0c 在很多飞行中 log 文件非常重要的 xff0c 尤其是新手在炸机过程中有了这些数据我们基本上就能分
  • 第九章 PX4-pixhawk-姿态估计解析

    第九章 PX4 pixhawk 姿态估计解析 这一章节我们对姿态估计进行解析 xff0c 这一章节涉及到算法 xff0c 主要涉及到的还是DCM 方向余弦 算法 首先我们还从启动文件开始进行讲解 我们找到rc mc apps中 xff0c

随机推荐

  • 第十章 PX4-Pixhawk-姿态控制

    第十章 PX4 Pixhawk 姿态控制 这一章节我们对姿态控制进行解析 xff0c 姿态解算我们还是从启动文件开始 xff0c 找到姿态解算的启动文件rc mc app 这里面找到姿态解算的启动项为mc att control start
  • 第十一章 PX4-Pixhawk-LPE位置估计

    xfeff xfeff 位置估计的解析我们还是遵循源代码的规则 xff0c 至于组合惯导和扩展卡尔曼我们以后慢慢分析 xff0c 这里主要还是对源代码来进行解析 在前一章节我们找到SYS MC EST GROUP参数设置的是1 xff0c
  • Prometheus + Grafana 接入实践

    文章目录 Prometheus 系统监控数据模型jobs安装 Grafana 可视化应用监控接入exporter 接入应用中集成 prometheus client 告警 Alertmanager参考 Prometheus 系统监控 Pro
  • docker 使用实践

    文章目录 准备环境安装运行配置环境使用镜像加速器修改 docker 目录翻墙设置代理限制容器 log 大小 操作命令基本命令容器网络网络模式容器连接外部外部连接容器容器互联 数据管理数据卷数据卷容器 挂载本机目录 镜像构建使用 docker
  • FreeRTOS 软定时器实现

    64 嵌入式 简述使用定时器 配置定时器服务任务创建 启动 停止定时器修改定时器获取定时器状态 定时器实现 数据结构 定时器控制块定时器管理链表命令队列 定时器服务任务 回调定时器处理节拍计数器溢出命令处理 参考 FreeRtos 简述 考
  • FreeRTOS 消息队列

    64 嵌入式 简述Queue 使用 创建一个消息队列发送消息 接受消息 Queue 实现 数据结构队列创建发送消息 任务中调用发送函数中断中调用发送函数 接收消息 参考 FreeRtos 简述 FreeRTOS 任务间通信方式有 消息通知
  • shell 当前工作目录的绝对路径

    64 Linux 命令脚本 编写脚本中 xff0c 需要获取执行脚本的绝对路径 xff0c 今天写脚本的时候不小心踩了个坑 xff0c 记录下 那个坑的脚本大概是这样的 xff1a span class hljs shebang bin b
  • 基于opentracing + jaeger 实现全链路追踪

    文章目录 链路追踪OpenTracingTrace 和 sapn Inject 和 Extract 操作 Sampling 采样 OpenTracing 多语言支持 链路追踪 当代互联网服务 xff0c 通常都是用复杂 xff0c 大规模分
  • STM32G030F6P6 CubeMX和keil5开发环境的搭建

    规格了解 封装 xff1a TSSOP 20内核 xff1a Arm 32 位 Cortex M0 43 CPU工作电源电压 xff1a 2 V to 3 6 VCPU频率 xff1a 64 MHzFlash存储器 xff1a 32KBRA
  • 卡尔曼滤波(KF)与扩展卡尔曼滤波(EKF)的一种理解思路及相应推导(1)

    前言 xff1a 从上个世纪卡尔曼滤波理论被提出 xff0c 卡尔曼滤波在控制论与信息论的连接上做出了卓越的贡献 为了得出准确的下一时刻状态真值 xff0c 我们常常使用卡尔曼滤波 扩展卡尔曼滤波 无迹卡尔曼滤波 粒子滤波等等方法 xff0
  • STM32工程文件组成结构

    STM32工程文件目录结构 以LED流水灯程序为例 1 CMSIS 内核驱动程序 包含c文件 xff0c ST公司官方提供的 xff0c 对arm内核和mcu系统的基础文件 xff0c 一般不做修改 2 LIB 内部功能的基本函数库 包含c
  • nvidia jetson xavier nx与agx xavier和tx2对比

    1 性能比AGX xavier低 xff0c 但体积更小 xff08 nx为70 x 45 mm xff0c AGX xavier为100 x 87 mm xff09 2 性能是TX2和jetson Nano的10倍 3 安装ubuntu系
  • 总结:单独标定IMU的工具包(kalibr_allan,imu_tk,imu_utils)

    目录 一 常用开源IMU标定工具包汇总 kalibr allan imu tk imu utils imu tk与imu utils的区别 二 使用kalibr allan计算imu误差 参考 xff1a 下载 xff1a 安装 xff1a
  • git使用总结

    Git使用总结 1 本地更新代码前忘记拉取 pull 最新代码 本地对代码进行了修改 xff0c 但是忘记拉取最新版本的代码 这时想要拉最新的代码时 xff0c git pull origin branch name xff0c 会提示你
  • matlab中im2bw函数的用法

    matlab中DIP工具箱函数im2bw使用阈值 xff08 threshold xff09 变换法把灰度图像 xff08 grayscale image xff09 转换成二值图像 所谓二值图像 xff0c 一般意义上是指只有纯黑 xff
  • 最优化方法总结:公式解、数值优化、求解思想

    机器学习的目标是给出一个模型 xff08 一般是映射函数 xff09 xff0c 然后定义对这个模型好坏的评价函数 xff08 目标函数 xff09 xff0c 求解目标函数的极大值或者极小值 xff0c 以确定模型的参数 xff0c 从而
  • AGV小车基础知识介绍

    AGV基础知识 一 AGV的基本概念二 AGV的基本结构硬件组成软件组成1 硬件结构2 单机结构3 主要类型4 主要引导方式介绍5 驱动方式介绍6 AGV的移载方式 三 AGV的控制系统1 AGV控制系统2 AGV安全系统3 激光导航控制系
  • ardupilot & PX4 RTK配置指南

    ardupilot amp PX4 RTK配置指南 随着无人机对于高精度位置需求越来越强烈 xff0c 同时也伴随着北斗三代导航系统正式服务全球 xff0c 国产的实时载波相位差分 xff08 RTK xff09 导航产品也正在以更优惠 更
  • 无人机ADS-B模块 (兼容Px4、ardupilot、极致飞控)拒绝黑飞,耗子尾汁!

    近年来 xff0c 无人机等低空飞行器成为很多玩家的新 玩具 xff0c 但是绝大多数飞行器都属于 黑飞 xff0c 就是没有民航管理部门的适航许可 也没有相关部门颁发的驾驶执照的 2018年2月7日 xff0c 河北省唐山市古冶区公安分局
  • RK3308 蓝牙接口测试

    BT相关接口 deviceio test bluetooth bt server open 蓝牙测试初始化 xff0c 执行蓝牙测试前 xff0c 先调用该接口 BLE的接收和数据请求回调函数的注册 注 xff1a BLE读数据是通过注册回