예제 #1
0
파일: RF1100.c 프로젝트: examdog/cc1101
/* length: playload,不包括长度,地址,sum */
void Rf_master_send_packet(u1t addr, u1t length)
{
    u16 packet_size;
    u8 write_count;
    //if (rf_data.rf_state==RX_STATE_IDLE)
    {
        packet_size = length+4;       /* length+addr+playload+sum */
        rf_data.rf_buf[0] = addr;
        rf_data.length = length+3;    /* addr+playload+sum */
        Make_sum(&rf_data.length, rf_data.length-1);
        if (packet_size>FIFO_SIZE)
        {
            write_count = FIFO_SIZE;
        }
        else
        {
            write_count = packet_size;
        }
        //INTERRUPT_PROTECT_SAVE;
        Spi_Write_Strobe(CC_SIDLE);
        Spi_Write_Byte(CC_IOCFG0, 0x02);
        Spi_Write_Strobe(CC_SFRX);
        Spi_Write_Strobe(CC_SFTX);
        halRfWriteFifo(&rf_data.length, write_count);
        rf_data.index = write_count-1;  /* -length */
        Spi_Write_Strobe(CC_STX);
        //INTERRUPT_PROTECT_RESTORE;
        rf_data.rf_state = TX_STATE_TXING;
        // _timer_rx_timeout = TIME_RESET;
        //_flag_rx_timeout = FALSE;
    }
}
예제 #2
0
 //API write array bytes to register 
 void APIWriteArrayBytes(unsigned char *data,unsigned int length)
 { 
    unsigned int    i;
    unsigned char  *temp_ptr = data;
    for(i=0;i<length;i++)
    {
        Spi_Write_Byte(*temp_ptr++);
    }
 }
예제 #3
0
파일: RF1100.c 프로젝트: examdog/cc1101
u8 Spi_Write_Packet(unsigned char *Tx_buffer,unsigned char size,unsigned char  id)
{
    u16 send_ok=1;//i,
    //添加关GDO0中断函数
    //  RFC1100AON();                                  //功率开
    Spi_Write_Strobe(CC_SFTX);                  //清缓冲区
    Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
    //Spi_Write_Strobe(CC_STX);                   //进入接收模式
    Spi_Write_Byte(CC_TXFIFO,size+1);             //先送长度
    Spi_Write_Byte(CC_TXFIFO,0x02);
    Spi_Write_Burst(CC_TXFIFO,Tx_buffer,size);  //发送数据
    Spi_Write_Strobe(CC_STX);                   //发送模式
    // i = 0;
    while (GDO0_L)    ;                          //等待送出
#if 0
    {
        if (i > 50000)
        {
            send_ok=0;
            break;                        //限时等待
        }
        mydelay(1);
        i++;                                      //
    }
    i = 0;
#endif
    while (GDO0_H)        ;                      //送出完毕
#if 0
    {
        if (i > 50000)
        {
            send_ok=0;
            break;                        //限时等待
        }
        mydelay(1);
        i++;                                      //
    }
#endif
    Spi_Write_Strobe(CC_SFTX);                  //清缓冲区
    Spi_Write_Strobe(CC_SIDLE);                 //进入空闲
    Spi_Write_Strobe(CC_SRX);                   //进入接收模式
    //  RFC1100AOFF();
    return send_ok;
}
예제 #4
0
파일: RF1100.c 프로젝트: examdog/cc1101
void WriteRfSettings(void)
{
    Spi_Write_Byte (CC_IOCFG2,IOCFG2);          //
    Spi_Write_Byte (CC_IOCFG0,IOCFG0);        //

    //测试用
    //  Spi_Write_Byte (CC_IOCFG0,0X3E);        //
//   Spi_Write_Byte (CC_IOCFG2,0X3E);        //

    Spi_Write_Byte (CC_FIFOTHR,FIFOTHR);        //
    Spi_Write_Byte (CC_PKTLEN,PKTLEN);          //
    Spi_Write_Byte (CC_PKTCTRL1,PKTCTRL1);      //
    Spi_Write_Byte (CC_PKTCTRL0,PKTCTRL0);      //可变数据包长度模式。通过同步字后首字节配置的数据包长度

    Spi_Write_Byte (CC_ADDR,DEVICEADDR);

    Spi_Write_Byte (CC_CHANNR,CHANNR);          //
    Spi_Write_Byte (CC_FSCTRL1,FSCTRL1);        //
    Spi_Write_Byte (CC_FSCTRL0,FSCTRL0);        //
    Spi_Write_Byte (CC_FREQ2,FREQ2);            //
    Spi_Write_Byte (CC_FREQ1,FREQ1);            //
    Spi_Write_Byte (CC_FREQ0,FREQ0);            //
    Spi_Write_Byte (CC_MDMCFG4,MDMCFG4);        //
    Spi_Write_Byte (CC_MDMCFG3,MDMCFG3);        //
    Spi_Write_Byte (CC_MDMCFG2,MDMCFG2);        //
    Spi_Write_Byte (CC_MDMCFG1,MDMCFG1);        //
    Spi_Write_Byte (CC_MDMCFG0,MDMCFG0);        //
    Spi_Write_Byte (CC_DEVIATN,DEVIATN);        //
    Spi_Write_Byte (CC_MCSM0,MCSM0);            //
    Spi_Write_Byte (CC_FOCCFG,FOCCFG);          //
    Spi_Write_Byte (CC_BSCFG,BSCFG);            //
    Spi_Write_Byte (CC_AGCCTRL2,AGCCTRL2);      //
    Spi_Write_Byte (CC_AGCCTRL1,AGCCTRL1);      //
    Spi_Write_Byte (CC_AGCCTRL0,AGCCTRL0);      //
    Spi_Write_Byte (CC_FREND1,FREND1);          //
    Spi_Write_Byte (CC_FREND0,FREND0);          //
    Spi_Write_Byte (CC_FSCAL3,FSCAL3);          //
    Spi_Write_Byte (CC_FSCAL2,FSCAL2);          //
    Spi_Write_Byte (CC_FSCAL1,FSCAL1);          //
    Spi_Write_Byte (CC_FSCAL0,FSCAL0);          //
    Spi_Write_Byte (CC_FSTEST,FSTEST);          //
    Spi_Write_Byte (CC_TEST2,TEST2);            //
    Spi_Write_Byte (CC_TEST1,TEST1);            //
    Spi_Write_Byte (CC_TEST0,TEST0);            //
}
예제 #5
0
 //API Write a byte to register
 void APIWriteByte(unsigned char data)
 {
    Spi_Write_Byte(data);
 }
예제 #6
0
 //spi read byte
 unsigned char Spi_Read_Byte(void)
 {
	Spi_Write_Byte(0x00);
	return SPI1BUF;
 }