2 系統(tǒng)軟件設(shè)計(jì)
在軟件設(shè)計(jì)的過(guò)程中必須考慮到系統(tǒng)通信的抗干擾性能和正常通信識(shí)別的具體實(shí)現(xiàn)方法,以及解決信息碰撞的具體軟件實(shí)現(xiàn)方法。
2.1 主機(jī)程序設(shè)計(jì)
主機(jī)程序設(shè)計(jì)主要包括初始化程序、發(fā)送數(shù)據(jù)程序、接收數(shù)據(jù)程序、延時(shí)程序、LED顯示程序及蜂鳴器報(bào)警程序等。這些程序并沒(méi)有以子程序的方式來(lái)實(shí)現(xiàn),這是因?yàn)槊恳粋€(gè)功能的實(shí)現(xiàn)并不完全獨(dú)立,而是相互交織在一起,這就使得采用調(diào)用子程序的方式去實(shí)現(xiàn)變得相當(dāng)困難。本設(shè)計(jì)中采用單片機(jī)匯編語(yǔ)言編寫(xiě)系統(tǒng)功能模塊程序。主機(jī)的主程序流程如圖3所示。
主程序流程圖
2.2 從機(jī)程序設(shè)計(jì)
從機(jī)的程序設(shè)計(jì)主要包括初始化程序、外部呼叫信號(hào)等待程序、數(shù)據(jù)接收程序、數(shù)據(jù)發(fā)送程序、延時(shí)程序等主要程序。這里需要說(shuō)明的是在設(shè)計(jì)外部呼叫信號(hào)等待程序時(shí),在接收到外部呼叫信息后,需要經(jīng)過(guò)一段延時(shí)(約30 ms)后再進(jìn)行采樣看是否是瞬時(shí)干擾信號(hào)。
3 系統(tǒng)通信協(xié)議設(shè)計(jì)
3.1 系統(tǒng)無(wú)線通信協(xié)議設(shè)計(jì)
由于本設(shè)計(jì)的無(wú)線網(wǎng)絡(luò)系統(tǒng)中存在一個(gè)中心(主機(jī))和多個(gè)用戶端(從機(jī)),因此本系統(tǒng)呈現(xiàn)為點(diǎn)對(duì)多點(diǎn)的通信方式,協(xié)議為點(diǎn)到多點(diǎn)的通信協(xié)議。在整個(gè)病房呼叫系統(tǒng)所設(shè)計(jì)的通信系統(tǒng)中,無(wú)論是在發(fā)射請(qǐng)求信息還是在發(fā)射應(yīng)答信息時(shí),發(fā)射的數(shù)據(jù)量始終保持固定的字節(jié)數(shù)且信息結(jié)構(gòu)簡(jiǎn)單,數(shù)據(jù)量較??;而且為了降低發(fā)射信息出現(xiàn)碰撞的概率,在該系統(tǒng)中從機(jī)的數(shù)量有一定限制,因此在本設(shè)計(jì)中采用了比較簡(jiǎn)單的純ALOHA法來(lái)解決信息碰撞的問(wèn)題[3]。
3.2 通信協(xié)議數(shù)據(jù)幀設(shè)計(jì)
本系統(tǒng)采用固定字節(jié)長(zhǎng)度的數(shù)據(jù)幀,并使得請(qǐng)求信息數(shù)據(jù)幀和應(yīng)答信息數(shù)據(jù)幀格式相互對(duì)應(yīng),從機(jī)請(qǐng)求信息數(shù)據(jù)傳輸采用引導(dǎo)字頭、接收地址、發(fā)送地址和校驗(yàn)字的數(shù)據(jù)幀格式,而主機(jī)應(yīng)答信息數(shù)據(jù)傳輸采用引導(dǎo)字頭、接收地址、確認(rèn)指令和校驗(yàn)字的數(shù)據(jù)幀格式。
(1)引導(dǎo)字頭:對(duì)主機(jī)而言,為了隨時(shí)接收從機(jī)發(fā)送的請(qǐng)求信息,其射頻芯片nRF401總是處于接收狀態(tài)。本設(shè)計(jì)的傳輸協(xié)議中,數(shù)據(jù)幀的引導(dǎo)字采用OxFF后跟OxAA作為通信同步碼,接收協(xié)議只能夠接收以O(shè)xFF后跟OxAA開(kāi)始的數(shù)據(jù)包。要注意的是,上面已經(jīng)說(shuō)明的引導(dǎo)字頭前還要再加一個(gè)隨機(jī)字節(jié),因?yàn)槠鹗紓鬏敃r(shí)第一個(gè)字節(jié)往往是接收不到的,它的作用是使接收機(jī)進(jìn)入狀態(tài)抑制噪聲,在本設(shè)計(jì)中該隨機(jī)字節(jié)采用Ox00。
?。?)接收地址:接收地址既包括從機(jī)發(fā)送請(qǐng)求信息中的接收地址,也包括主機(jī)發(fā)送應(yīng)答信息中的接收地址。在醫(yī)院的病房樓中,很可能存在多套同規(guī)格的射頻無(wú)線病房呼叫系統(tǒng)同時(shí)工作。這樣就必須給每一個(gè)主機(jī)編上代碼,才能使主機(jī)確認(rèn)接收的信息是否是發(fā)送給自己的,這個(gè)主機(jī)編號(hào)同時(shí)也就作為了從機(jī)發(fā)送請(qǐng)求信息時(shí)的接收地址。而每個(gè)主機(jī)下的從機(jī)也會(huì)有一個(gè)對(duì)應(yīng)的編號(hào),這個(gè)編號(hào)在本設(shè)計(jì)中就采用病房號(hào),也就是主機(jī)發(fā)送應(yīng)答信息時(shí)的接收地址。
(3)發(fā)送地址:發(fā)送地址既存在于從機(jī)發(fā)送的請(qǐng)求信息中也存在于主機(jī)回復(fù)的應(yīng)答信息中。從機(jī)請(qǐng)求信息中的發(fā)送地址是提供給主機(jī)用于顯示的病房號(hào),也是在主機(jī)發(fā)送應(yīng)答信息時(shí)的接收地址。通過(guò)應(yīng)答信息中的接收地址,從機(jī)可以判斷出該接收到的信息是否是發(fā)給自己的。如果不是,從機(jī)將重新發(fā)送一遍請(qǐng)求信息,否則將繼續(xù)接收確認(rèn)信息。同理,主機(jī)也可以根據(jù)請(qǐng)求信息中的發(fā)送地址確認(rèn)發(fā)送信息的是否是自己轄區(qū)內(nèi)的從機(jī),如果不是將不予以接收顯示。
(4)確認(rèn)指令:確認(rèn)指令用于主機(jī)通告從機(jī)信息發(fā)送是否正確。在本設(shè)計(jì)中,采用OxFF作為信息發(fā)送正確的指令,而采用OxEE作為信息發(fā)送錯(cuò)誤的指令。事實(shí)上,在本設(shè)計(jì)的軟件設(shè)計(jì)中,為了確保信息的準(zhǔn)確發(fā)送,只要確認(rèn)信息不是OxFF,則從機(jī)就會(huì)自動(dòng)地重新發(fā)送信息。
?。?)校驗(yàn)字:校驗(yàn)方法包括奇偶校驗(yàn)、CRC校驗(yàn)等,但是本設(shè)計(jì)中采用一種相加校驗(yàn)的方法。這種方法的具體實(shí)現(xiàn)是:發(fā)送機(jī)把除了引導(dǎo)字以外的數(shù)字幀信息相加作為校驗(yàn)字發(fā)送給接收機(jī),接收機(jī)在接收信息時(shí)也把除了引導(dǎo)字和校驗(yàn)字以外的數(shù)字幀信息相加并把相加結(jié)果與校驗(yàn)字比較看是否相等,若相等則說(shuō)明發(fā)送成功,否則說(shuō)明發(fā)送失敗。
4 系統(tǒng)混合信號(hào)PCB板設(shè)計(jì)
系統(tǒng)印制電路板(PCB)設(shè)計(jì)對(duì)于獲得優(yōu)良的RF性能是至關(guān)重要的,本系統(tǒng)PCB使用雙面板,分為元件面和底面,具體設(shè)計(jì)時(shí)充分注意了以下兩點(diǎn):
(1)保證系統(tǒng)充分接地。在底面設(shè)計(jì)一個(gè)連續(xù)的接地面,元件面的接地面保證元件充分接地,大量的通孔鏈
接元件面的接地面和底面的接地面。
(2)零件的布局要盡量合理,模擬電源和數(shù)字電源要分離以避免互相干擾。射頻電路的電源使用高性能的射頻電容去耦,去耦電容盡可能靠近nRF401的VDD端。一般還在較大容量的表面貼裝電容旁并聯(lián)一個(gè)小數(shù)值的電容。nRF401的電源必需經(jīng)過(guò)很好的濾波,并且與數(shù)字電路供電分離。
評(píng)論