• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 手機與無線通信 > 設計應用 > 基于Si4432的無線射頻收發系統設計

    基于Si4432的無線射頻收發系統設計

    作者: 時間:2009-12-14 來源:網絡 收藏

    2.3 軟件
    軟件編程采用模塊化思想,中各主要功能模塊均編成獨立的函數由主程序調用。功能模塊包括:初始化程序(包括初始化C8051F930、SPI、),發送程序,接收程序等。發送程序負責寫入數據載荷,并根據通信協議為數據載荷加上前導碼、同步字、數據載荷長度及CRC校驗字節,形成數據包將其發送出去;無線接收程序負責接收并檢驗數據包中的CRC字節,以確保接收到的數據的正確性。
    無線模塊之間的通信是以數據包的形式發送的,本定義的數據包格式如下:

    本文引用地址:http://www.czjhyjcfj.com/article/157731.htm

    其中,Preamble(前導碼)是一連串的10101010,其數量為8n位,n的大小由用戶編程決定。數據包在傳輸過程中會在每個包的前面加上可設置長度的前導碼;接收端為了識別幀的到來,需要前導碼進行幀同步,從而確定系統之間何時發送和接收數據。SyncWord(同步字)在前導碼之后,要用設定好的同步字來作為同步模式的標志碼。本系統設定的同步字為2個字節,同步字內容為0x2DD4,接收端在檢測到同步字后才開始接收數據。Packet Length是數據載荷長度。
    PAYLOAD(有效數據載荷)是用戶所發送的數據。CRC(CRC校驗和)由內置CRC校檢。內部集成有調制/解調、編碼/解碼等功能,從而Preamble、Syncword、Packet Length和CRC都是硬件自動加上去的,用戶只需設定數據包的組成結構和部分結構的具體內容(如前導碼和同步字)。
    本文以半雙工通信為例,介紹通信的實現過程。編程環境為Silabs IDE V3.61,并在該編譯環境下測試通過。Silabs IDE集成了源代碼編輯、程序源代碼級調試程序和在系統Flash編程器。同時支持第三方編譯器和匯編器的使用,
    (1)初始化程序
    初始化程序包括C8051F930的初始化,SPI的初始化,以及的關于無線頻率、工作模式、發射速率等內部寄存器的初始化配置。
    系統上電后,C8051F930處于默認狀態,根據系統功能需求重新進行初始化配置。C8051F930的數字交叉開關允許將內部數字系統資源映射到端口I/O引腳,可通過設置交叉開關控制寄存器,將片內資源配置到具體的端口I/O引腳上。這一特性允許用戶根據自己的特定應用選擇通用端口I/O和所需數字資源的組合,提高了應用的靈活性。本系統中,主要配置了SPI通信的4線,液晶LCD的數據線接口、控制線接口和RS232串口數據輸入/輸出等。
    初始化SPI時,可以通過對SPI1CFG寄存器和SPI1CN寄存器的配置來選擇具體使用規則。這里,選擇主SPI,4線模式,時鐘極性為低電平,在時鐘上升沿時對數據采樣;通過配置SPI1CKR寄存器,可將同步時鐘頻率設為晶振頻率的1/4。
    上電之初,Si4432也處于默認狀態,需要進行配置才能工作。Si4432有70多個寄存器需要配置,它們決定了Si4432的工作模式,具體配置可以參考Si4432的數據手冊。Si4432的初始化是一個重要的部分,配置的恰當與否對系統最終的通信效果有很大的影響。主控制器C8051F930通過SPI配置Si4432的1ch、1dh等寄存器,寫入相應的初始化RF控制字(主要是頻率、傳輸速度、傳輸方式等);通過配置33h、34h等寄存器來設置包的結構、前導碼長度、同步字內容等。本系統采用同步傳輸模式,以0x2DD4作為同步模式的標志碼,傳輸完同步字后才開始傳輸數據載荷。每次發送數據必須以同步字0x2DD4作為發送數據的同步標志,接收端在檢測到同步字后才開始接收數據。
    (2)無線發送程序
    無線發送程序流程如圖3所示。完成C8051F930、SPI和Si4432的初始化后,配置寄存器寫入相應的初始化RF控制字。接下來,通過配置Si4432的寄存器3eh來設置包的長度,通過SPI連續寫寄存器7fh,往TX FIFO里寫入需要發送的數據。然后打開“發送完中斷允許”標志,將其他中斷都禁止。當有數據包發送完時,引腳nIRQ會被拉低以產生一個低電平從而通知C8051F930數據包已發送完畢。完成中斷使能后,使能發送功能,數據開始發送。等待nIRQ引腳因中斷產生而使電平拉低,當nIRQ引腳變為低時讀取中斷狀態并拉高nIRQ,否則繼續等待。如果數據發送成功,指示燈會變亮。一次數據發送成功后,進入下一次數據循環發送狀態。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 杨浦区| 桂林市| 大庆市| 和政县| 灌南县| 霍林郭勒市| 贵州省| 托克托县| 新丰县| 含山县| 安西县| 嵊泗县| 永安市| 鞍山市| 庐江县| 开封县| 广宁县| 从江县| 陇川县| 南乐县| 蓬莱市| 英山县| 新野县| 桐梓县| 镇原县| 称多县| 崇信县| 灌阳县| 宁化县| 嘉兴市| 襄城县| 淮阳县| 山丹县| 惠安县| 分宜县| 宁津县| 绥宁县| 隆昌县| 奎屯市| 安图县| 衡水市|