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

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

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

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

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

此接口還用了個(gè)直接透?jìng)魉{(lán)牙模塊,還有個(gè)APP可以鏈接,使用了串口2與藍(lán)牙模塊鏈接,使用了接收中斷,中斷函數(shù)里直接顯示接收到的數(shù)據(jù),這里APP的處理就是將手機(jī)的屏幕劃分為9宮格,然后觸摸一個(gè)地方傳送一個(gè)數(shù)字,觸摸結(jié)束(松手),默認(rèn)發(fā)送一個(gè)0,這樣可以根據(jù)數(shù)字的順序,簡(jiǎn)單的軟件實(shí)現(xiàn)劃屏操作。
3方案實(shí)物圖
硬件焊接的匆忙,但整體已經(jīng)出來(lái)了,如下所示:
-
傳感器
+關(guān)注
關(guān)注
2573文章
53934瀏覽量
781765 -
編碼器
+關(guān)注
關(guān)注
45文章
3877瀏覽量
140880 -
寄存器
+關(guān)注
關(guān)注
31文章
5503瀏覽量
128319
發(fā)布評(píng)論請(qǐng)先 登錄
stm32f103zet6芯片,根據(jù)官方配置的pwm一直沒(méi)有輸出,為什么?
汽車底盤高效點(diǎn)焊技術(shù)分析與應(yīng)用
GD32F10x MCU規(guī)格書
GD32F30x和GD32F403硬件開發(fā)指南
AN207 GD32G5x3三角函數(shù)加速器TMU的使用說(shuō)明
AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異
GD32F205xx數(shù)據(jù)表
GD32F207xx數(shù)據(jù)表

關(guān)于GD32F207ZET6的平衡小車底層接口設(shè)計(jì)的分析和應(yīng)用
評(píng)論