国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MSP430的四旋翼飛行器的S-BUS通信協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)

2018-11-06 11:21張雨辰孫琛林奎秦生輝
中小企業(yè)管理與科技 2018年11期
關(guān)鍵詞:發(fā)送數(shù)據(jù)低電平通信協(xié)議

張雨辰,孫琛,林奎,秦生輝

(北方工業(yè)大學(xué),北京100000)

1 引言

四旋翼機(jī)器人是一種靈巧的、電動(dòng)的、可以垂直起降的,能夠遙控或自主飛行并執(zhí)行任務(wù)的一種空中機(jī)器人。四旋翼機(jī)器人具有4個(gè)螺旋槳并呈十字形交叉結(jié)構(gòu),相隔的螺旋槳為一組,兩組的旋轉(zhuǎn)方向不同,相鄰兩個(gè)螺旋槳旋轉(zhuǎn)方向不同來抵消水平反扭力矩,保證自身不發(fā)生自旋。與其它空中機(jī)器人相比,其靈活性體現(xiàn)在只通過改變螺旋槳的速度就可以執(zhí)行飛行任務(wù)。

本課題采用msp430g2553作為主要控制系統(tǒng),通過使用C語(yǔ)言編寫程序,使用S-BUS協(xié)議實(shí)現(xiàn)對(duì)飛機(jī)的通信。選用msp430微控制器作為控制系統(tǒng)是因?yàn)樵撓盗锌刂破饕呀?jīng)廣泛用于家用電器和工業(yè)控制之中,而且價(jià)格便宜,易于購(gòu)買和自主設(shè)計(jì)。微控制器系統(tǒng)降低了外圍硬件設(shè)備的投資,省去了遙控器等設(shè)備的麻煩,無(wú)論是日常生活還是工業(yè)生產(chǎn)也都會(huì)隨之更加的方便。

2 S-BUS概況

Futaba S-BUS通信協(xié)議是一種用來控制舵機(jī)的串口通信協(xié)議。最多可以包含16個(gè)舵機(jī)的數(shù)據(jù),它是由經(jīng)典的RS232串口通信協(xié)議發(fā)展過來的,邏輯取反。它的長(zhǎng)度為25字節(jié),每字節(jié)包括1位起始位0,8位數(shù)據(jù)位,1位奇偶校驗(yàn)位(若8為數(shù)據(jù)位中有奇數(shù)個(gè)1,則奇偶校驗(yàn)位取1,若有偶數(shù)個(gè)1則奇偶校驗(yàn)位取0),2位結(jié)束位11。信號(hào)周期為14毫秒,其中前3毫秒是數(shù)據(jù),后11毫秒是延時(shí),置低電平。用來發(fā)送數(shù)據(jù)的3毫秒中,共發(fā)送25*(1+8+1+2)=300位數(shù)據(jù),也就是說,每位數(shù)據(jù)(高或低電平)持續(xù)10微秒的時(shí)間。

該協(xié)議有25個(gè)字節(jié)。其中第一個(gè)字節(jié)是起始字節(jié),然后是22個(gè)包含數(shù)據(jù)的字節(jié),最后是一個(gè)標(biāo)志字節(jié)和結(jié)束字節(jié)。起始字節(jié)中的8位數(shù)據(jù)位為11110000b,即完整起始字節(jié)為011110000011b。標(biāo)志字節(jié)可根據(jù)不同飛控自行設(shè)定,用于承載除了舵機(jī)數(shù)據(jù)以外的數(shù)據(jù)。結(jié)束字節(jié)中的數(shù)據(jù)位為00000000b。

協(xié)議中有22個(gè)包含數(shù)據(jù)的字節(jié),每個(gè)字節(jié)數(shù)據(jù)位為8位,22*8=16*11,也就是說每個(gè)舵機(jī)的數(shù)據(jù)長(zhǎng)度為11位。實(shí)際傳輸時(shí)需要把16個(gè)舵機(jī)數(shù)據(jù)填入22個(gè)包含數(shù)據(jù)的字節(jié)中,填入方式為第一個(gè)字節(jié)的8位和第二個(gè)字節(jié)的前3位為第一舵機(jī),其中第一字節(jié)8位中的最高位為舵機(jī)的最低位,第二字節(jié)的從最高位數(shù)第三位為舵機(jī)的最高位。第二個(gè)字節(jié)的后5位和第三個(gè)字節(jié)的前6位為第二舵機(jī),以此類推。

3 S-BUS在MSP430中的實(shí)現(xiàn)

程序主要由發(fā)送數(shù)據(jù)和接受數(shù)據(jù)2個(gè)模塊組成。流程如下所示:

圖1 發(fā)送數(shù)據(jù)

圖2 接收數(shù)據(jù)

3.1 發(fā)送數(shù)據(jù)

MSP430單片機(jī)不能對(duì)字節(jié)進(jìn)行操作,因此將待發(fā)送或接收數(shù)據(jù)的每一位依次和要使用的I/O口進(jìn)行與操作,從而實(shí)現(xiàn)信號(hào)的發(fā)送與接收。具體做法是根據(jù)配置的波特率,使用時(shí)鐘定時(shí)改變管腳電平的高低,達(dá)到發(fā)送二進(jìn)制數(shù)據(jù)的目的。因?yàn)镾-BUS的邏輯電平是反的,所以高電平為0,低電平為1。

發(fā)送數(shù)據(jù)時(shí),程序首先發(fā)送一個(gè)起始字節(jié)0xF0,然后按S-BUS的規(guī)則將每個(gè)通道拆分成各個(gè)數(shù)據(jù)字節(jié)(在本文使用的程序中通過改變IO口的電平模擬數(shù)據(jù)位的發(fā)送)。發(fā)送數(shù)據(jù)字節(jié)流程如下:

圖3 發(fā)送數(shù)據(jù)字節(jié)流程

程序首先發(fā)送一個(gè)起始位(高電平),然后將通道1的低8位放到第一個(gè)數(shù)據(jù)字節(jié),將通道1的高3位放到第二個(gè)數(shù)據(jù)字節(jié)的低3位,以此類推計(jì)算出每個(gè)數(shù)據(jù)字節(jié)并發(fā)送。當(dāng)每一個(gè)數(shù)據(jù)字節(jié)中的數(shù)據(jù)位發(fā)送完后,計(jì)算偶校驗(yàn)位并發(fā)送,最后發(fā)送停止位(低電平)。之后程序繼續(xù)發(fā)送下一個(gè)數(shù)據(jù)字節(jié),直到22個(gè)數(shù)據(jù)字節(jié)發(fā)送完成。

數(shù)據(jù)字節(jié)全部發(fā)送完成后,程序?qū)l(fā)送標(biāo)志字節(jié)flags,最后發(fā)送結(jié)束字節(jié)0x00。flags的內(nèi)容為:flags=bit7=ch17=digital channel(0x80)

3.2 接收數(shù)據(jù)

接收數(shù)據(jù)時(shí),程序先收到一個(gè)起始字節(jié),據(jù)此判斷新的一幀開始。然后將收到的22個(gè)數(shù)據(jù)字節(jié)解析出來。一種方法是,根據(jù)發(fā)送時(shí)的計(jì)算方式,反過來將每個(gè)字節(jié)通過左移或右移運(yùn)算之后,相應(yīng)位上按位與1,達(dá)到解析的目的。由于通道數(shù)較少,故可以用這樣一種較為取巧的方式。如果偶校驗(yàn)位錯(cuò)誤,則請(qǐng)求重新發(fā)送這一字節(jié)。之后將解析出的16個(gè)通道的數(shù)據(jù)傳遞給飛控,查看標(biāo)志位的內(nèi)容,最后接收到結(jié)束字節(jié),一幀結(jié)束,等待接收下一幀。

以第一、第二個(gè)通道為例,當(dāng)接收到第一個(gè)和第二個(gè)數(shù)據(jù)字節(jié)時(shí),將第一個(gè)數(shù)據(jù)字節(jié)右移3位后,按位與00011111111,將結(jié)果存入buffer_1,第二個(gè)數(shù)據(jù)字節(jié)左移8位后,按位與11100000000,將結(jié)果存入buffer_2,再讓buffer_1按位與buffer_2即可得到第一個(gè)通道的數(shù)據(jù)。同理,將第二個(gè)數(shù)據(jù)字節(jié)右移6位后,按位與00000011111,將結(jié)果存入buffer_3,第三個(gè)數(shù)據(jù)字節(jié)左移2位后,按位與11111100000,將結(jié)果存入buffer_4,再讓buffer_3按位與buffer_4即可得到第二個(gè)通道的數(shù)據(jù)。

4 結(jié)語(yǔ)

本文對(duì)S-BUS協(xié)議的環(huán)境設(shè)置以及具體的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了說明,并給出了S-BUS在MSP430上的實(shí)現(xiàn)。本系統(tǒng)進(jìn)一步完善的話,可以將解析通道的部分用一個(gè)更好的算法替代本文的移位算法??梢钥吹絊-BUS是一種簡(jiǎn)單的四旋翼通信協(xié)議,同時(shí)16個(gè)通道也較好地滿足了四旋翼飛行器對(duì)信號(hào)傳輸?shù)男枨蟆?/p>

猜你喜歡
發(fā)送數(shù)據(jù)低電平通信協(xié)議
基于Wireshark的列控中心以太網(wǎng)通信協(xié)議解析器的研究與實(shí)現(xiàn)
一種實(shí)用的電腦接口判斷方法
2017款凱迪拉克2.8L/3.0L/3.2L/3.6L車型低電平參考電壓總線電路圖
一種車載自組織網(wǎng)絡(luò)的媒體接入控制協(xié)議
帶標(biāo)記方式的CRDSA++協(xié)議性能分析*
車載網(wǎng)絡(luò)通信協(xié)議標(biāo)準(zhǔn)化問題研究
數(shù)字電子技術(shù)的應(yīng)用
多優(yōu)先級(jí)無(wú)時(shí)隙CSMA/ CA算法研究
淺談物理電路與數(shù)字電路
電動(dòng)汽車充電接口及通信協(xié)議新國(guó)標(biāo)發(fā)布
长岭县| 枣强县| 兴和县| 蒙自县| 长葛市| 沈阳市| 贵南县| 永定县| 南投县| 读书| 盱眙县| 翁源县| 昌宁县| 涿州市| 周宁县| 大英县| 桓仁| 若羌县| 营口市| 饶阳县| 西宁市| 田东县| 颍上县| 石景山区| 正安县| 山东省| 容城县| 三亚市| 苏尼特左旗| 新绛县| 石狮市| 札达县| 台北市| 怀远县| 靖西县| 丰宁| 阿鲁科尔沁旗| 咸宁市| 巴南区| 兴业县| 永州市|