在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > C8051F的nRF24L01 PTR6000無(wú)線收發(fā)

            C8051F的nRF24L01 PTR6000無(wú)線收發(fā)

            作者: 時(shí)間:2016-11-30 來(lái)源:網(wǎng)絡(luò) 收藏

            //接收函數(shù),接收返回1表示有數(shù)據(jù)收到
            uchar nRF24L01_RxPacket(uchar *rx_buf)
            {
            uchar sta;
            uchar revale=0;
            SPI_RW_Reg(WRITE_REG+CONFIG,0X0F);
            SPI_RW_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//定義接收通道號(hào)

            本文引用地址:http://www.biyoush.com/article/201611/324033.htm

            CE_HIGH; //開(kāi)始接收數(shù)據(jù)
            delay(130);

            sta=SPI_Read(READ_REG+STATUS);//接收狀態(tài)寄存器,用于判斷是否收到數(shù)據(jù)
            if(sta&0x40)
            {
            CE_LOW; //結(jié)束接收數(shù)據(jù)
            SPI_Read_Buf(RD_RX_PLOAD,rx_buf,TX_PLOAD_WIDTH);
            revale=0xff;
            }

            SPI_RW_Reg(WRITE_REG+STATUS,sta); //接收復(fù)位
            return revale;
            }


            void nRF24L01_TxPacket(uchar *tx_buf) //發(fā)送函數(shù)
            {
            CE_LOW;

            SPI_RW_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //給發(fā)送寄存器寫(xiě)入地址,寬度為T(mén)X_ADR_WIDTH

            SPI_RW_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH);//給接收寄存器寫(xiě)入地址,寬度也為T(mén)X_ADR_WIDTH
            SPI_Read_Buf(RX_ADDR_P0,rx_buf,TX_ADR_WIDTH);

            SPI_RW_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); //向發(fā)送寄存器寫(xiě)入TX_PLOAD_WIDTH寬度的數(shù)據(jù),

            SPI_RW_Reg(WRITE_REG+CONFIG,0X0E); //配置為PWR_UP位,使能CRC,16位校驗(yàn),發(fā)送模式

            CE_HIGH;
            delay(100);
            CE_LOW;

            }

            void nRF24L01_Config() //nRF24L01的配置函數(shù)
            {
            CE_LOW;//芯片使能
            CSN_HIGH;//SPI復(fù)位

            SPI_RW_Reg(WRITE_REG+CONFIG,0X0F); //使能接收模式
            SPI_Read(CONFIG);
            SPI_RW_Reg(WRITE_REG+EN_AA,0X01);//數(shù)據(jù)通道0自動(dòng)應(yīng)答
            SPI_Read(EN_AA);
            SPI_RW_Reg(WRITE_REG+EN_RXADDR,0X01); //通道0允許
            SPI_RW_Reg(WRITE_REG+SETUP_AW,0X02); //設(shè)置地址寬度為4字節(jié)
            SPI_RW_Reg(WRITE_REG+SETUP_RETR,0X1A);//建立自動(dòng)重發(fā),500+86us,10次重發(fā)
            SPI_RW_Reg(WRITE_REG+RF_CH,0x02);//設(shè)置工作通道頻率
            SPI_RW_Reg(WRITE_REG+RF_SETUP,0X07);//設(shè)置工作通道傳輸速率為1Mbps,發(fā)射功率為0dBm
            SPI_RW_Reg(WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);//設(shè)置通道0有效數(shù)據(jù)寬度RX_PLOAD_WIDTH

            }


            void SPI(void) //SPI初始化
            {
            SPI0CFG=0x40;
            SPI0CN=0x01; //0000 0001最后一位是SPI使能位 SPI工作在三線主方式
            SPI0CKR=0x2f; //SPI時(shí)鐘頻率設(shè)置為150kHz 0x6f 0x2f
            }

            void Interrupt_int(void) //中斷設(shè)定
            {
            IE=0x40; //允許SPI中斷請(qǐng)求
            IP=0x00; //SPI為低優(yōu)先級(jí)
            }

            void pio(void) // 端口配置
            {
            P0MDIN=0xff; //禁止模擬輸入,0為模擬,1為數(shù)字
            P0MDOUT=0xff; //0為開(kāi)漏,1為推挽(ff)
            P0SKIP=0x00;

            P1MDIN=0xff;
            P1MDOUT=0xff; //低四位用于138


            P2MDIN=0xff; //禁止模擬輸入,0為模擬,1為數(shù)字
            P2MDOUT=0xff; //0為開(kāi)漏,1為推挽(ff)

            P3MDIN=0xff;
            P3MDOUT=0xff; //低四位用于138

            XBR0=0x02;
            XBR1=0x40;

            //P0=0xff;
            }

            void sysclk(void);
            void pio(void);
            void SPI(void);
            void Interrupt_int(void);
            void delay(uint i);
            void dat_int(void);

            void main(void) //主程序
            {
            PCA0MD &= ~0x40;// 關(guān)閉看門(mén)狗
            pio();
            sysclk();
            SPI(); //SPI0DAT是SPI的數(shù)據(jù)寄存器
            Interrupt_int();
            EA=0;
            dat_int();
            nRF24L01_Config(); //nRF24L01的配置函數(shù)


            while(1)
            {
            //nRF24L01_TxPacket(tx_buf);

            nRF24L01_RxPacket(rx_buf);
            sta=SPI_Read(READ_REG+FIFO_STATUS);
            P1=rx_buf[2];

            delay(10000);
            if(rx_buf[2]==0xc7)break;
            }
            while(1)
            {
            nRF24L01_TxPacket(tx_buf); //發(fā)送函數(shù)

            sta=SPI_Read(READ_REG+STATUS); //發(fā)送程序復(fù)位
            if(sta&0x20)
            {
            c=1;
            SPI_RW_Reg(WRITE_REG+STATUS,sta);

            CSN_LOW; //清除發(fā)送寄存器的值
            SPI_RW(FLUSH_TX);
            CSN_HIGH;
            }

            delay(10000);
            }
            }


            上一頁(yè) 1 2 3 下一頁(yè)

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉