天天看點

STopen硬體設計1-如何高效的配置設定STM32F103的IO

在開始設計軟體功能之前,我們需要先規劃好硬體架構,完成需要的功能設計,同時給軟體開發提供一個調試環境和對象,驗證軟體設計的功能是否滿足需求,運作是否正确,是否符合我們的預期結果。

萬丈高樓平地起,設計一個完整的硬體系統,一般要經過以下幾個步驟:
  1. 第一步就是要列出需要的軟體功能子產品
  2. 然後根據功能來配置設定硬體的IO連接配接
  3. 完成外圍子產品的電路設計
  4. 最後進行PCB設計。
在STopen開源平台上,我們計劃提供如下功能:
  1. 系統時鐘:高速時鐘8Mhz,低速時鐘32KHz。
  2. 電池備份,斷電保持RTC時鐘運作
  3. JTAG
  4. 4線SDIO 的SD卡
  5. MCU接口的16bits TFT LCD屏
  6. SPI存儲器
  7. 一個調試UART,一個輸出UART
  8. 一個CAN
  9. 一路I2C
  10. 一個FULL speed USB device
  11. 五路PWM
  12. 2路ADC
  13. 2路DAC
  14. 2路PWM捕獲
  15. 6個按鍵
  16. 8路輸入IO
  17. 8路輸出IO

    面對如此衆多的功能和IO需要配置設定,如果采用傳統的方法來設計,是非常勞心勞力的,而且很容易出錯,估計大家一開始看到都腦瓜子疼。

    非常高興的是ST公司提供了一個設計工具stm32cubemx來輔助我們進行設計工作,這可以大大的減少我們的設計工作量,同時不會發生錯誤。該軟體的使用操作請參考其他相關文檔,在此不具體講解。

    工具是幫助我們提高設計效率和避免錯誤的,并不能代替我們的工作,是以在使用這個工具的時候,我們如何來安排計劃的功能所對應的IO引腳,也需要一些設計技巧。

    我們首先要明白和了解一個重要的功能,ST晶片的IO絕大多數是可以進行重映射的,比如一個UART1它的管腳是可以變化的,并不是固定不變的。這一點和傳統MCU的是有巨大差別的,好處是我們更容易根據布線的友善調整位置,同時提高IO的使用率,最大化的使用這些IO來達成我們的目标。但是也有一些引腳是不可以重映射的,比如JTAG,USB,OSC等。

    在設計一個系統之前,我們要先大概了解一下這個晶片的哪些IO資源可以重映射,哪些是固定的,這樣我們設計的時候就可以按照先不變,再可變的順序來合理安排IO。

    一般來說,晶片的UART,I2C,SPI,PWM,ADC,DAC等這些正常資源的IO都是可以重新映射,或者有多個選擇,當和其他IO發生沖突的時候,我們可以幾選一的方式來避開沖突,比如它有好幾個spi輸出,我們隻需要其中一個,那麼就可以根據IO的使用和沖突情況來選擇任意一路就可以滿足我們的需求。

根據經驗和這些特征,我們IO配置設定的先後順序如下,能事半功倍:
  1. 先安排具有唯一性的資源(如OSC,BATbackup,USB,SD卡,LCD,JTAG),因為你沒得選。
  2. 再安排選擇性比較小的資源,比如UART,SPI,I2C等
  3. 然後安排可以多選一的資源,比如ADC,DAC,PWM等
  4. 最後安排一般IO。

    在配置設定2-4類型的可變IO資源的時候,要考慮你的PCB布局,以後PCB設計從那一邊出線,對應的功能引腳就安排到那一邊,以就近,順序的原則安排IO,友善和簡化PCB設計,同時能提供好的設計信号回路,保證系統穩定性。

    在後期實際PCB設計過程中,我們根據走線的難易程度可以再次局部調整和重新配置設定信号IO,來達到最優的PCB布局和設計。

    下圖是我們根據以上原則完成的IO配置設定設計圖:

STopen硬體設計1-如何高效的配置設定STM32F103的IO
STopen硬體設計1-如何高效的配置設定STM32F103的IO

下一章預告:原理圖設計第一步,如何設計一個最小系統?

原創文章,歡迎轉載,請注明來源,未經書面允許,請勿用于商業用途。

STopen硬體設計1-如何高效的配置設定STM32F103的IO

繼續閱讀