• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > STM32和CC2520的TinyOS移植與驅動分析

    STM32和CC2520的TinyOS移植與驅動分析

    作者: 時間:2012-12-06 來源:網絡 收藏

    3. 1.2 修改I/O、LED燈、Timer、USART、SPI組件
    (1)通用I/O接口
    HIL層組件通過3個接口描述MCU可以控制的通用輸入輸出引腳。General I/O接口描述輸入輸出引腳被清零或置位狀態、設置為輸入或輸出模式。GpioInterrupt接口描述單個引腳觸發的中斷,可以對每一個引腳分別配置為上升沿觸發或者下降沿觸發中斷。GpioCapture接口描述捕獲單個引腳發生的事件,可以對每一個引腳分別配置為上升沿觸發或者下降沿觸發。
    (2)LED燈
    最多可獨立支持平臺上3個LED燈。通過PlatformLedsC組件直接訪問3個LED燈,LedC和LedP組件再通過裝配PlatformLedsC組件,向上層組件提供Led接口,相當于General I/O接口的使用。在PlatformLedsC組件中,可以對每種開發板指定相應的LED引腳。
    (3)Timer
    MCU時鐘通常有3種常見的功能:控制、時鐘/計數器、觸發。將與MCU時鐘相關的文件放到chips//timer。時鐘的通用功能通過一系列的接口定義實現:
    d.JPG
    (4)USART
    節點可以通過USART與PC通信,將與USART相關文件放于chips//uart。本文只通過HplUartNoDmaP組件的STM32Uart1C配件實現了簡單的USART功能。串口的初始化包括:波特率、字長、奇偶校驗位、流控制、打開串口時鐘和配置串口發送接收引腳等。
    (5)SPI
    由于通過SPI接口和MCU通信,所以必須實現SPI接口。SPI的初始化包括:時鐘信號的相位和極性、NSS模式、數據幀格式、主從模式等。
    3.2
    在tos/chips/cc2520中,定義與芯片相關的組件,這里面的組件直接對芯片進行操作。在tos/platforms/cc2520文件夾中定義CC2520和MCU交互的接口。CC2520通過SPI接口與STM32完成設置和收發數據兩方面的任務。
    CC2520工作流程如下:應用程序中使用SplitControl接口,該接口最終連接到CCDriverLayerP上,在SoftwareInit.init中對CC2520使用的和MCU相連的引腳進行初始配置。
    首先,復位CC2520,并且關閉電壓調整器,根據Datasheet,延時1100 μs,延時通過接口BusyWaitT32khz,uint16_t>。延時完成后,開啟電壓調整器,并延時200μs后使能CC2520。完成后,申請SPI資源,該資源接口連接在CC2520DriverLayerP上,資源申請允許后,在CC25 20DriverLayerP中捕獲到SpiResource.granted事件,然后開始通過SPI接口初始化CC2520,調用startOscillator。之后,調用initRadio對CC2520的寄存器進行相應配置。
    而在接收模式時,CC2520收到物理幀的SFD字段后,會在SFD引腳輸出高電平,直到接收完該幀。如果啟用了地址識別,在地址識別后,SFD引腳立即轉為輸出低電平。FIFO和FIFOP引腳標識FIFO緩存區的狀態。如果接收FIFO緩存區有數據,FIFO引腳輸出高電平;如果接收FIFO緩沖區為空,FIFO引腳輸出低電平。無線模塊組織架構圖如圖2所示。

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

    e.JPG


    3.3 修改平臺文件
    在tos/platforms下放置平臺相關文件,將物理相關的組件連接起來組成具體平臺。創建一個平臺需要完成5個部分:
    ①“.platform”文件告知編譯系統文件的位置,由一系列的包含路徑和NesC的參數組成。ncc將“.platform”文件當作perl腳本讀出,并將參數傳遞到NesC預編譯器。
    ②平臺導入程序PlatformP/PlatformC,通過調用兩個初始化接口platformC.Init和MainC.softwarelnit來激活MCU、傳感器和射頻等硬件模塊及相關軟件。platformC.Init通常完成時鐘校準和引腳設置,保證硬件在可操作狀態。
    ③與硬件具體功能相關的頭文件“hardware.h”和將芯片與平臺結合的具體代碼。“hardware.h”包含了其他硬件子系統的頭文件,并被主文件“MainC.nc”所包含。
    ④修改鏈接腳本文件,仿照其他平臺文件在tos/platforms文件夾下建立tos.x文件,設置rom和ram的起始地址和大小。設置中斷向量表、代碼段、數據段、非初始化數據段和其他段的放置位置。
    ⑤定義中斷向量表,在tos/platforms/STM32-p103/vectors文件夾下新建STM32-vector.c文件,用于放置中斷向量表,按照STM32提供的中斷配置中斷向量表,并初始化默認中斷處理函數,實際應用中這些中斷處理函數可以在其他文件中重定義。比如時鐘中斷處理函數在McuSleepC.nc中重定義。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 烟台市| 西安市| 福建省| 定边县| 山西省| 南澳县| 宁城县| 长沙县| 杭州市| 蒲江县| 凌源市| 金堂县| 阿巴嘎旗| 杨浦区| 沾益县| 富裕县| 南和县| 达拉特旗| 开原市| 淳化县| 三门县| 仁布县| 朝阳市| 丹棱县| 马边| 高淳县| 玉树县| 大兴区| 玉龙| 独山县| 宁强县| 遂溪县| 小金县| 成武县| 永济市| 宜兰县| 南江县| 建昌县| 平武县| 五台县| 理塘县|