发 帖  
[问答]

如何在一块战舰板上进行两个NRF24L01的通信实验?

1860 nRF24L01 无线通信
2020-4-23 04:36:06   评论 分享淘帖 邀请回答 举报
7个回答


NRF24L01 中为配合中断方式,做了些调整,代码如下


       
[C] 纯文本查看 复制代码
static bool WIRELESS1_IsIrqHandled;static bool WIRELESS2_IsIrqHandled;...void WIRELESS_IrqHandled(u8 aWhichWireless){  switch(aWhichWireless)  {    case WIRELESS1: WIRELESS1_IsIrqHandled = TRUE; break;    case WIRELESS2: WIRELESS2_IsIrqHandled = TRUE; break;  }}void WIRELESS_SendPacket(u8 aWhichWireless, u8 *aBuffer){  switch(aWhichWireless)  {    case WIRELESS1: WIRELESS1_CE = 0; WIRELESS1_IsIrqHandled = FALSE; break;    case WIRELESS2: WIRELESS2_CE = 0; WIRELESS2_IsIrqHandled = FALSE; break;  }  WIRELESS_WriteBuffer(aWhichWireless, NFR_WRITE_TX_PAYLOAD, aBuffer, WIRELESS_TX_PAYLOAD_WIDTH);  switch(aWhichWireless)  {    case WIRELESS1: WIRELESS1_CE = 1; do { Wait_us(10);} while(WIRELESS1_IsIrqHandled == FALSE); break;    case WIRELESS2: WIRELESS2_CE = 1; do { Wait_us(10);} while(WIRELESS2_IsIrqHandled == FALSE); break;  }  return;   }
       

       


                中断处理代码如下:
       


               
[C] 纯文本查看 复制代码
void EXTI9_5_IRQHandler(void){  // WIRELESS1 触发的中断  if(EXTI_GetITStatus(EXTI_Line8) == SET)  {    u8 lStatus = WIRELESS_ReadReg(WIRELESS1, NRF_READ_REG + NFR_STATUS);  // 读取状态寄存器的值    oDebug("RF1 => ");    if(lStatus & NFR_MAX_TX)                                 // 达到最大重发次数    {      WIRELESS_WriteReg(WIRELESS1, NFR_FLUSH_TX, 0xFF);      // 清除TX FIFO寄存器      oDebug("MAX_TXrn");    }        if(lStatus & NFR_TX_OK)                                  // 发送完成    {      oDebug("TX_OKrn");    }      if(lStatus & NFR_RX_OK)                                  // 接收完成    {      oDebug("RX_OKrn");    }        // 清除 RX_DS,TX_DS 或 MAX_RT 中断标志    WIRELESS_WriteReg(WIRELESS1, NRF_WRITE_REG + NFR_STATUS, lStatus);    WIRELESS_IrqHandled(WIRELESS1);    EXTI_ClearITPendingBit(EXTI_Line8);  }    if(EXTI_GetITStatus(EXTI_Line9) == SET)  {    u8 lStatus = WIRELESS_ReadReg(WIRELESS2, NRF_READ_REG + NFR_STATUS);  // 读取状态寄存器的值    oDebug("RF2 => ");    if(lStatus & NFR_MAX_TX)                                 // 达到最大重发次数    {      WIRELESS_WriteReg(WIRELESS2, NFR_FLUSH_TX, 0xFF);      // 清除TX FIFO寄存器      oDebug("MAX_TXrn");    }        if(lStatus & NFR_TX_OK)                                  // 发送完成    {      oDebug("TX_OKrn");    }      if(lStatus & NFR_RX_OK)                                  // 接收完成    {      u8 lRxBuffer[33];      oDebug("RX_OK");      WIRELESS_ReadBuffer(WIRELESS2, NFR_READ_RX_PAYLOAD, lRxBuffer, WIRELESS_RX_PAYLOAD_WIDTH); // 读取数据      WIRELESS_WriteReg(WIRELESS2, NFR_FLUSH_RX, 0xFF);      // 清除RX FIFO寄存器            lRxBuffer[32] = 0;      oDebug("[%s]rn", lRxBuffer);    }    // 清除 RX_DS,TX_DS 或 MAX_RT 中断标志    WIRELESS_WriteReg(WIRELESS2, NRF_WRITE_REG + NFR_STATUS, lStatus);    WIRELESS_IrqHandled(WIRELESS2);        EXTI_ClearITPendingBit(EXTI_Line9);  }}
               

               


                       

               

2020-4-23 07:29:12 评论

举报

2020-4-23 07:43:00 评论

举报

2020-4-23 07:49:58 评论

举报

2020-4-23 08:07:51 评论

举报

2020-4-23 08:24:43 评论

举报

2020-4-23 08:36:35 评论

举报

2020-4-23 08:55:08 评论

举报

只有小组成员才能发言,加入小组>>

493个成员聚集在这个小组

加入小组

创建小组步骤

快速回复 返回顶部 返回列表
关注微信公众号

电子发烧友网

电子发烧友论坛

社区合作
刘勇
联系电话:15994832713
邮箱地址:liuyong@huaqiu.com
社区管理
elecfans短短
微信:elecfans_666
邮箱:users@huaqiu.com
关闭

站长推荐 上一条 /9 下一条

快速回复 返回顶部 返回列表
-

厂商专区

飞凌嵌入式

瑞萨单片机论坛

米尔电子

Aigtek安泰电子

斯丹麦德电子

芯佰微电子

其利天下技术小组

道生物联技术社区

视美泰

FCom富士晶振

大大通

合众恒跃

进迭时空

RT-Thread论坛

EASY-EAI灵眸科技

-

技术社区

张飞电子技术社区

KaihongOS技术社区

FPGA开发者技术社区

RISC-V MCU技术社区

HarmonyOS技术社区

-

OpenHarmony开源社区

OpenHarmony开源社区

-

嵌入式论坛

ARM技术论坛

STM32/STM8技术论坛

嵌入式技术论坛

单片机/MCU论坛

RISC-V技术论坛

瑞芯微Rockchip开发者社区

FPGA|CPLD|ASIC论坛

DSP论坛

-

电路图及DIY

电路设计论坛

DIY及创意

电子元器件论坛

专家问答

-

电源技术论坛

电源技术论坛

无线充电技术

-

综合技术与应用

机器人论坛

USB论坛

电机控制

模拟技术

音视频技术

综合技术交流

上位机软件(C/Python/Java等)

-

无线通信论坛

WIFI技术

蓝牙技术

天线|RF射频|微波|雷达技术

-

EDA设计论坛

PCB设计论坛

DigiPCBA论坛

Protel|AD|DXP论坛

PADS技术论坛

Allegro论坛

multisim论坛

proteus论坛|仿真论坛

KiCad EDA 中文论坛

DFM|可制造性设计论坛

-

测试测量论坛

LabVIEW论坛

Matlab论坛

测试测量技术

传感技术

-

招聘/交友/外包/交易/杂谈

项目外包

供需及二手交易

工程师杂谈|交友

招聘|求职|工程师职场

-

官方社区

发烧友官方/活动

华秋商城

华秋电路

+

元器件搜索引擎

元器件搜索引擎