女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

有淺入深的介紹BLE與MEMS中的開發板設計

MEMS技術 ? 來源:互聯網 ? 作者:佚名 ? 2018-03-31 08:44 ? 次閱讀

當BLE遇到MEMS,就如同天使有了翅膀。本期從有淺入深的介紹BLE與MEMS的那些事,就從ST的STEVAL-IDB007V1開發板中BLE_SensorDemo例程開始。

藍牙入門網上資料很多,可參考《藍牙BLE權威教程》,或者看看干貨 | BLE開發,你要知道這幾件事

開發環境搭建請參考論壇帖子STEVAL-IDB007V1之透傳演示操作流程和所需軟件資源下載(http://bbs.eeworld.com.cn/thread-604229-1-1.html),從開始菜單進入BlueNRG-1 Navigator可以實際運行各種例程查看效果。

硬件連接:使用ST-Link V2中SWCLK與SWDIO與開發板對應的引腳連接,用來仿真;供電和串口都通過USB線纜。

下圖是局部放大圖:

會發現陀螺儀的值會跳變(不同的傾角下跳變的概率不一樣,更新頻率越高,跳變的概率越大),由于陀螺儀在原始的寄存器值上乘以了70,將跳變值除以70后為+255和-255。

經過一系列的摸索,和ST工程師的幫助,終于解決了問題,見下圖,那就是將BDU(Block Data Update)位置1,沒有置1的話,數據沒有準備好就被讀出來也是有可能的,這也就是為何更新頻率設置的越高就會越容易出現錯誤值的原因。

其實早在2015年在數據手冊中就建議將BDU位置1了,后來的官方初始化程序中也都將BDU置1了。

下面是不動芯片,僅僅將BDU置1后的效果:

因此想要準確的的獲取的數據記得將BDU位置1哦。

更高效的讀取數據傳感器使用的是SPI接口,這點很好,相比于IIC,SPI這是要快太多了,我們可以節約更多的時間用來做其他的事,也有利于節能,該芯片最高支持10MHz的SPI速度,但是驅動卻寫的不是很高效,官方代碼如下:

  1. static IMU_6AXES_StatusTypeDef LSM6DS3_G_GetAxes( int32_t *pData )

  2. {

  3. /*Here we have to add the check if the parameters are valid*/

  4. int16_t pDataRaw[3];

  5. float sensitivity = 0.0f;

  6. if(LSM6DS3_G_GetAxesRaw(pDataRaw) != IMU_6AXES_OK)

  7. {

  8. return IMU_6AXES_ERROR;

  9. }

  10. if(LSM6DS3_G_GetSensitivity( &sensitivity ) != IMU_6AXES_OK)

  11. {

  12. return IMU_6AXES_ERROR;

  13. }

  14. pData[0] = (int32_t)(pDataRaw[0] * sensitivity);

  15. pData[1] = (int32_t)(pDataRaw[1] * sensitivity);

  16. pData[2] = (int32_t)(pDataRaw[2] * sensitivity);

  17. return IMU_6AXES_OK;

  1. static IMU_6AXES_StatusTypeDef LSM6DS3_G_GetAxesRaw( int16_t *pData )

  2. {

  3. /*Here we have to add the check if the parameters are valid*/

  4. uint8_t tempReg[2] = {0, 0};

  5. if(LSM6DS3_IO_Read(&tempReg[0], LSM6DS3_XG_MEMS_ADDRESS, LSM6DS3_XG_OUT_X_L_G, 2) != IMU_6AXES_OK)

  6. {

  7. return IMU_6AXES_ERROR;

  8. }

  9. pData[0] = ((((int16_t)tempReg[1]) << 8) + (int16_t)tempReg[0]);

  10. if(LSM6DS3_IO_Read(&tempReg[0], LSM6DS3_XG_MEMS_ADDRESS, LSM6DS3_XG_OUT_Y_L_G, 2) != IMU_6AXES_OK)

  11. {

  12. return IMU_6AXES_ERROR;

  13. }

  14. pData[1] = ((((int16_t)tempReg[1]) << 8) + (int16_t)tempReg[0]);

  15. if(LSM6DS3_IO_Read(&tempReg[0], LSM6DS3_XG_MEMS_ADDRESS, LSM6DS3_XG_OUT_Z_L_G, 2) != IMU_6AXES_OK)

  16. {

  17. return IMU_6AXES_ERROR;

  18. }

  19. pData[2] = ((((int16_t)tempReg[1]) << 8) + (int16_t)tempReg[0]);

  20. return IMU_6AXES_OK;

  21. }

每次都是單次讀取(讀兩個字節)每一軸的數據,而且還獲取了一次sensitivity(讀一個字節)。

我們知道SPI要完成一次讀數據的操作,本質是需要讀寫兩次的,第一次將地址寫進去,然后再將0寫入,將數據弄出來。因此驅動如果需要讀取6軸的數據一共需要寫12次,讀18次SPI。而我認為sensitivity是開始設置的,可以不讀,然后6軸的數據可以一次全部讀出來,因為默認SPI地址是會累加的,

因此程序可以改成如下,然后將陀螺儀值乘以70,加速度計值乘以0.122

  1. void Get_Sensor_RawData(void){

  2. Sensor_IO_Read(NULL,LSM6DSL_ACC_GYRO_OUTX_L_G,regValue, 12);

  3. for(int i=0;i<6;i++){

  4. Sensor_Raw_Data[/size][/font][font=微軟雅黑][size=3] = ( ( ( ( int16_t )m_rx_buf[2*i+2] ) << 8 ) + (int16_t )m_rx_buf[2*i+1] );

  5. }

  6. }

從0x22地址開讀,也就是寫1次,讀12次,而且還節約了SPI的開啟和關閉的耗時,這樣就大大的提高的數據獲取的速度,如果可以使用DMA能夠更高效。

因此如果想要更加高效的使用陀螺儀加速度計,記得要連續的讀取12個字節且無需讀取靈敏度哦。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mems
    +關注

    關注

    129

    文章

    4064

    瀏覽量

    192738
  • 陀螺儀
    +關注

    關注

    44

    文章

    829

    瀏覽量

    99677
  • ST
    ST
    +關注

    關注

    32

    文章

    1170

    瀏覽量

    130152

原文標題:干貨 | 當BLE遇到MEMS——收服和調教

文章出處:【微信號:wwzhifudianhua,微信公眾號:MEMS技術】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux開發板CAN總線測試方法,觸覺智能RK3568開發板演示

    本文介紹Linux開發板CAN總線測試方法,使用觸覺智能EVB3568鴻蒙開發板演示,搭載瑞芯微RK3568,四核A55處理器,主頻2.0Ghz,1T算力NPU;支持OpenHarmony5.0
    的頭像 發表于 04-11 19:14 ?216次閱讀
    Linux<b class='flag-5'>開發板</b>CAN總線測試方法,觸覺智能RK3568<b class='flag-5'>開發板</b>演示

    STM32開發板教程之STM32開發指南免費下載

    介紹了幾個常用的系統文件(程序);3,實戰篇,主要通過 56 個實例(絕大部分是直接操作寄存器完成的)帶領大家一步步深入 STM32 的學習。   本指南為 ALIENTEK 戰艦 STM32 開發板的配套教程,在開發板
    發表于 02-28 09:08 ?179次下載

    迅為RK3568開發板驅動指南Linux通用SPI設備驅動

    迅為RK3568開發板驅動指南Linux通用SPI設備驅動
    的頭像 發表于 01-23 11:02 ?2498次閱讀
    迅為RK3568<b class='flag-5'>開發板</b>驅動指南Linux<b class='flag-5'>中</b>通用SPI設備驅動

    迅為RK3576開發板核心與底板接口硬件介紹

    迅為RK3576開發板核心與底板接口硬件介紹
    的頭像 發表于 01-14 15:15 ?1278次閱讀
    迅為RK3576<b class='flag-5'>開發板</b>核心<b class='flag-5'>板</b>與底板接口硬件<b class='flag-5'>介紹</b>

    瑞芯微主板/開發板Linux系統播放音頻方法,觸覺智能RK3562開發板演示

    本文介紹瑞芯微方案主板/開發板Linux系統播放音頻的方法,觸覺智能RK3562開發板演示,通用RK3566、RK3568、RK3588等
    的頭像 發表于 12-13 11:40 ?755次閱讀
    瑞芯微主板/<b class='flag-5'>開發板</b>Linux系統播放音頻方法,觸覺智能RK3562<b class='flag-5'>開發板</b>演示

    【迅為】瑞芯微RK3588開發板RK3568開發板區別及優勢

    RK3568開發板
    的頭像 發表于 11-18 14:19 ?1286次閱讀
    【迅為】瑞芯微RK3588<b class='flag-5'>開發板</b>RK3568<b class='flag-5'>開發板</b>區別及優勢

    正點原子fpga開發板不同型號

    正點原子作為國內領先的FPGA開發板供應商,其產品線覆蓋了從入門級到高端應用的各個領域。這些開發板不僅適用于學術研究,還廣泛應用于工業控制、通信、圖像處理等多個領域。 1. 入門級開發板 1.1
    的頭像 發表于 11-13 09:30 ?3178次閱讀

    【干貨】了這份HK32F407ZGT7開發板介紹,1萬個項目輕松拿捏!

    2024-11-0811:39·航順HK32MCUHK32F407ZGT7開發板開發板簡介開發板是基于航順芯片公司F4系列HK32F407ZGT7開發的一款
    的頭像 發表于 11-08 13:28 ?707次閱讀
    【干貨】<b class='flag-5'>有</b>了這份HK32F407ZGT7<b class='flag-5'>開發板</b><b class='flag-5'>介紹</b>,1萬個項目輕松拿捏!

    【BearPi-Pico H3863星閃開發板體驗連載】藍牙 BLE 透傳測試

    藍牙 BLE 透傳測試 小熊派 Pico-H3863 開發板支持 BLE 1MHz/2MHz 頻寬、BLE4.0/4.1/4.2/5.0/5.1/5.2 協議、
    發表于 10-04 11:57

    51開發板芯片資料

    51開發板芯片資料
    發表于 09-18 09:29 ?1次下載

    瑞薩開發板?RX-FSOE-REF-KIT功能安全使用介紹(上)

    本文基于瑞薩官方開發板RX-FSOE-REF-KIT,介紹EtherCAT通訊的功能安全應用開發以及實現過程所需的開發環境。
    的頭像 發表于 08-20 15:25 ?1061次閱讀
    瑞薩<b class='flag-5'>開發板</b>?RX-FSOE-REF-KIT功能安全使用<b class='flag-5'>介紹</b>(上)

    EFR32MG24開發板介紹及IDE使用

    EFR32MG24開發板介紹及IDE使用
    的頭像 發表于 08-10 10:47 ?1258次閱讀
    EFR32MG24<b class='flag-5'>開發板</b><b class='flag-5'>介紹</b>及IDE使用

    多個esp32開發板如何組成ble mesh網絡,是否可以自動組網呢?

    關于example下的ble_mesh樣例ble_mesh_node 1.多個esp32開發板如何組成mesh網絡,是否可以自動組網? 2、在組成mesh的情況下,各個esp32如何和應用程序進行接口,如api和回調? 3、節點
    發表于 06-24 07:53

    使用esp-idf-v5.0.1 example的esp_ble_mesh例程遇到的疑問求解

    本人使用esp-idf-v5.0.1 example的esp_ble_mesh例程,共使用6個ESP-WROVER-KIT開發板。在4個開發板上燒寫onoff_client例程,在1
    發表于 06-12 07:25

    米爾NXP i.MX 93開發板的Qt開發指南

    Qt應用開發,推薦使用QtCreator集成開發環境,可以在LinuxPC下開發Qt應用,自動化地交叉編譯為開發板的ARM架構。本章使用Y
    的頭像 發表于 06-07 08:01 ?2149次閱讀
    米爾NXP i.MX 93<b class='flag-5'>開發板</b>的Qt<b class='flag-5'>開發</b>指南