找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22901|回复: 7
打印 上一主题 下一主题
收起左侧

SI4463模块(433M)教训之:发送接收完毕产生IRQ中断,读状态可清除

[复制链接]
跳转到指定楼层
楼主
ID:71477 发表于 2015-1-1 20:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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)


评分

参与人数 1黑币 +5 收起 理由
渣渣求生记 + 5 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

菜鸟求教,还望大神指点,谢谢。
回复

使用道具 举报

板凳
ID:86559 发表于 2015-8-9 19:48 | 只看该作者
楼主,你好,我最近接触Si4463,看见很多说明书都是包含一个头文件,然后各种函数用的飞起,我不太理解这样包含的头文件,里面的函数怎么知道操作MCU的SPI?

能给我一份比较详细的程序吗?我不太会弄这个东西。谢谢了。
回复

使用道具 举报

地板
ID:86559 发表于 2015-8-9 19:52 | 只看该作者
楼主你好,我业余玩玩单片机,最近接触SI4463,看到很多文档都是包含一个头文件,然后各种函数用的飞起,我不太明白,包含的WDS生成的头文件里面的函数怎么知道操作MCU的SPI?

能把你的详细程序贴出来学习一下吗?谢谢了。
回复

使用道具 举报

5#
ID:86559 发表于 2015-8-9 19:52 | 只看该作者
楼主你好,我业余玩玩单片机,最近接触SI4463,看到很多文档都是包含一个头文件,然后各种函数用的飞起,我不太明白,包含的WDS生成的头文件里面的函数怎么知道操作MCU的SPI?
回复

使用道具 举报

6#
ID:225832 发表于 2017-8-23 09:38 | 只看该作者
请问你的SI4463_IRQ_BIT是自己定义的,还是库里就有,我编译显示没有定义啊
回复

使用道具 举报

7#
ID:136504 发表于 2017-12-14 13:49 | 只看该作者
硅传科技HW3000模块以价格和性能优势,替代CC1101/SI4463/SI4432无线模块。接收电流仅8mA,通信距离可达到2公里远。相对CC1101/SI4463/SI4432模块,成本较低。
回复

使用道具 举报

8#
ID:620337 发表于 2022-8-8 14:43 | 只看该作者
搞了很久,算是学会了SI4463,主要还是参考资料比较少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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