搭建机器人电控系统——MCU基石——STM32 GPIO原理
文章目錄
- 搭建機器人電控系統——MCU基石
- GPIO是什么?
- GPIO的模式
- 5種輸入模式:
- 4種輸出模式:
- GPIO的輸出速度
搭建機器人電控系統——MCU基石
在上一章中,我講解了搭建一個機器人電控系統的前期準備工作,包括電源的選擇和主控的開發,經過一些基礎的單片機任務之后,現在你應該對單片機的一些編程習慣有了掌握。
在本章中,我將會按照一個機器人的底盤到上層機構的順序,單獨來對每一個機構的電控部分進行講解。從中分別來詳細展示運動模型、通信協議、PWM輸出和算法部分,從而讓你學會如何用MCU去控制每個部分機構的運動。
不過在這之前,我會以STM32F407為例,先補充一些關于MCU的基本知識原理:
STM32系統架構
STM32時鐘配置
GPIO原理
中斷NVIC與EXTI
GPIO是什么?
IO口是單片機除了特殊引腳之外的輸出輸入引腳,GPIO也是各大外設功能中的一種。之所以把GPIO單獨拿出來講解,是因為GPIO是IO口最基本的功能,在你初始化任何外設的功能的時候,除了都要使能時鐘以外,你基本都要先初始化GPIO的結構體:
所以我們說,外設正常工作的激勵來源是時鐘信號,而外設的硬件環境是GPIO。
GPIO(General-purpose input/output),通用輸入輸出口,其電路原理圖如下圖所示:
我們在初始化它的結構體的時候,通常有以下兩大要點:
GPIO的模式
5種輸入模式:
GPIO的輸入模式表示信息或者激勵從IO引腳獲得,比如按鍵檢測、ADC采集、PWM捕獲等。
①輸入浮空模式Floating
IO引腳不接任何上拉或下拉電阻,即在空閑狀態下IO引腳的電平狀態不確定。
②輸入上拉模式IPD
IO引腳接上拉電阻,即在空閑狀態下IO引腳的電平狀態為高。
③輸入下拉模式IPU
IO引腳接下拉電阻,即在空閑狀態下IO引腳的電平狀態為低。
④模擬輸入模式AIN
IO引腳作為模擬量采集輸入,如ADC,即不經過TTL施密特觸發器進行電平轉換成TTL格式。
⑤復用功能輸入
IO引腳復用(既有GPIO的功能也有其他外設功能)到其他外設上(比如串口功能外設),此時作為輸出RX引腳讀取外部數據信息。
4種輸出模式:
GPIO的輸出模式表示信息從IO引腳輸出,比如點亮LED燈、輸出PWM波等。
①開漏輸出模式DD
MCU內信息從寄存器輸出,經過N-MOS管到IO引腳。當輸出為高電平時,N-MOS關閉,此時IO引腳電平僅由上拉或下拉電阻決定。
②開漏復用輸出模式AFDD
MCU內信息從外設模塊輸出,經過N-MOS管到IO引腳。當輸出為高電平時,N-MOS關閉,此時IO引腳電平僅由上拉或下拉電阻決定。
③推挽輸出模式PP
MCU內信息從寄存器輸出,經過P-MOS管道IO引腳。當輸出為低電平時,P-MOS關閉,此時IO引腳電平僅由上拉或下拉電阻決定。
④推挽復用輸出模式AFPP
MCU內信息從外設模塊輸出,經過P-MOS管道IO引腳。當輸出為低電平時,P-MOS關閉,此時IO引腳電平僅由上拉或下拉電阻決定。
GPIO的輸出速度
GPIO輸出的速度有2MHZ、25MHZ、50MHZ、100MHZ。頻率表示輸出驅動電路的帶寬。設置GPIO的速度時要保證頻率(帶寬)大于驅動對象信號頻率(一般大于10倍以上)。
比如:串口波特率為115.2K,則用2M的速度即可,省點且噪聲小;CAN通信配置波特率為1MHZ,則用25MHZ以上可以,如果用2MHZ可能會導致失真。
一個點燈的例程:
因為是要點燈,假設這個燈是高電平點亮,即外部接地。所以設置GPIO模式為推挽輸出,這樣我程序里設高就能亮。(如果設置為開漏輸出,那么程序設高沒用,得看IO對應引腳是被上拉還是下拉。)
總結
以上是生活随笔為你收集整理的搭建机器人电控系统——MCU基石——STM32 GPIO原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity 手机重力迷宫(一)
- 下一篇: 【JavaWeb期末项目】简单的同学录系