公司同事之前購買了一個遙控器,當(dāng)時主要是想用來遙控運動電機。我最近好奇,也去看了一下相關(guān)資料,并折騰了一下。
那個接收器就是用到了一個叫S-BUS的通信口(這里肯定有許多朋友都明白,就是飛行控制器上用的遙控)。因為想到那個S-BUS和PWM有一定的相關(guān)性,我就想著順便寫一點基礎(chǔ)內(nèi)容,讓關(guān)注我的朋友漲一點知識(了解一下)。所以,就有了今天這一片文章。
1PWM
PWM:Pulse Width Modulation,即脈沖寬度調(diào)制。
兩個重要參數(shù):脈沖寬度(就是如下圖波形高電平時間),周期(周期x頻率 = 1)。
關(guān)于PWM的內(nèi)容,我這里不用多說,PWM是普遍學(xué)電子或底層編程的人都知道的一種信號。STM32可以產(chǎn)生PWM波形,也可以檢測PWM波形。具體可以參看我的以前推送過的文章。
2PPM
PPM:Pulse Position Modulation,即脈沖位置調(diào)制。
因為PWM處理簡單,每條物理連線里只傳輸1路信號。換句話說,需要傳輸幾個通道,就需要幾組物理連線。
但在一些場合,我們并不需要直接驅(qū)動設(shè)備,而是需要先集中獲取接收機的多個通道的值。所以,就衍生出了PPM,如下圖:
簡單來說,就是在一個周期內(nèi)(20ms),傳輸多個不同的PWM信號,在每一個周期之間有一個間隔時間來分離。
因為每一幀信號的尾部必須加入一個足夠長的空白(顯著超過一個正常PWM信號的寬度)來分隔前后兩個信號,每一幀能傳輸?shù)男盘柾ǖ雷疃嘀荒艿?個。這在大部分的場合已經(jīng)足夠了,且PPM是一個通行標準,絕大多數(shù)廠牌的遙控/接收都是支持的。
PPM通信協(xié)議:
高電平有效。
高電平電壓:常見4.8~6V。
信號周期:24ms。
單個脈沖寬度:0.4ms
脈沖間距:0.9ms至2.1ms
3S-BUS
S-BUS:Serial Bus,即串行總線。
簡單來說S-BUS就是將PWM信號進行串行傳輸通信。
一個字節(jié)等于:
1個startbit + 8個數(shù)據(jù)位+ 1個奇偶校驗位+ 2個停止位(8E2),波特率= 100'000 bit / s
最高位先發(fā)送。邏輯反轉(zhuǎn)(Level High = 1)
一幀數(shù)據(jù):
每幀25個字節(jié),幀格式如下:
[startbyte] [data1] [data2] .... [data22] [flags][endbyte]
startbyte = 11110000b (0xF0)
數(shù)據(jù)1-22 = [ch1,11bit] [ch2,11bit] .... [ch16,11bit](ch#= 0 bis 2047)
通道1使用來自data1的8位和來自data2的3位
通道2使用最后5位來自data2和來自data3
等的6位
flags = bit7 = ch17 =數(shù)字通道(0x80)
bit6 = ch18 =數(shù)字通道(0x40)
bit5 =幀丟失,接收器上的等效紅色LED(0x20)
bit4 =故障保護激活(0x10)
bit3 = n / a
bit2 = n / a
bit1 = n / a
bit0 = n / a
兩幀數(shù)據(jù)之間間隔時間:
高速模式:7ms
模擬模式:14ms
S-BUS可以使用UART控制器來實現(xiàn),網(wǎng)上有許多教程,感興趣的朋友可以了解一下。
關(guān)于S-BUS的內(nèi)容可以參看:
https://os.mbed.com/users/Digixx/notebook/futaba-s-bus-controlled-by-mbed/
-
接收器
+關(guān)注
關(guān)注
14文章
2472瀏覽量
71917 -
PWM
+關(guān)注
關(guān)注
114文章
5186瀏覽量
213975 -
PPM
+關(guān)注
關(guān)注
0文章
46瀏覽量
17006
發(fā)布評論請先 登錄
相關(guān)推薦
評論