久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3772|回復: 2
收起左側

用STM32F103的模擬IIC去讀取陀螺儀、加速度、角度的數據

[復制鏈接]
ID:55476 發表于 2020-9-1 21:20 | 顯示全部樓層 |閱讀模式
1 基本介紹
9軸姿態角度傳感器廣泛用于物聯網開發,其中JY901陀螺儀由于自帶卡爾曼動態濾波算法便作為了我硬件開發的選擇。JY901陀螺儀基本可以在各個平臺上進行數據的讀取(如arduino、stm32、樹莓派、上位機等)。剛好最近項目需要用到這個模塊。我給大家整理下我是怎么操作的。先給大家看下模塊。上圖:





說實話這個模塊挺小的。但是功能還是比較強大的。好了不多說了,不然以為我在打廣告了。進入主題。

2 開發準備
講程序之前呢,和大家簡單的說說一些硬件、軟件準備和JY901怎么和STM32F103接線的。

2.1硬件、軟件準備

硬件:JY901模塊、USB-TTL、STM32F103開發板、杜邦線。STM32F103的開發板呢,我用的也是維特智能32開發板做測試用。給大家上個圖:





軟件 :https://pan.baidu.com/s/1SEWmixu4jtUL2HH_3Hcn2g 提取碼:zryo

這個是我的寫的一個 示例代碼大家有興趣的可以看下:https://pan.baidu.com/s/1sXnlT89FTTs5tONLiaPihw

2.2 接線方式

1、使用USB-TTL將STM32F103C8T6與電腦連接通信

2、JY901與STM32F103C8T6使用杜邦線連接。具體接線如下圖所示:

具體接線方式如下:





3 程序講解
3.1程序思路講解

好了到大家最關心的地方了。在這里呢。我先和大家說下。我的整體思路是什么。以一個整體框架給大家做一個說明





從上面來看呢,一共就分為主要的兩個部分。串口初始化和while主循環。

1 、串口初始化又分為時鐘初始化、串口1初始化、IIC初始化。時鐘初始化的作用意味著所有工作部件都出于同一的工作準備狀態,這樣,在以后的工作中才能步調一致。

2、while主循環包括數據解析和數據輸出。數據解析負責把從串口2中斷服務函數得到的數據進行數據的一個處理。然后從串口1把數據輸出到PC端。

下面分別和大家說下中間的一些重要的函數。

3.2 main函數

程序的執行都是在這個函數里面進行的。它包括串口初始化和while主循環。其中這個SysTick_init函數就是時鐘初始化。Initial_UART1函數是串口1初始化。IIC_Init函數是IIC初始化。IICreadBytes9()函數就是去讀取JY901內部寄存器的函數。UART1_Put_String()是串口1發送到電腦端的函數。

[backcolor=inherit !important]
3.2 時鐘初始化

時鐘初始化的作用意味著所有工作部件都出于同一的工作準備狀態,這樣,在以后的工作中才能步調一致。

[backcolor=inherit !important]
3.3 串口1初始化

初始化串口1。將相應的引腳配置成UART模式;配置和使能UART,包括配置波特率,是否使用FIF0,數據幀格式(數據長度,停止位,奇偶校驗,收發數據緩沖區大小等);配置中斷(一般分3大類,共7種);讀寫數據。

[backcolor=inherit !important]
3.4 IIC初始化

這個程序我使用的是模擬IIC,沒有使用硬件IIC。因此我只需要對IO口進行初始化就行了。

最后的SDA_OUT()函數把SDA引腳設置輸出。IIC_SDA=1;IIC_SCL=1;這兩個的意思就是把IIC總線設置成高電平。
[backcolor=inherit !important]
3.5 IICreadBytes讀取函數

IICreadBytes函數的程序運行流程是這樣的。IIC_Start(),這個是IIC開始信號。IIC_Send_Byte()往JY901發送設備的ID。IIC_Wait_Ack(),等待JY901應答。IIC_Send_Byte(),這個函數就是往JY901發送你要讀的寄存器地址,繼續等待應答。然后又重新開始,根據JY901的IIC協議發送設備地址IIC_Send_Byte9(dev<<1)+1),現在進入了接受JY901的返回的數據的模式。最后等待應答就可以了。接著就是一個For循環。把讀取到的數據放在data里。循環結束了后。IIC就停止了。最后返回 count。

[backcolor=inherit !important]
3.6 數據緩存區

數據緩存區就是在main函數里面定義的一個數組chrTemp[30]。它是把上面的IICreadBytes

讀取得到的data的數據放在了這個數組當中的。

3.7 數據解析

數據解析部分。這個主要是根據商家給的協議,把從寄存器獲取到的值。去進行處理的。以讀出模塊的角度數據為例,RedAddr 為 0x3d、0x3e、0x3f,連續讀取 6 個字節,邏 輯分析儀捕獲的波形如下圖所示:





從 0x3d 開始讀取出來的數據依次為 0x9C,0x82,0x28,0xFF,0xE6,0x24。也就是說 X 軸的角度 為 0x829C,Y 軸的角度為 0xFF28,Z 軸的角度為 0x24E6。按照 商家公式(如下圖)可以求出轉化出來的角度為:X 軸角度-176.33°,Y 軸角度為-1.19°,Z 軸角度為 51.89°。





[backcolor=inherit !important]
3.8 數據輸出

數據輸出相比較前面的就比較簡單了。它的原理就是把上面解析好的數據直接通過一個函數就發出來了。

            
發送的函數就很簡單了。就是一個UART1_Put_String打印函數。把解析的結果直接從串口1打印出來到PC端。

4 輸出結果
在電腦上正確連接好板子,首先打開串口調試助手,找到相應的端口,然后打開串口,注意這里波特率設置為9600,然后就可以觀察到左邊的窗口有數據輸出了。如圖所示:







回復

使用道具 舉報

ID:860332 發表于 2021-1-19 15:29 | 顯示全部樓層
請問實例代碼的提取碼是多少
回復

使用道具 舉報

ID:378444 發表于 2021-4-17 11:33 | 顯示全部樓層
例程提取碼 ??
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久夜视频 | 黄网免费 | 亚洲综合区| 亚洲精品1区 | 在线看av的网址 | 日韩电影一区二区三区 | 亚洲欧美成人 | 亚洲精品视 | 91在线观看 | 亚洲欧美日韩激情 | av一区在线观看 | 日本精品一区二区三区视频 | 天天综合网天天综合 | 欧洲尺码日本国产精品 | 毛片国产 | 久久男人天堂 | 日本成人福利视频 | 亚洲综合在线视频 | 亚洲国产在 | 中文字幕高清一区 | 日韩国产黄色片 | 中文字幕在线观看 | 羞羞涩涩在线观看 | 精品欧美一区二区精品久久久 | 毛片一区二区三区 | 欧美激情网站 | 国产精品一区二区三区四区 | 亚洲国产成人精品久久久国产成人一区 | 日本精品一区二区三区在线观看视频 | va精品 | 手机av免费在线 | 国产高清视频一区二区 | 91porn在线观看 | 亚洲a网| 手机看黄av免费网址 | 97av视频| 三级在线观看 | 精品三级在线观看 | 色综合天天网 | 国产免费拔擦拔擦8x高清 | 请别相信他免费喜剧电影在线观看 |