CPU的小弟PIO,讓單片機進入多核時代!

工业奇迹档案
6 位粉絲
2026年8月30日
AI 生成·可能包含錯誤
傳統單片機的組合在同一時間只能做一件事
比如當它以延時的方式去控制LED燈閃爍的時候
就無法分心去做其他事情
可以看一下它的底層架構
最開始是一個計數器
每當來一個脈衝
計數器輸出的值加1
在最開始計數器輸出的是0
它指向的地址爲00的弗蘭史的一個字節
此時邏輯運算單元就會執行第一個字節的弗蘭史裏面存儲的代碼
弗蘭史可以看作是電腦的固態硬盤
由於單片機需要的弗蘭史很小
一般都不到一兆
所以單片機的弗蘭史都是內置的
然後再來一個脈衝
計數器的輸出就會加1
此時就會指向第二個字節的弗蘭史
邏輯運算單元會執行第二個字節的代碼
以此類推
計數器會按順序選擇每一個字節的弗蘭史
由於同一時間
計數器只能指向一個弗蘭史字節
所以同一時間CPU只能做一件事情
這就是CPU組合心運行的大致原理
而樹莓派Pico單片機裏面的PIO模塊很好地解決了這一問題
PIO是可編程輸入輸出的意思
它有獨屬於自己的計數器存儲器
因而可以完全獨立於CPU運行
比如當我們讓CPU控制LED燈延時的時候
通過PIO模塊
讓JP8引腳輸出62.5MHz的波形
這是它的程序
PIO的程序和組合程序互不干擾
沒有穿插
這樣可以大大降低了編寫程序的複雜度
可以先看一下組合的輸出波形
頻率大約爲470Hz
而我們的預期是500Hz
這個誤差還是比較大的
可以看一下PIO的輸出波形
它的輸出頻率就是62.5MHz的頻率
非常精確
而且它是直接通過延時的方式就能實現高精度的波形輸出
此時Pico的頻率是125MHz
而輸出的高低電頻的頻率是62.5MHz
說明它可以用一個機器週期執行一個指令
即8nm執行一個指令
還有就是我們輸出的是高低電頻
爲什麼試波器上顯示的是正弦波呢
這可能是由於試波器帶寬只有100MHz
無法完整捕捉到高頻斜波
因此波形顯示會有一定失真,更像是正弦波形
那組合最大的輸出頻率是多少呢
首先此時就得把延時一毫秒這句代碼給刪掉
可以看一下此時銀驕的輸出頻率是83KHz
和Pio的最大輸出頻率相差了753倍
相比於傳統CPU延時的這種誤差大低頻的輸出
Pio提供了硬件級的持續控制
只需要通過簡單的編程就能夠以納秒級的精度生成特定波形或捕捉信號
比如生成高精度三角波、鋸齒波或者正弦波以及特定的複雜波形
而這也才只是Pio的冰山一角
還可以非常靈活地模擬多種通信協議如UART、SPI、iPhone C、紅外通信以及自定義協議
雖然Pio聽着跟JPIO是一類東西,但是它們只是名字相似,可以看一下它們有着本質的區別
在我看來,它應該和CPU是一類的東西
Pio更像是一個斜處理器,給CPU減負
而JPIO既可以被Pio控制,也可以被CPU控制
最後再來看一下Pio和CPU的區別
好了,視頻到這裏就結束了,希望對你理解Pio有幫助
