1方案介紹
基于GD32F207ZET6的平衡小車,底層接口用到的各個模塊分別有:I2C(GPIO模擬)、Timer(周期定時器)、Timer-PWM(PWM控制)、Timer-input(編碼器輸入)、SPI(GPIO模擬寫OLED用)、USART(串口調試和藍牙通信)、ADC(外部電壓測量)。
2設計應用描述及心得總結
看了下提供的測試例程,簡單重新新建了一個Template,里面分立的建了三個基本功能:LED、USART和SYSTICK,直接下到開發板就可以用了,直接刪減相應的.C文件即可使用。
初始模版好了,首先最重要的傳感器,就地取材,就用MPU6050了,移植下官方的DMP,這個花了點時間,問題出現在MDP內部fifo的溢出,解決的方法如下如所示:
這是因為讀取不及時導致內部FIFO溢出,這里正好清除了一下,再次讀取就OK了,修改read代碼,如下圖所示:
MPU6050的讀取數據如下所示:
可以看出來MPU內部DMP的數據一開始很不穩定,這個過程得有好幾秒,穩定了,就OK了,不過也可以通過寄存器,直接讀取初始值,然后自己用算法擬合一個歐拉角對比下。
接下來是個大的范圍TIMER應用,這里使用了TIMER4的兩個通道做電機控制,輸出頻率是10K,分別使用TIMER3通道1和TIMER2通道2做編碼器的輸入,用一個TIMER也可以,這里使用了兩個。還有個TIMER5作為內部周期定時器5ms,TIMER的調試還算順利,直接上結果,counta和countb 是編碼器的輸入,這里接的就是TIMER4的兩路PWM。
此接口還用了個直接透傳藍牙模塊,還有個APP可以鏈接,使用了串口2與藍牙模塊鏈接,使用了接收中斷,中斷函數里直接顯示接收到的數據,這里APP的處理就是將手機的屏幕劃分為9宮格,然后觸摸一個地方傳送一個數字,觸摸結束(松手),默認發送一個0,這樣可以根據數字的順序,簡單的軟件實現劃屏操作。
3方案實物圖
硬件焊接的匆忙,但整體已經出來了,如下所示:
-
傳感器
+關注
關注
2564文章
52659瀏覽量
764120 -
編碼器
+關注
關注
45文章
3780瀏覽量
137248 -
寄存器
+關注
關注
31文章
5424瀏覽量
123483
發布評論請先 登錄
AN207 GD32G5x3三角函數加速器TMU的使用說明

AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異

STM32F103ZET6為什么無法讀取轉換結果?
【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

【GD32 MCU 移植教程】7、從 GD32F10x 移植到 GD32E103

【GD32 MCU 移植教程】6、從GD32F1x0和GD32F3x0移植到GD32E230

【GD32 MCU 移植教程】5、GD32E230 系列移植到 GD32F330 系列

【GD32 MCU 移植教程】2、從 GD32F303 移植到 GD32F503

19.3-星曈科技 openmv Hopenmv發送五個uchar Openmv+STM32F103C8T6視覺巡線小車 STM32循跡小車系列教程

19.4-STM32接收數據-狀態顯示在屏幕 openMV尋跡與小車控制 Openmv+STM32F103C8T6視覺巡線小車

評論