資源簡介
包含nrf24l01頭文件跟.c文件,可以在頭文件設置是使用硬件spi還是軟件模擬spi,接法完全一樣。用的msp430f5438a的UCB3,實測完全通過,需要一對進行收發(fā),單個發(fā)送或接受不會成功

代碼片段和文件信息
#include?“NRF24L01.h“
extern?u8?TX_ADDRESS[TX_ADR_WIDTH]={0x340x430x100x100x01};?//發(fā)送地址
extern?u8?RX_ADDRESS[RX_ADR_WIDTH]={0x340x430x100x100x01};?//發(fā)送地址
void?SPI3_Init()
{
#if?USE_HW_SPI
??P10SEL|=BIT1+BIT2+BIT3;????//設置P10.1~P10.3外設功能
??P10SEL&=~(BIT0+BIT4+BIT5);
??P10DIR|=BIT0+BIT1+BIT3+BIT4;?????//設置CSMOSICLKCE為輸出方向
??P10DIR&=~(BIT2+BIT5);?????????????//設置MISO為輸入方向
??P10DS|=BIT0+BIT1+BIT3+BIT4;?????
??P10REN|=BIT2+BIT5;??????????????//設置MISO上拉
??P10OUT|=BIT1+BIT2+BIT5;
??P10OUT&=~BIT0+BIT3;
??UCB3CTL1|=UCSWRST;???????
??UCB3CTL0?=UCCKPH+UCMSB+UCMST+UCMODE_0+UCSYNC;????//3線SPI主機模式,時鐘極性低,先發(fā)送MSB
??UCB3CTL0&=~(UCCKPL);
??UCB3CTL1|=UCSSEL_2;??????????///選擇SMCLK
??UCB3BR0=5;??????????????????//25M/5=5M?<10M
??UCB3BR1=0;
??UCB3CTL1&=~UCSWRST;
??UCB3IE?&=?~(UCRXIE+UCTXIE);??//不開中斷
//??UCB3IFG&=~UCRXIFG;
#elif?!USE_HW_SPI
??P10DIR|=BIT0+BIT1+BIT3+BIT4;??
??P10DIR&=~(BIT2+BIT5);?
??P10DS|=BIT0+BIT1+BIT3+BIT4;?????
??P10REN|=BIT2+BIT5;???????????
??P10OUT|=BIT2+BIT5;
??P10OUT&=~BIT3;
#endif
}
//連接方式
????//P10.0->CSN????P10.1->MOSI
????//P10.2->MISO???P10.3->CLK
????//P10.4->CE?????P10.5->IRQ
u8?SPI3_SendReceiveByte(u8?byte)
{
??u8?val;
#if?USE_HW_SPI
??while?(!(UCB3IFG&UCTXIFG));???//等待TXBUF為空
??UCB3TXBUF=byte;?
??while((UCB3STAT&UCBUSY)&&(!(UCB3IFG&UCRXIFG)));????//等待發(fā)送跟接收完成
??val=UCB3RXBUF;
#elif?!USE_HW_SPI
??u8?i;
??for(i=0;i<8;i++)
??{
????if(byte&0x80)
??????NRFMOSI_1;
????else
??????NRFMOSI_0;
????byte<<=1;
????NRFCLK_1;
????if(NRFMISO)
??????byte|=0x01;
????delay_us(1);
????NRFCLK_0;
??}
??val=byte;
#endif?
??return?val;
??
}
u8?NRF_WriteReg(u8?regu8?val)
{
??u8?temp;
??NRF24L01_CSN_0;
??temp=SPI3_SendReceiveByte(reg);
??SPI3_SendReceiveByte(val);
??NRF24L01_CSN_1;
??return?temp;
}
u8?NRF_ReadReg(u8?reg)
{
??u8?val;
??NRF24L01_CSN_0;
??SPI3_SendReceiveByte(reg);
??val=SPI3_SendReceiveByte(0xff);
??NRF24L01_CSN_1;
??return?val;
}
u8?NRF_ReadBuf(u8?regu8?*buffu8?num)
{
??u8?ival;
??NRF24L01_CSN_0;
??val=SPI3_SendReceiveByte(reg);
??for(i=0;i ????buff[i]=SPI3_SendReceiveByte(0);
??NRF24L01_CSN_1;
??return?val;?
}
u8?NRF_WriteBuf(u8?regu8?*buffu8?num)
{
??u8?vali;
??NRF24L01_CSN_0;
??val=SPI3_SendReceiveByte(reg);
??for(i=0;i ????SPI3_SendReceiveByte(*buff++);
??NRF24L01_CSN_1;
??return?val;
}
u8?NRF_SendPacket(u8?*TxBuf)
{
??u8?val;
??NRF24L01_CE_0;
??NRF_WriteBuf(WR_TX_PLOADTxBufTX_PLOAD_WIDTH);
??NRF24L01_CE_1;
??NRF_WriteReg(WRITE_REG+STATUS0xff);
//??Tx_Mode(TxBuf);
//??delay_ms(5);
??while(NRF24L01_IRQ!=0);
??val=NRF_ReadReg(STATUS);
??NRF_WriteReg(WRITE_REG+STATUS0xff);
??NRF_WriteReg(WRITE_REGval);
??if(val&MAX_TX)
??{
????NRF_WriteReg(FLUSH_TX0xff);
????return?MAX_TX;
??}
??if(val&TX_OK)
????return?TX_OK;
??return?0xff;??
}
u8?NRF_ReceivePacket(u8?*RxBuf)
{
??u8?val;
??val=NRF_ReadReg(STATUS);
??NRF_WriteReg(WRITE_REG+STATU
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????4817??2015-04-01?18:34??nrf24l01\NRF24L01.h
?????文件???????4619??2015-04-01?13:20??nrf24l01\NRF24L01.c
?????目錄??????????0??2015-04-06?21:51??nrf24l01
-----------?---------??----------?-----??----
?????????????????9436????????????????????3
- 上一篇:淘寶寶貝評價、商品屬性提取采集器
- 下一篇:AS轉TS代碼轉換工具第三版更新
評論
共有 條評論