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 ;
}
一次不能全部填满,注意往里写的时候不要溢出了,否则丢数据.填到几乎满