求基于51单片机无线模块nrf24l01程序c语言的
答案:2 悬赏:70
解决时间 2021-03-12 00:56
- 提问者网友:野性
- 2021-03-11 13:10
要求步骤清楚,解释详细的,谢谢了
最佳答案
- 二级知识专家网友:短发女王川岛琦
- 2021-03-11 13:40
你好:
你可以去我的百度空间,我有一篇NRF24L01的文章,写了原理、写了应用过程、写了程序设计,很多人都看过,也成功通信了,你可以去看看。
然后我这儿还有nrf的各种程序,回复我我可以给你。
希望我的回答能帮助到你。
你可以去我的百度空间,我有一篇NRF24L01的文章,写了原理、写了应用过程、写了程序设计,很多人都看过,也成功通信了,你可以去看看。
然后我这儿还有nrf的各种程序,回复我我可以给你。
希望我的回答能帮助到你。
全部回答
- 1楼网友:年轻没有失败
- 2021-03-11 14:59
#include
#include
typedef unsigned char uchar;
typedef unsigned char uint;
/
void inerdelay_us(unsigned char n)
{
for(;n>0;n--)
_nop_();
}
/
void init_nrf24l01(void)
{
inerdelay_us(100);
ce=0; // chip enable
csn=1; // spi disable
sck=0; //
spi_write_buf(write_reg + tx_addr, tx_address, tx_adr_width); // 写本地地址
spi_write_buf(write_reg + rx_addr_p0, rx_address, rx_adr_width); // 写接收端地址
spi_rw_reg(write_reg + en_aa, 0x01); // 频道0自动 ack应答允许
spi_rw_reg(write_reg + en_rxaddr, 0x01); // 允许接收地址只有频道0,如果需要多频道可以参考page21
spi_rw_reg(write_reg + rf_ch, 0); // 设置信道工作为2.4ghz,收发必须一致
spi_rw_reg(write_reg + rx_pw_p0, rx_pload_width); //设置接收数据长度,本次设置为32字节
spi_rw_reg(write_reg + rf_setup, 0x07); //设置发射速率为1mhz,发射功率为最大值0db
}
uint spi_rw(uint uchar)
{
uint bit_ctr;
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit
{
mosi = (uchar & 0x80); // output 'uchar', msb to mosi
uchar = (uchar << 1); // shift next bit into msb..
sck = 1; // set sck high..
uchar |= miso; // capture current miso bit
sck = 0; // ..then set sck low again
}
return(uchar); // return read uchar
}
uchar spi_read(uchar reg)
{
uchar reg_val;
csn = 0; // csn low, initialize spi communication...
spi_rw(reg); // select register to read from..
reg_val = spi_rw(0); // ..then read registervalue
csn = 1; // csn high, terminate spi communication
return(reg_val); // return register value
}
uint spi_rw_reg(uchar reg, uchar value)
{
uint status;
csn = 0; // csn low, init spi transaction
status = spi_rw(reg); // select register
spi_rw(value); // ..and write value to it..
csn = 1; // csn high again
return(status); // return nrf24l01 status uchar
}
uint spi_read_buf(uchar reg, uchar *pbuf, uchar uchars)
{
uint status,uchar_ctr;
csn = 0; // set csn low, init spi tranaction
status = spi_rw(reg); // select register to write to and read status uchar
for(uchar_ctr=0;uchar_ctr
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |