标题: SI4463模块(433M)教训之:发送接收完毕产生IRQ中断,读状态可清除 [打印本页]

作者: shaonv    时间: 2015-1-1 20:12
标题: SI4463模块(433M)教训之:发送接收完毕产生IRQ中断,读状态可清除
SI4463淘宝卖家教训少占鱼之:SI4463模块发送数据完毕后,IRQ中断脚输出0电平。最简单可靠的就是,while(IRQ_Pin); 跳出等待,说明发送完毕了。然后  读状态寄存器可清除中断。
RW_MultiReg_Ack(SI4463_Txd[1], LocationMac[0] ,LocationMac[1], LocationMac[2], LocationMac[3]); //发送轮询命令
            while(SI4463_IRQ_BIT);
            SI446X_INT_STATUS( SI4463_Buf );

主函数中等待接收中断,判断命令后应答发送。
while( 1 )
    {
   
      if(SI4463_IRQ_BIT==0x00)
        {
      
      //disableInterrupts();
      SI446X_INT_STATUS( SI4463_Buf );
      if( SI4463_Buf[3] & ( 1<<4 ) )
      {
        //收到一个数据包,翻转LED
        length = SI446X_READ_PACKET( SI4463_Buf );
     
        if(modbus_cmd( SI4463_Buf , RW_Reg_Req_Len )==0)//检查功能码并计算校验
        {
          LED_BIT=0;
          //delay_ms(1000);
          //delay_us(900);
     
            if(SI4463_Buf[1] == MAC_SCAN_433M)
          {
                      SI4463_Txd[1]=MAC_SCAN_433M;
                       RW_MultiReg_Ack(SI4463_Txd[1], LocationMac[0] ,LocationMac[1], LocationMac[2], LocationMac[3]); //发送轮询命令
                        while(SI4463_IRQ_BIT);
                        SI446X_INT_STATUS( SI4463_Buf );
                        if(SI4463_IRQ_BIT)
                        {
                              delay_ms(100);
                              LED_BIT=1;
                        }
          }
   
  
          //回到接收模式,继续等待信号
          SI446X_START_RX( 0, 0, PACKET_LENGTH,0,3,3 );
          delay_ms(20);
          //Get_ADC(4);//进行ADC转换,获得AD值
          delay_ms(10);
         
           
        }
  
     
      } //end if( buffer[3] & ( 1<<4 ) )
      
    } //end if
  } //end while(1)



作者: lanse    时间: 2015-8-9 19:42
楼主,能把完整程序贴出来吗?我最近才接触Si4463,有个事情很好奇,找到的说明文档里面都是直接include一个WDS生成的头文件,然后各种函数用的飞起,我不太理解,WDS生成的头文件里面的函数怎么知道使用mcu的SPI?

菜鸟求教,还望大神指点,谢谢。
作者: lanse    时间: 2015-8-9 19:48
楼主,你好,我最近接触Si4463,看见很多说明书都是包含一个头文件,然后各种函数用的飞起,我不太理解这样包含的头文件,里面的函数怎么知道操作MCU的SPI?

能给我一份比较详细的程序吗?我不太会弄这个东西。谢谢了。
作者: lanse    时间: 2015-8-9 19:52
楼主你好,我业余玩玩单片机,最近接触SI4463,看到很多文档都是包含一个头文件,然后各种函数用的飞起,我不太明白,包含的WDS生成的头文件里面的函数怎么知道操作MCU的SPI?

能把你的详细程序贴出来学习一下吗?谢谢了。
作者: lanse    时间: 2015-8-9 19:52
楼主你好,我业余玩玩单片机,最近接触SI4463,看到很多文档都是包含一个头文件,然后各种函数用的飞起,我不太明白,包含的WDS生成的头文件里面的函数怎么知道操作MCU的SPI?
作者: tinatianshinima    时间: 2017-8-23 09:38
请问你的SI4463_IRQ_BIT是自己定义的,还是库里就有,我编译显示没有定义啊
作者: silicontra521    时间: 2017-12-14 13:49
硅传科技HW3000模块以价格和性能优势,替代CC1101/SI4463/SI4432无线模块。接收电流仅8mA,通信距离可达到2公里远。相对CC1101/SI4463/SI4432模块,成本较低。
作者: fqc168    时间: 2022-8-8 14:43
搞了很久,算是学会了SI4463,主要还是参考资料比较少




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1