中易网

求基于51单片机无线模块nrf24l01程序c语言的

答案:2  悬赏:70  
解决时间 2021-03-12 00:56
要求步骤清楚,解释详细的,谢谢了
最佳答案
你好:
你可以去我的百度空间,我有一篇NRF24L01的文章,写了原理、写了应用过程、写了程序设计,很多人都看过,也成功通信了,你可以去看看。
然后我这儿还有nrf的各种程序,回复我我可以给你。
希望我的回答能帮助到你。
全部回答
#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
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯