/* 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; } }
//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++); } }
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; }
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); // }
//API Write a byte to register void APIWriteByte(unsigned char data) { Spi_Write_Byte(data); }
//spi read byte unsigned char Spi_Read_Byte(void) { Spi_Write_Byte(0x00); return SPI1BUF; }