亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? nrf905.c

?? nrf905在magicARM實驗箱上實現的代碼 主函數包含了發送和接受的標準函數 驅動包在NRF905文件夾里
?? C
字號:
/****************************************************************************
* 文 件 名:nRF905.c
* 功    能:nRF905的接收與發送
* 說    明:包含發送與接收的所有函數。
* 作    者:TANK  
* 郵    箱:tank3221@sina.com
* 完成時間:2007年5月25日
****************************************************************************/

#include  "config.h"
/*--------------------------------------------------
                 引腳連接預定義區
---------------------------------------------------*/ 

#define   PWR       1<<16       // P1.16  掉電控制
#define   EN	    1<<17       // P1.17  收發選擇
#define   CE		1<<18		// P1.18  收發啟動
#define   TEST1     1<<19       // P1.19  測試引腳1
#define   TEST2	    1<<20       // P1.20  測試引腳2

#define   CD        0<<23		// P0.23  載波檢測
#define   AM		0<<25		// P0.25  地址匹配
#define   DR        0<<24       // P0.24  數據完畢
#define   RD        1<<24       // P0.24  ready信號。
  
#define   CSN	    1<<20       // P0.20  從機片選  


                  
/****************************************************************************
* 名    稱:Delay()
* 功    能:短軟件延時
* 入口參數:dly		延時參數,值越大,延時越久
* 出口參數:無
****************************************************************************/
void  Delay(uint32  dly)
{ 
    for(; dly>0; dly--);  
}

/****************************************************************************
* 名    稱:nRF905_init()
* 功    能:905各控制、信號線引腳初始化
* 入口參數:無
* 出口參數:無
****************************************************************************/
void  nRF905_init(void)
{ 
    PINSEL0 |= 0x00000005; // 設置I/O連接到UART0
	PINSEL1  = 0x00000000;
	IO0DIR =  CSN   |      // CSN <--> P0.20  片選輸出線
	          CD    |      // CD  <--> P0.23 CD  信號線
	          AM    |      // AM  <--> P0.24 AM  信號線
	          DR    ;      // DR  <--> P0.25 DR  信號線
	          
    IO1DIR =  PWR   |      // PWR    控制線
              CE    |      // CE     控制線
              EN    |      // EN     控制線
              TEST1 |      // test1  測試線
              TEST2 ;      // test2  測試線

}
/*----------------------------------------------------------------------------
                              初始化函數
                         
                       包括 SpiInit() SPI接口初始化及連接設置
                            Init() LPC2200 引腳方向初始化
                            SendData() SPI發送接收數據函數
-----------------------------------------------------------------------------*/ 
/****************************************************************************
* 名    稱:SpiInit()
* 功    能:初始化SPI接口,設置為主機。
* 入口參數:無
* 出口參數:無
* 說    明:傳輸格式必須對照905的SPI總線傳輸方式設置
****************************************************************************/
void  SpiInit(void)
{  
	PINSEL0 |= 0x00005500;
	
    S0PCCR = 0x52;		            // 設置SPI時鐘分頻
 	S0PCR  = (0 << 3) |				// CPHA = 0, 數據在SCK 的第一個時鐘沿采樣
 			 (0 << 4) |				// CPOL = 1, SCK 為低有效
 			 (1 << 5) |				// MSTR = 1, SPI 處于主模式
 			 (0 << 6) |				// LSBF = 0, SPI 數據傳輸MSB (位7)在先
 			 (0 << 7);				// SPIE = 0, SPI 中斷被禁止
    

}
/****************************************************************************
* 名    稱:Magic905_Init(void)
* 功    能:SPI初始化、905各引腳初始化
* 入口參數:無
* 出口參數:無
****************************************************************************/
void  Magic905_Init(void)
{  
	SpiInit();
    nRF905_init();
}

/****************************************************************************
* 名    稱:SendData()
* 功    能:向SPI總線“發送”或“接收”數據,并接收從機發回的數據。
* 入口參數:data        待發送的數據
* 出口參數:返回值為接收到的數據
****************************************************************************/
uint8  SendData(uint8 data)
{  
    S0PDR = data;
    while( 0==(S0PSR&0x80) );		// 等待SPIF置位,即等待數據發送完畢
    return(S0PDR);
}	
/*----------------------------------------------------------------------------
                         nRF905狀態改變函數
                         
                       包括 OFFMode  掉電模式
                            WaitMode 等待模式
                            TxMode   發送模式
                            RxMode   接收模式
-----------------------------------------------------------------------------*/ 
/****************************************************************************
* 名    稱:OFFMode()  
* 功    能:關機/掉電模式 PWR=0 時,nRF905處于掉電模式
* 入    口:無
* 出    口:無
****************************************************************************/
void  OFFMode(void)
{ 
    IO1CLR = PWR ;                  // PWR = 0
    Delay(1);
}
/****************************************************************************
* 名    稱:WaitMode()  空閑/等待模式 10X
* 功    能:空閑等待電模式 PWR=1,CE=0 時,nRF905處于空閑等待模式
* 入    口:無
* 出    口:無
****************************************************************************/
void  WaitMode(void)
{ 
    IO1SET = PWR ;                  // PWR = 1
    IO1CLR = CE  ;                  // CE = 0
    Delay(1);
}
/****************************************************************************
* 名    稱:RxMode()   射頻接收模式 110
* 功    能:接收模式 PWR=1,CE=1,EN=0 時,nRF905處于接收模式
* 入    口:無
* 出    口:無
****************************************************************************/
void  RxMode(void)
{ 
    IO1SET = ( PWR | CE );           // PWR=1  CE=1
    IO1CLR =  EN ;                   // EN=0
    Delay(1);
}
/****************************************************************************
* 名    稱:TxMode()   射頻發送模式 111
* 功    能:發送模式 PWR=1,CE=1,EN=1 時,nRF905處于發射模式
* 入    口:無
* 出    口:無
****************************************************************************/
void  TxMode(void)
{ 
    IO1SET = ( PWR | EN | CE );      // PWR=1,CE=1,EN=1
    Delay(1);
}
/****************************************************************************
* 名    稱:nRFconfig() 射頻配置函數 命令 00H
* 功    能:通過SPI總線對905進行射頻配置字設置。
* 入口參數:rfcon 配置字數組
* 出口參數:無
****************************************************************************/
void  nRFconfig(uint8 * rfcon)
{   
    uint8 i;
    uint8 data;
    WaitMode();                      //  空閑模式 
    
    IO0CLR = CSN;                    //  使能從機
    
    data = SendData(0x00);           //  發送配置命令
    for(i=0;i<10;i++)                //  循環數為10,保證配置正確
    { 
       data = SendData(rfcon[i]);    //  寫配置字  
    }

   IO0SET = CSN ;                    //  關閉使能 
}
/****************************************************************************
* 名    稱:RDnRFconfig() 讀射頻配置函數 命令 10H
* 功    能:通過SPI總線從905讀出射頻配置字。
* 入口參數:tempbuf 配置字數組
* 出口參數:無
****************************************************************************/
void  RDnRFconfig(uint8 * tempbuf)
{   
    uint8 i;
    WaitMode();                       //  空閑模式 
    
    IO0CLR = CSN;                     //  使能從機
    
    tempbuf[0] = SendData(0x10);      //  發送讀配置命令
    for(i=0;i<10;i++)                 //  循環數固定為10,保證配置正確
    { 
       tempbuf[i] = SendData(0xAA);   //  讀配置字  
    }

   IO0SET = CSN ;                     //  關閉使能 
}
/****************************************************************************
* 名    稱:WTxData() 寫發送數據 命令 20H
* 功    能:通過SPI總線向905寫入要發送的數據。
* 入口參數:txbuf 發送數據變量
            no    數據發送數(需根據配置字設置,不能隨意更改)
* 出口參數:無
****************************************************************************/
void  WTxData(uint8 * txbuf,uint8 datno)
{   
    uint8 i;
    uint8 j;
    uint8 data;
    
    j = datno ;
    if( i<1 ) j = 1 ;                 //  發送字節數不能少于1個
    j &= 0x3f ;                       //  取發送字節數的后6位  
    if( i>32 ) j = 32;                //  保證發送字節數不多于32個
    
    IO0CLR = CSN ;                    //  從機使能
    
    data = SendData(0x20);            //  寫發送數據命令字
    
    for(i=0;i<j;i++)
    {
       data = SendData(txbuf[i]);     //  讀發送數據
    } 
 
    IO0SET = CSN ;                    //  關閉使能
    
}

/****************************************************************************
* 名    稱:RTxData() 讀發送數據 命令 21H
* 功    能:通過SPI總線從905讀出發送的數據。
* 入口參數:no 讀出的數據個數(需要結合配置字,不能隨意更改)
* 出口參數:無
* 說    明:讀出的數據寫入 temp變量中
****************************************************************************/
void  RTxData(uint8 * tempbuf,uint8 datno)
{  
    uint8 i;
    uint8 data;
    uint8 j;
    
    j = datno ;
    if( i<1 ) j = 1 ;               //  發送字節數不能少于1個
    j &= 0x3f ;                     //  取發送字節數的后6位  
    if( i>32 ) j = 32;              //  保證發送字節數不多于32個
    
   IO0CLR = CSN ;                   //  使能從機
    
    data = SendData(0x21);          //  寫讀發送數據命令
    
    for(i=0;i<j;i++)
    {
       tempbuf[i] = SendData(0xAA);    //  寫發送數據
    }  

   IO0SET = CSN ;                   //  關閉使能

}

/****************************************************************************
* 名    稱:WTxAddr() 寫發送地址 命令 22H
* 功    能:通過SPI總線向905寫入要發送的地址。
* 入口參數:txaddr 地址變量
* 出口參數:無
****************************************************************************/
void  WTxAddr(uint8 * txaddr,uint8 adrno)
{  
    uint8 i;
    uint8 data;
    uint8 j;
    
    j = (adrno >> 4) & 0x0f ;       //  讀取高4位( TX_AFW 發送地址寬度)
    if(j<1) j = 1 ;                 //  保證地址字節數大于等于1
    if(j>4) j = 4 ;                 //  保證地址字節數小于等于4
    
   IO0CLR = CSN ;                   //  使能從機
   
    data = SendData(0x22);          //  寫發送地址命令
    
    for(i=0;i<j;i++)
    {
       data = SendData(txaddr[i]);  //  寫發送地址
    }  
      
   IO0SET = CSN ;                   //  關閉使能
}

/****************************************************************************
* 名    稱:RTxAddr() 讀發送地址 命令 23H
* 功    能:通過SPI總線從905讀出發送地址。
* 入口參數:tempbuf 一般數據緩沖區變量
* 出口參數:無
* 說    明:讀出的發送地址寫到 temp變量中
****************************************************************************/
void  RTxAddr(uint8 * tempbuf,uint8 adrno)
{  
    uint8 i;
    uint8 data;
    uint8 j;
    
    j = (adrno >> 4) & 0x0f ;        //  讀取高4位( TX_AFW 發送地址寬度)
    
    if(j<1) j = 1 ;                  //  保證地址字節數大于等于1
    if(j>4) j = 4 ;                  //  保證地址字節數小于等于4
    
   IO0CLR = CSN ;                    //  從機使能
   
    data = SendData(0x23);           //  寫讀發送地址命令
    
    for(i=0;i<j;i++)
    {
       tempbuf[i] = SendData(0xAA);  //  讀發送地址
    }  
    
   IO0SET = CSN ;                    //  關閉使能
    
}

/****************************************************************************
* 名    稱:RRxData() 讀接收數據 命令 24H
* 功    能:通過SPI總線從905讀出接收到的數據。
* 入口參數:no 讀出的數據數(需要結合配置字不能隨意更改)
            tempbuf 數據讀出位置
* 出口參數:無
****************************************************************************/
void  RRxData(uint8 * tempbuf,uint8 datno)
{  
    uint8 i;
    uint8 data;
    uint8 j;
    
    j = datno ;
    if( i<1 ) j = 1 ;                //  發送字節數不能少于1個
    j &= 0x3f ;                      //  取發送字節數的后6位  
    if( i>32 ) j = 32;               //  保證發送字節數不多于32個
    
    IO0CLR = CSN ;                   //  從機使能
  
    data = SendData(0x24);           //  寫讀接收數據命令

    for(i=0;i<j;i++)
    {
       tempbuf[i] = SendData(0xAA);    //  讀接收數據
    }  
    
    IO0SET = CSN ;                   //  關閉使能
}
/****************************************************************************
* 名    稱:TxPacket()
* 功    能:發送數據包據。
* 入口參數:txaddr  發送地址變量
            txbuf   發送數據緩沖區
* 出口參數:無
****************************************************************************/
void  TxPacket(uint8 * txaddr,uint8 adrno,uint8 * txbuf,uint8 datno)
{  
    WaitMode();                 //  進入等待模式,準備配置。
    
    WTxAddr(txaddr,adrno);            //  寫 發送地址 
    Delay(1);                   //  延時
    
    WTxData(txbuf,datno);  //  寫發送數據 發送個數為配置字[4]字節,即發送數據長度
    Delay(1);
       
    TxMode();                   //  發射模式設置,啟動發射
    
    while(0==(IO0PIN&RD));      //  等待RD(ready)發送完信號
    
    WaitMode();                 //  數據發送完畢,進入等待模式。
}

/****************************************************************************
* 名    稱:RxPacket()
* 功    能:接收數據包。
* 入口參數:無
* 出口參數:無
****************************************************************************/
void  RxPacket(uint8 * rxbuf,uint8 datno)
{  
    RxMode();
    
    while(0==(IO0PIN&RD));     // 等待接受 到 數據信號
    
    WaitMode();                // 等待模式
    
    RRxData(rxbuf,datno);       // 接收數據 接收字節數為接收配置[3]字節
      
    while(0!=(IO0PIN&RD));     // 等待接收 完 數據信號 必要時再加
    
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲人成人一区二区在线观看| 天堂成人国产精品一区| 亚洲卡通欧美制服中文| 亚洲一区在线免费观看| 麻豆国产欧美一区二区三区| 国产自产2019最新不卡| 91在线视频免费观看| 欧美日韩精品系列| 国产日韩欧美激情| 一区二区三区四区在线免费观看| 亚洲综合区在线| 韩国av一区二区三区四区 | 久久在线观看免费| 亚洲欧美日韩综合aⅴ视频| 免播放器亚洲一区| 56国语精品自产拍在线观看| 欧美一区二区在线看| 国产精品福利av| 国产综合成人久久大片91| 欧美视频你懂的| 中文字幕乱码日本亚洲一区二区| 日韩制服丝袜先锋影音| 91视频在线观看免费| 久久久99久久| 美腿丝袜亚洲色图| 777a∨成人精品桃花网| 亚洲青青青在线视频| 成人激情开心网| www成人在线观看| 亚洲影院理伦片| 欧美三级三级三级| 国产精品电影一区二区三区| 看电影不卡的网站| 欧美一区二区女人| 日韩av一二三| 欧美亚洲图片小说| 国产精品久久久一区麻豆最新章节| 免费国产亚洲视频| 欧美日韩国产高清一区| 亚洲精品视频一区二区| 成人网在线免费视频| 国产欧美日韩综合| 国产精品羞羞答答xxdd| 欧美变态tickle挠乳网站| 日韩视频一区二区三区在线播放 | 欧美精品在线观看播放| 国产精品国产三级国产| 成人av动漫在线| 国产亚洲精品精华液| 国产乱妇无码大片在线观看| 欧美一区二区三区免费在线看| 一区二区三区美女视频| 色哟哟亚洲精品| 一区二区三区中文字幕| 日本高清成人免费播放| 一区二区三区四区不卡在线| 色88888久久久久久影院按摩| 日韩理论片一区二区| 91在线高清观看| 国产亚洲精久久久久久| 成人手机电影网| 亚洲综合在线第一页| 欧美日韩国产美| 国产高清精品久久久久| 久久久亚洲精品一区二区三区 | 日本伊人色综合网| 久久精品亚洲精品国产欧美kt∨| 麻豆精品久久精品色综合| 欧美大黄免费观看| www.欧美.com| 五月天激情综合网| 国产丝袜在线精品| 欧美日本国产一区| 国产精品18久久久久久久网站| 久久亚区不卡日本| 91香蕉视频污| 免费观看成人鲁鲁鲁鲁鲁视频| 久久精品亚洲乱码伦伦中文| 在线视频一区二区三| 麻豆精品一区二区三区| 一区二区三区四区在线免费观看| 欧洲在线/亚洲| 不卡一区在线观看| 亚洲国产va精品久久久不卡综合| 日韩欧美的一区| 色综合一区二区| 国产.欧美.日韩| 亚洲午夜久久久久久久久电影院| 久久一留热品黄| 337p亚洲精品色噜噜| 一本色道久久综合亚洲精品按摩| 亚洲午夜一区二区三区| 亚洲女人****多毛耸耸8| 国产日产精品一区| 精品日韩av一区二区| 在线电影一区二区三区| 欧美主播一区二区三区| 成人免费视频视频| 成人午夜av在线| 国产精品66部| 国产主播一区二区| 99国产精品一区| 国产a精品视频| 国产在线观看一区二区| 日本不卡一区二区三区| 国产欧美一二三区| 久久日一线二线三线suv| 欧美日韩不卡一区| 色婷婷激情久久| www.亚洲免费av| 成人午夜伦理影院| 91网站在线播放| 在线视频亚洲一区| 欧美人成免费网站| 欧美一级片免费看| 2020国产成人综合网| 亚洲高清不卡在线观看| 精品国产三级电影在线观看| 欧美午夜一区二区三区免费大片| 99精品一区二区三区| 91视频.com| 91精品国产一区二区| 精品国免费一区二区三区| 久久色.com| 亚洲中国最大av网站| 青青国产91久久久久久| 国产丶欧美丶日本不卡视频| 国产不卡视频在线播放| 欧美日韩中文字幕一区二区| 欧美一区二区成人6969| 精品欧美一区二区久久| 自拍偷拍国产精品| 免费在线成人网| 日韩精品一区在线观看| 五月婷婷久久综合| 韩国女主播成人在线| 99久久免费精品| 精品久久99ma| 亚洲成人tv网| 成人动漫一区二区| 欧美一级午夜免费电影| 亚洲电影你懂得| 国产成人午夜精品影院观看视频 | 中文字幕欧美日韩一区| 亚洲色图欧洲色图婷婷| 激情国产一区二区| 成人激情免费视频| 欧美精品xxxxbbbb| 久久久国产精品麻豆| 国模无码大尺度一区二区三区| 91免费在线播放| 久久色.com| 国产乱一区二区| 日韩精品一区二区三区视频播放 | 日本在线不卡一区| 欧美性做爰猛烈叫床潮| 日韩免费观看高清完整版| 亚洲在线视频免费观看| k8久久久一区二区三区| 欧美日韩一区二区不卡| 久久精品欧美一区二区三区不卡 | 精品剧情在线观看| 午夜精品久久久久久| 7777精品伊人久久久大香线蕉| 中文字幕永久在线不卡| 成人av电影在线观看| 国产精品二三区| 色综合久久久久综合99| 国产网站一区二区| 精品一区二区久久| 国产亚洲精久久久久久| 岛国av在线一区| 中文字幕一区二区三区蜜月 | av亚洲精华国产精华| 久久久精品免费网站| 成人黄色国产精品网站大全在线免费观看| 日韩一卡二卡三卡国产欧美| 婷婷综合另类小说色区| 日韩精品一区二区在线观看| 国产九色sp调教91| 亚洲乱码一区二区三区在线观看| 99精品热视频| 日本欧美韩国一区三区| 国产精品午夜免费| 99久久久精品| 亚洲亚洲人成综合网络| 久久精品男人天堂av| 欧美自拍偷拍午夜视频| 国产盗摄一区二区三区| 日韩综合一区二区| 亚洲欧洲日韩在线| 欧美卡1卡2卡| 麻豆精品在线视频| 亚洲人午夜精品天堂一二香蕉| 日韩欧美激情四射| 91碰在线视频| 国产99久久久久久免费看农村| 日韩国产精品久久久久久亚洲| 国产精品你懂的在线| 欧美日韩国产在线观看|