? 無(wú)線模塊專業(yè)網(wǎng)站!安陽(yáng)市新世紀(jì)電子研究所專業(yè)研發(fā)生產(chǎn)小體積低功耗 無(wú)線模塊 無(wú)線收發(fā)模塊 2.4G無(wú)線模塊 無(wú)線遙控器 無(wú)線接收器 無(wú)線控制器
  • <sup id="4qqq8"></sup>
    <sup id="4qqq8"></sup>
    
    
    <tfoot id="4qqq8"><dd id="4qqq8"></dd></tfoot>
    <code id="4qqq8"><pre id="4qqq8"></pre></code>
  • <tr id="4qqq8"><small id="4qqq8"></small></tr><nav id="4qqq8"></nav>
    <noscript id="4qqq8"><dd id="4qqq8"></dd></noscript>
  • <sup id="4qqq8"><delect id="4qqq8"></delect></sup>
  • <sup id="4qqq8"></sup>
  • 欧美久久婷婷五月综合,专区一va亚洲v专区在线,日本一本免费高清视频观看,国产av一二三无码影片,国产欧美精品丝袜久久,美日韩中无码免费

    全國(guó)服務(wù)熱線:0372-5968708
    ?
    產(chǎn)品目錄
    市場(chǎng)部聯(lián)系電話:
    0372-5968708
    傳真:0372-5968993
    郵箱:ay5968708@163.com
    中國(guó)﹒河南省安陽(yáng)市文峰大道與朝陽(yáng)路口國(guó)貿(mào)大廈A座9F
    歡迎咨詢市場(chǎng)部在線客服!
    技術(shù)支持
    您當(dāng)前位置:首頁(yè) > 技術(shù)支持
    JF24D如何設(shè)置頻率及數(shù)據(jù)通道
    發(fā)布:xsj  發(fā)布日期:2012-03-06 15:06:01  瀏覽:5410次

    ** File name:           JF24D.c

    ** Last modified Date:  2010-11-6

    ** Last Version:        2.0

    ** Descriptions:        Every project should include a copy of this file.

    **------------------------------------------------------------------------------------------------------

    ** Created by:          lizhiyuan

    ** Created date:        2010-11-6

    ** Version:            2.0

    ** Descriptions:        The original version

    **------------------------------------------------------------------------------------------------------

    ** Modified by:

    ** Modified date:

    ** Version:

    ** Descriptions:JF24D新版本程序2.0

    ********************************************************************************************************/

    #include"JF24D.h"

    //寄存器組1  0-13號(hào)寄存器的初始值  

    code UINT32 RegArrFSKAnalog[]={

    0xE2014B40,

    0x00004B40,

    0x028CFCD0,

    0x41390099,

    0x0B869EC1,

    0xA67F0224,

    0x00400000,  

    0x00000000,

    0x00000000,

    0x00000000,

    0x00000000,

    0x00000000,

    0x001A7300,

    0x36B48000,

    };

     

    //寄存器組1  14號(hào)寄存器的初始值  

    code UINT8 RegArrFSKAnalogReg14[]=

    {

    0x41,0x20,0x08,0x04,0x81,0x20,0xCF,0xF7,0xFE,0xFF,0xFF

    };

     

    //寄存器組0初始值

    code UINT8 RegArrFSK[][2]={

    {0,0x0F}, //配置寄存器

    {1,0x3F},

    {2,0x3F}, //使能接收地址

    {3,0x03}, //信道的數(shù)據(jù)長(zhǎng)度

    {4,0xff},

    {5,0x17},    //頻道選擇寄存器 (更改17 可以改變2.4G 的頻率,改為181M 一共可以設(shè)置80個(gè)通道)

    {6,0x17}, 

    {7,0x07},     //狀態(tài)寄存器

    {8,0x00}, //射頻設(shè)置寄存器

    {9,0x00},

    {12,0xc3},

    {13,0xc4},

    {14,0xc5},

    {15,0xc6},

    {17,0x20},

    {18,0x20},

    {19,0x20},

    {20,0x20},

    {21,0x20},

    {22,0x20},

    {23,0x00},

    {28,0x3F},

    {29,0x07}

    };

     

    code UINT8 RX0_Address[]={0x12,0x34,0x56,0x78,0x01}; //接收通道0的地址

    說(shuō)明:改變0X后面5組數(shù)字的任一組數(shù)可以更改每套模塊的IP地址,比如0x12 可以改為0x13,其他不變{0x13,0x34,0x56,0x78,0x01} 2只模塊地址一樣即可通訊 和其他不同的地址不能通訊,也互不干擾。改變地址可以數(shù)據(jù)通道。遙控可以,傳數(shù)據(jù)會(huì)誤碼。

    code UINT8 RX1_Address[]={0xc2,0x56,0x34,0x12,0x02}; //接收通道1的地址

     

    /************************************************************************************

    **函數(shù)名稱:SPI_RW()

    **函數(shù)描述:寫(xiě)一個(gè)字節(jié)到JF24D,并返回讀出的字節(jié)

    平時(shí)低電平,上升沿讀數(shù)據(jù),下降沿寫(xiě)數(shù)據(jù)

    **入口參數(shù):命令或地址

    **出口參數(shù):讀出的字節(jié)

    ************************************************************************************/       

    UINT8 SPI_RW(UINT8 _byte)

    {

    UINT8 bit_ctr;

    for(bit_ctr=0;bit_ctr<8;bit_ctr++)   

    {

    MOSI = (_byte & 0x80);         // 輸出,先輸出高位

    _byte = (_byte << 1);// 下一位輸出值移位到高位

    SCK = 1;// SCK置位

    _byte |= MISO;        // MISO當(dāng)前值    

    SCK = 0;  // SCK清零 

    }

    return(_byte);  // 返回讀出的值

    }

     

    /**************************************************************

    **函數(shù)名稱:SPI_Write_Reg()

    **函數(shù)描述:寫(xiě)寄存器的值

    **入口參數(shù):寄存器地址+命令,寄存器的值

    **出口參數(shù):無(wú)

    **************************************************************/

    void SPI_Write_Reg(UINT8 reg, UINT8 value)                 

    {

    CSN = 0;// 清零CSN,使能SPI

    SPI_RW(reg);// 寫(xiě)寄存器地址+命令

    SPI_RW(value);// 寫(xiě)相應(yīng)的值

    CSN = 1;                   // 置位CSN,禁止SPI

    }

    /**************************************************************

    **函數(shù)名稱:SPI_Read_Reg()

    **函數(shù)描述:讀寄存器的值

    **入口參數(shù):寄存器地址+命令

    **出口參數(shù):寄存器的值

    **************************************************************/

    UINT8 SPI_Read_Reg(UINT8 reg)

    {

    BYTE value;

    CSN = 0;                // 清零CSN,使能SPI

    SPI_RW(reg);            // 寫(xiě)寄存器地址+命令

    value = SPI_RW(0);      // 讀寄存器的值

    CSN = 1;// 置位CSN,禁止SPI

     

    return(value);         // 返回寄存器的值

    }

    /**************************************************************

    **函數(shù)名稱:SPI_Read_Buf()

    **函數(shù)描述:讀多字節(jié)寄存器的值

    **入口參數(shù):寄存器地址+命令,返回值的地址,寄存器值的長(zhǎng)度

    **出口參數(shù):無(wú)

    **************************************************************/  

    void SPI_Read_Buf(UINT8 reg, UINT8 *pBuf, UINT8 bytes)     

    {

    UINT8 byte_ctr;&

    CSN = 0;// 清零CSN,使能SPI

    SPI_RW(reg);       // 寫(xiě)寄存器地址+命令

    for(byte_ctr=0;byte_ctr<bytes;byte_ctr++)

    pBuf[byte_ctr] = SPI_RW(0);    // 讀寄存器的值

    CSN = 1;// 置位CSN,禁止SPI

    }

    /**************************************************************

    **函數(shù)名稱:SPI_Write_Buf()

    **函數(shù)描述:寫(xiě)多字節(jié)寄存器的值

    **入口參數(shù):寄存器地址+命令,寫(xiě)入值的地址,寄存器值的長(zhǎng)度

    **出口參數(shù):無(wú)

    ***************************************************************/     

    void SPI_Write_Buf(UINT8 reg, UINT8 *pBuf, UINT8 bytes) reentrant    

    {

    UINT8 byte_ctr;

    CSN = 0;// 清零CSN,使能SPI

    SPI_RW(reg);    // 寫(xiě)寄存器地址+命令

    for(byte_ctr=0; byte_ctr<bytes; byte_ctr++) // 寫(xiě)寄存器的值 

    SPI_RW(*(pBuf+byte_ctr)); 

    CSN = 1;// 置位CSN,禁止SPI      

    }

     

    /**************************************************************

    **函數(shù)名稱:Enter_PRX()

    **函數(shù)描述:切換到PRX模式

    **入口參數(shù):無(wú)

    **出口參數(shù):無(wú)

    ***************************************************************/

    void Enter_PRX()

    {

    UINT8 value;

     

    SPI_Write_Reg(FLUSH_RX,0);//清空接收FIFO

     

    value=SPI_Read_Reg(STATUS);              // STATUS寄存器

    SPI_Write_Reg(WRITE_REG+STATUS,value);    // 清零RX_DRTX_DSMAX_RT標(biāo)志

     

    value=SPI_Read_Reg(CONFIG);              // CONFIG寄存器

     

    value=value&0xfd;//1清零

      SPI_Write_Reg(WRITE_REG + CONFIG, value); // 清零PWR_UP位,進(jìn)入POWER_DOWN模式

     

    value=value|0x03;//置位位1,位0

      SPI_Write_Reg(WRITE_REG + CONFIG, value); // 置位PWR_UPPRIM_RX,進(jìn)入PRX模式

    }

     

    /**************************************************************

    **函數(shù)名稱:Enter_PTX()

    **函數(shù)描述:切換到PTX模式

    **入口參數(shù):無(wú)

    **出口參數(shù):無(wú)

    ***************************************************************/

    void Enter_PTX()

    {

    UINT8 value;

     

    SPI_Write_Reg(FLUSH_TX,0);//清空接收FIFO

     

    value=SPI_Read_Reg(STATUS);           // STATUS寄存器

    SPI_Write_Reg(WRITE_REG+STATUS,value); // 清零RX_DRTX_DSMAX_RT標(biāo)志

    value=SPI_Read_Reg(CONFIG);           // CONFIG寄存器

    value=value&0xfd;//1清零

    SPI_Write_Reg(WRITE_REG+CONFIG, value);// 清零PWR_UP位,進(jìn)入POWER_DOWN模式

     

    value=value|0x02;//置位位1

    value=value&0xfe;//0清零

    SPI_Write_Reg(WRITE_REG + CONFIG, value); // 置位PWR_UP,清零PRIM_RX,進(jìn)入PTX模式

    }

     

    /**************************************************************

    **函數(shù)名稱:SwitchCFG()

    **函數(shù)描述:切換寄存器組

    **入口參數(shù):將要切換到寄存器組,01

    **出口參數(shù):無(wú)

    ***************************************************************/

    void SwitchCFG(char _cfg)

    {

    UINT8 Tmp;

     

    Tmp=SPI_Read_Reg(STATUS);//STATUS寄存器

     

    Tmp=Tmp&0x80;

     

    if( ( Tmp&&(_cfg==0) )

    ||( (Tmp==0)&&_cfg ) ) //判斷當(dāng)前寄存器組是否是將要切換的

    {

    SPI_Write_Reg(ACTIVATE_CMD,0x53);   //執(zhí)行切換

    }

    }

     

    /**************************************************************

    **函數(shù)名稱:Send_Packet()

    **函數(shù)描述:發(fā)射數(shù)據(jù)包

    **入口參數(shù):寫(xiě)發(fā)射FIFO命令,寫(xiě)入值的地址,寄存器值的長(zhǎng)度

    **出口參數(shù):無(wú)

    ***************************************************************/

    void Send_Packet(UINT8 type,UINT8* pbuf,UINT8 len)

    {

    UINT8 fifo_sta;

     

    fifo_sta=SPI_Read_Reg(FIFO_STATUS);  // 讀寄存器FIFO_STATUS

     

    if((fifo_sta&FIFO_STATUS_TX_FULL)==0) //判斷發(fā)射FIFO是否滿

      SPI_Write_Buf(type, pbuf, len);   // 寫(xiě)發(fā)射FIFO

    }

     

    /**************************************************************

    **函數(shù)名稱:Receive_Packet()

    **函數(shù)描述:接收數(shù)據(jù)包

    **入口參數(shù):讀接收FIFO命令,讀出值的地址

    **出口參數(shù):數(shù)據(jù)包的長(zhǎng)度

    ***************************************************************/

    UINT8 Receive_Packet(UINT8 rx_buf[MAX_PACKET_LEN])

    {

    UINT8 len,fifo_sta;

     

    do

    {

    len=SPI_Read_Reg(R_RX_PL_WID_CMD);// 讀數(shù)據(jù)包長(zhǎng)度

     

    if(len<=MAX_PACKET_LEN)

    {

    SPI_Read_Buf(RD_RX_PLOAD,rx_buf,len);// 讀接收FIFO

    }

    else

    {

    SPI_Write_Reg(FLUSH_RX,0);//數(shù)據(jù)包長(zhǎng)度大于最大長(zhǎng)度,清空FIFO

    }

     

    fifo_sta=SPI_Read_Reg(FIFO_STATUS);//讀寄存器FIFO_STATUS

    }while((fifo_sta&FIFO_STATUS_RX_EMPTY)==0); //如果不為空,繼續(xù)讀

    return(len);//返回?cái)?shù)據(jù)包長(zhǎng)度

    }

     

    /**************************************************************

    **函數(shù)名稱:JF24D_Init()

    **函數(shù)描述:初始化JF24D

    **入口參數(shù):無(wú)

    **出口參數(shù):無(wú)

    ***************************************************************/  

    void JF24D_Init()

    {

    INT8 i,j;

    UINT8 WriteArr[4];

     

    /************************初始化寄存器組1*********************************/

     SwitchCFG(1);   //切換到寄存器組1

     

     for(i=0;i<=8;i++) //寫(xiě)前0-8號(hào)寄存器

     

      for(j=0;j<4;j++) 

    {   

        WriteArr[j]=(RegArrFSKAnalog[i]>>(8*(j) ) )&0xff;  //將寄存器值存放到數(shù)組中,先高字節(jié)

       

      SPI_Write_Buf((WRITE_REG|i),&(WriteArr[0]),4); //寫(xiě)寄存器

     

     

     for(i=9;i<=13;i++) //寫(xiě)9-13號(hào)寄存器

     

      for(j=0;j<4;j++) 

        WriteArr[j]=(RegArrFSKAnalog[i]>>(8*(3-j) ) )&0xff; //將寄存器值存放到數(shù)組中,先低字節(jié)

       

      SPI_Write_Buf((WRITE_REG|i),&(WriteArr[0]),4); //寫(xiě)寄存器

     }

     

    SPI_Write_Buf((WRITE_REG|14),&(RegArrFSKAnalogReg14[0]),11); //寫(xiě)14號(hào)寄存器

     

    /***************寫(xiě)REG4[0]=0REG4[1]=0REG4[3]=0REG4[23]=0 **************/

     for(j=0;j<4;j++) 

       WriteArr[j]=(RegArrFSKAnalog[4]>>(8*(j) ) )&0xff; 

      

     WriteArr[3]=WriteArr[3]&0xf4; 

     WriteArr[1]=WriteArr[1]&0x7F; 

     SPI_Write_Buf((WRITE_REG|4),&(WriteArr[0]),4); 

     

    /***********寫(xiě)REG4[25]=1,寫(xiě)REG4[26]=1 *********************************/

     WriteArr[0]=WriteArr[0]|0x06; 

     SPI_Write_Buf((WRITE_REG|4),&(WriteArr[0]),4); 

     

    /*************寫(xiě)REG4[25]=0,寫(xiě)REG4[26]=0*****************************/ 

    WriteArr[0]=WriteArr[0]&0xf9; 

     SPI_Write_Buf((WRITE_REG|4),&(WriteArr[0]),4); 

     

    /************寫(xiě)REG4[0]=1REG4[1]=1REG4[3]=1REG4[23]=1***********/

     for(j=0;j<4;j++) 

       WriteArr[j]=(RegArrFSKAnalog[4]>>(8*(j) ) )&0xff; 

      

     SPI_Write_Buf((WRITE_REG|4),&(WriteArr[0]),4); 

     

    /******************初始化寄存器組0**********************************/

     SwitchCFG(0); //切換到寄存器組0

     

     for(i=20;i>=0;i--) 

       SPI_Write_Reg((WRITE_REG|RegArrFSK[i][0]),RegArrFSK[i][1]);    //初始化前面定義的寄存器

      

     

     SPI_Write_Buf((WRITE_REG+RX_ADDR_P0),RX0_Address,5); //寫(xiě)寄存器10,通道0地址   寄存器地址+命令,返回值的地址,寄存器值的長(zhǎng)度

       

     SPI_Write_Buf((WRITE_REG+RX_ADDR_P1),RX1_Address,5); //寫(xiě)寄存器11,通道1地址,及其余通道高位地址

      

     SPI_Write_Buf((WRITE_REG+TX_ADDR),RX0_Address,5); //寫(xiě)寄存器16,發(fā)射通道地址

     

     i=SPI_Read_Reg(29); //讀寄存器29

     if(i==0) //是否需要激活

       SPI_Write_Reg(ACTIVATE_CMD,0x73);  //激活寄存器29

     for(i=22;i>=21;i--) 

       SPI_Write_Reg((WRITE_REG|RegArrFSK[i][0]),RegArrFSK[i][1]); //寫(xiě)寄存器2829

      }

     

    /************************發(fā)射連續(xù)波CW*****************************/

    #ifdef TX_CW

    SwitchCFG(1); 

     WriteArr[0] = 0x41; 

     WriteArr[1] = 0x11; 

     WriteArr[2] = 0x04; 

     WriteArr[3] = 0x21; 

        SPI_Write_Buf((WRITE_REG|4),&(WriteArr[0]),4); 

     while(1); 

    #endif

    }

    ?
    安陽(yáng)市新世紀(jì)電子研究所有限公司 電話:0372-5968708  豫ICP備05021267號(hào)-1  豫公安網(wǎng)備 41050202000031號(hào)
    欧美久久婷婷五月综合
  • <sup id="4qqq8"></sup>
    <sup id="4qqq8"></sup>
    
    
    <tfoot id="4qqq8"><dd id="4qqq8"></dd></tfoot>
    <code id="4qqq8"><pre id="4qqq8"></pre></code>
  • <tr id="4qqq8"><small id="4qqq8"></small></tr><nav id="4qqq8"></nav>
    <noscript id="4qqq8"><dd id="4qqq8"></dd></noscript>
  • <sup id="4qqq8"><delect id="4qqq8"></delect></sup>
  • <sup id="4qqq8"></sup>