si4463突破最大包64字节发送

si4463单次发送最大64字节,为了提高发送的效率,我们可以芯片提供的几乎满,几乎空中断来提高发送的效率,设置一个几乎空的阀值,在FIFO中的数据即将发送完毕的时候

触发几乎完成中断,在中断中继续讲后面需要发送的数据填充到FIFO中去。


/*------------------------------------------
** 函数名称 :  Deal_RTX_SI4464( )
** 函数功能 :  处理双向通信的SI4464函数
** 输入     :  无
** 输出     :  无
-------------------------------------------*/
void Deal_RTX_SI4464( void )
{
    u8 temp ;
    //---------------------判断是否有按键输入
    if( WilessFlag == 1  )
    {
        WilessFlag = 0 ;
        
        temp = gRadio_CheckStatus( 2 ) ;
        
        switch( temp )
        {
            case 1 :  SentSucc = 1 ;              break ; //----发送完成
            case 2 :  Recive_data(  ) ;           break ; //----接收几乎满
            case 3 :  RF_SentData( ) ;            break ; //----发射几乎空
            case 4 :  RevStar = 0 ;               break ; //----检测到前导
            case 5 :  break ; //----检测到同步字  
            case 6 :  break ; //----收到一包      
            default:  ;
        }    
    } 
}

/*------------------------------------------
** 函数名称 :  Ini_Transmit( )
** 函数功能 :  接初始发送函数
** 输入     :  无
** 输出     :  无
-------------------------------------------*/
void Ini_Transmit( u8 channel )
{
    //----------------------------发射总字节数
    si446x_set_property( TXCnt,2);
    //-----------------------------发送
    si446x_gpio_pin_cfg( 0x00, 0x53,0x43,0x42,0x67,0,0,2 ) ;
    /* Reset TX FIFO */
    si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_TX_BIT,2);

    // Read ITs, clear pending ones
    si446x_get_int_status(0u, 0u, 0u,2);

    if( TXCnt > 56 )
    {
        /* Fill the TX fifo with datas */
        // si446x_write_tx_fifo(RadioConfiguration.Radio_PacketLength, pioFixRadioPacket);
        si446x_write_tx_fifo(56, TXBuff,2);
    }  
    else
    {
        /* Fill the TX fifo with datas */
        // si446x_write_tx_fifo(RadioConfiguration.Radio_PacketLength, pioFixRadioPacket);
        si446x_write_tx_fifo(TXCnt, TXBuff,2);
    }        
    
    /* Start sending packet, channel 0, START immediately, Packet length according to PH, go READY when done */
    si446x_start_tx(channel, 0x30,  TXCnt,2);    

    SentSucc = 0 ;  //-----发送成功
    
    SentType = 0 ;
}

一次不能全部填满,注意往里写的时候不要溢出了,否则丢数据.填到几乎满


你可能感兴趣的:(si4463)