本帖最后由 lyh123456 于 2013-4-19 15:32 编辑
单片机为STC12C5608AD,发送程序如下
//--------------------------CC1100发送数据包,第一个字节表示后面数据的长度,不包括长度字节本身
BYTE CC110x_RfSendPacket(BYTE *Buf)
{
BYTE result = 0;
CC110x_RX_INT_SW(DISABLE);//关接收/发送中断,中断口为INT1,连接GDO0
delay1ms(3);
UartSendBYTE(CC110x_WriteBurstReg(ADDR_TXFIFO, Buf, Buf[0]+1));//写入要发送的数据,Buf第一字节表示后面数据的长度,不包括本身,ADDR_TXFIFO为0X3F,
//函数返回值为0X0F;
CC110x_GetState();//查询芯片状态,返回值为00,表示空闲状态
CC110x_SpiStrobe(SRE_STX);//进入发送模式发送数据,SRE_STXO为0X35
CC110x_GetState();//查询芯片状态,返回值为40,表示频率合成器校准运行中
while(!CC110x_GET_GDO0());
CC110x_GetState();//查询芯片状态,返回值为20,表示处于发送模式
while(CC110x_GET_GDO0());
result = 1;
CC110x_GetState();//查询芯片状态,返回值为00,表示空闲状态
CC110x_SpiStrobe(SRE_SFTX);//冲洗发送缓冲区,SRE_SFTX为0X3B
CC110x_GetState();//查询芯片状态,返回值为00,表示空闲状态
CC110x_SetRxMode();
CC110x_RX_INT_SW(ENABLE); //接收中断有效
return result;
}
程序调了几天也没调好,上面CC110x_GetState();函数是调试加上来的,程序可以运行,函数返回值为1,就是没有数据发送出去,十分不解,希望各位帮忙指导一下,十分感谢!也可加QQ:1527491005详聊 |