1方案介紹
本方案采用高性能GD32F207系列MCU開發(fā)平衡小車的底層接口。用到的各個模塊分別有:I2C(GPIO模擬)、Timer(周期定時器)、Timer-PWM(PWM控制)、Timer-input(編碼器輸入)、SPI(GPIO模擬寫OLED用)、USART(串口調(diào)試和藍牙通信)、ADC(外部電壓測量)。
2設(shè)計應(yīng)用描述及心得總結(jié)
看了下提供的測試例程,簡單重新新建了一個Template,里面分立的建了三個基本功能:LED、USART和SYSTICK,直接下到開發(fā)板就可以用了,直接刪減相應(yīng)的.C文件即可使用。

初始模版好了,首先最重要的傳感器,就地取材,就用MPU6050了,移植下官方的DMP,這個花了點時間,問題出現(xiàn)在MDP內(nèi)部fifo的溢出,解決的方法如下如所示:

這是因為讀取不及時導(dǎo)致內(nèi)部FIFO溢出,這里正好清除了一下,再次讀取就OK了,修改read代碼,如下圖所示:

MPU6050的讀取數(shù)據(jù)如下所示:

可以看出來MPU內(nèi)部DMP的數(shù)據(jù)一開始很不穩(wěn)定,這個過程得有好幾秒,穩(wěn)定了,就OK了,不過也可以通過寄存器,直接讀取初始值,然后自己用算法擬合一個歐拉角對比下。
接下來是個大的范圍TIMER應(yīng)用,這里使用了TIMER4的兩個通道做電機控制,輸出頻率是10K,分別使用TIMER3通道1和TIMER2通道2做編碼器的輸入,用一個TIMER也可以,這里使用了兩個。還有個TIMER5作為內(nèi)部周期定時器5ms,TIMER的調(diào)試還算順利,直接上結(jié)果,counta和countb 是編碼器的輸入,這里接的就是TIMER4的兩路PWM。

此接口還用了個直接透傳藍牙模塊,還有個APP可以鏈接,使用了串口2與藍牙模塊鏈接,使用了接收中斷,中斷函數(shù)里直接顯示接收到的數(shù)據(jù),這里APP的處理就是將手機的屏幕劃分為9宮格,然后觸摸一個地方傳送一個數(shù)字,觸摸結(jié)束(松手),默認發(fā)送一個0,這樣可以根據(jù)數(shù)字的順序,簡單的軟件實現(xiàn)劃屏操作。
3作品實物圖+視頻
硬件焊接的匆忙,但整體已經(jīng)出來了,如下所示:
-
傳感器
+關(guān)注
關(guān)注
2573文章
53934瀏覽量
781735 -
編碼器
+關(guān)注
關(guān)注
45文章
3877瀏覽量
140874 -
定時器
+關(guān)注
關(guān)注
23文章
3350瀏覽量
121255
發(fā)布評論請先 登錄
GD32F30x和GD32F403硬件開發(fā)指南
AN207 GD32G5x3三角函數(shù)加速器TMU的使用說明
GD32F103xx數(shù)據(jù)表
GD32F405xx數(shù)據(jù)表
AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異
GD32F205xx數(shù)據(jù)表
GD32F207xx數(shù)據(jù)表

關(guān)于GD32F207ZE的平衡小車之底層接口的介紹和分享
評論