久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5551|回復: 8
收起左側

nrf24l01無線芯片的開發板范例-AVR(已驗證通過)

[復制鏈接]
ID:465246 發表于 2019-4-2 19:25 | 顯示全部樓層 |閱讀模式
#include "main.h"
#include "nRF24L01.h"


/*Bit field operations*/
#define SetBit( Byte, Bit )  ( Byte ) |= ( 1<<( Bit ) )
#define ClrBit( Byte, Bit )  ( Byte ) &= ~( 1<<( Bit ) )
#define GetBit( Byte, Bit )  ( ( Byte ) & ( 1<<( Bit ) ) )
#define ComBit( Byte, Bit )  ( Bytes ) ^= ( 1<<( Bit ) )
#define SetBits( Byte, Bits ) ( Byte ) |= ( Bits )
#define ClrBits( Byte, Bits ) ( Byte ) &= ~( Bits )
#define GetBits( Byte, Bits ) ( ( Byte ) & ( Bits ) )
#define ComBits( Byte, Bits ) ( Byte ) ^= ( Bits )

#define M32_MOSI   PB5
#define M32_MISO   PB6
#define M32_SCK    PB7
/*
================================================================================
Function   : USART_SendChar( )
Description: Send a single byte via the USART
InPut      : -dt, The value you want to send
Output     : None
================================================================================
*/
void USART_SendChar( unsigned char dt )
{
                UCSRA |= ( 1<<TXC );
                UDR = dt;
                while( !( UCSRA & ( 1<<TXC ) ) );
}
/*
================================================================================
Function   : USART_SendArray( )
Description: Send a array of data via the USART port
InPut      : -pBuff, The buffer to store the data
             -nBytes, How many bytes do you want to send ?
Output     : None
================================================================================
*/
void USART_SendArray( unsigned char* pBuff, unsigned char nBytes )
{
        unsigned char btmp;
        for( btmp = 0; btmp < nBytes; btmp ++ )
        {
                USART_SendChar( *( pBuff + btmp ) );
        }
}
/*
================================================================================
Function   : USART_SendStr( )
Description: Send a string of data via the USART port
InPut      : pstr->the string to be sent
Output     : None
================================================================================
*/
void USART_SendStr( char *pstr )
{
    while( *pstr )
    {
        USART_SendChar( *pstr++ );
    }
}
/*
================================================================================
Function   : USART_Init( ),
Description: Initialize the USART port
InPut      : None
Output     : None
================================================================================
*/
#define Bandrate    9600
#define F_CPU       12000000
void USART_Init( void )
{

        UCSRB = 0x00; //disable while setting baud rate
        UCSRA = 0x00;
        UCSRC = 0x86;
        UBRRL = ( F_CPU / 16 / Bandrate - 1 ) % 256;
        UBRRH = ( F_CPU / 16 / Bandrate - 1 ) >> 8;
        UCSRB = 0x98;

}
/*
================================================================================
Function : SPI_Init( )
Description : Initialize the SPI bus
Input : None
Output: None
================================================================================
*/
/*void SPI_Init( void )
{
    //IO config
    PORTB |= ( 1<<0 ) | ( 1<<5 ) | ( 1<<3 ) | ( 1<<2 ) | ( 1<<4 );
    DDRB |= ( 1<<0 ) | ( 1<<2 ) | ( 1<<3 ) | ( 1<<5 );
    DDRB &= ~( 1<<4 );
    SPCR = (1<<SPE) | (1<<MSTR);
}*/

void SPI_Init( void )
{
    /*IO config*/
    PORTB |= ( 1<<0 ) | ( 1<<5 ) | ( 1<<6 ) | ( 1<<7 ) | ( 1<<4 );
    DDRB |= ( 1<<7 ) | ( 1<<5 ) | ( 1<<0 ) | ( 1<<4 );
    DDRB &= ~( 1<<6 );
    SPCR = (1<<SPE) | (1<<MSTR);
}
/*
================================================================================
Function : SPI_ExchangeByte( )
Description : Exchange a byte via the SPI bus
Input : -value, The byte sent
Output: The byte read.
================================================================================
*/
INT8U SPI_ExchangeByte( INT8U value )
{
    SPDR = value;
        while ( !(SPSR & (1<<SPIF)) );
        return SPDR;
}

INT8U testbuffer[32];
int main( void )
{
    INT8U tmp;
        unsigned char ReplayData[] = {"我很好!\r\n"};


        SPI_Init( );
        USART_Init( );
        L01_Init( );       
                L01_SetRXMode( );
L01_WriteHoppingPoint( 0 );
USART_SendStr( "nRF24L01P接收測試開始!\r\n" );
        while( 1 )
    {
        for( tmp = 0; tmp < 32; tmp ++ )
        {
            testbuffer[tmp] = tmp+0x20;
        }
                L01_FlushRX( );
                L01_FlushTX( );
                L01_WriteRXPayload_InAck( ReplayData, sizeof( ReplayData ) );
                while( 1 )
                {
                        tmp = L01_ReadStatusReg( );
//                        USART_SendChar(tmp);  //for test
                        tmp &= ( 1<<TX_DS ) | ( 1<<MAX_RT ) | ( 1<<RX_DR );               
                        if( tmp != 0 )
                        {
                                break;
                        }
                }
         
        if( tmp & ( 1<<TX_DS ) )
        {
         //   USART_SendStr( "發送成功\r\n" );
        }
        else if( tmp & ( 1<<MAX_RT ) )
        {
         //   USART_SendStr( "發送失敗\r\n" );
        }
        else if( tmp & ( 1<<RX_DR )  )
        {
                        L01_WriteRXPayload_InAck( testbuffer, 32 );
            USART_SendStr( "收到數據:" );
                        tmp = L01_ReadRXPayload( testbuffer );
                        USART_SendArray( testbuffer, tmp );
                        USART_SendStr( "回復數據:" );
                        USART_SendStr( ( char*) ReplayData );
        }
        L01_ClearIRQ( IRQ_ALL );
    }
        return 0;
}


AVR_M16(ICC).rar

161.42 KB, 下載次數: 32, 下載積分: 黑幣 -5

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:120111 發表于 2019-4-29 09:53 來自手機 | 顯示全部樓層
買了這個模塊還沒開始用,正好學習一下
回復

使用道具 舉報

ID:6428 發表于 2019-6-29 13:49 | 顯示全部樓層
不錯學習下
回復

使用道具 舉報

ID:6428 發表于 2019-6-29 13:49 | 顯示全部樓層
不錯學習下
回復

使用道具 舉報

ID:574631 發表于 2019-6-29 16:31 來自手機 | 顯示全部樓層
太好了正找這個 謝謝
回復

使用道具 舉報

ID:552794 發表于 2019-6-30 13:38 | 顯示全部樓層
版主:這是Nordic的RFID產品,該公司還有BLE4.0的nRF51822產品,版主是否也用了?很想同版主交流。
回復

使用道具 舉報

ID:6428 發表于 2019-9-6 13:43 | 顯示全部樓層
謝謝分享0
回復

使用道具 舉報

ID:633275 發表于 2019-12-3 11:16 | 顯示全部樓層
AVR才開始學習,之前用PIC搞過,謝謝分享
回復

使用道具 舉報

ID:702817 發表于 2020-3-5 12:35 | 顯示全部樓層
喜歡的內容
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品二区三区 | 韩日有码 | 中文字幕亚洲视频 | 欧美成人免费在线 | 青春草91| 蜜月aⅴ免费一区二区三区 99re在线视频 | 午夜爱爱网| 成人精品毛片 | 中文字幕一区二区三区不卡在线 | 午夜免费成人 | 国产精品久久久久久久久久久久久久 | 久热久 | 久久成人av电影 | 午夜视频在线免费观看 | 在线播放一区二区三区 | 亚洲在线高清 | 欧美久久视频 | 91久久久久久 | 国产精品国产三级国产播12软件 | 自拍偷拍亚洲欧美 | 国产精品免费观看视频 | 亚洲福利一区二区 | 精品视频在线观看 | 日韩视频在线观看中文字幕 | 无码日韩精品一区二区免费 | 在线观看黄色电影 | 久久久久久久久久久久久9999 | 黑人精品欧美一区二区蜜桃 | 91精品福利 | 日韩成人免费av | 亚洲综合大片69999 | 成人国产精品久久 | 偷拍自拍网 | 午夜视频一区 | 久久精品久久久久久 | 亚洲免费福利视频 | 久久久影院 | 日韩在线观看网站 | 免费午夜电影 | 久婷婷| 特黄av|