示例#1
0
文件: NRF.c 项目: C47D/nRF24_Rx
void NRF_ReadSingleRegister(uint8_t reg, uint8_t* data){
    SPI_ClearRxBuffer();
    Control_Write(0);
    SPI_WriteTxData(NRF_R_REGISTER | reg);
    SPI_WriteTxData(NRF_NOP);
    while(!(SPI_ReadTxStatus() & SPI_STS_SPI_IDLE));
    Control_Write(1);
    (void)SPI_ReadRxData(); /* Dummy read, this is the STATUS Register */
    *data = SPI_ReadRxData();
    
    return;
}
示例#2
0
// Read short register
uint8 zigbee_short_read(uint8 adr)
{
    adr = adr << 1;								// Setup address for read
    SPI_WriteTxData(adr);						// Send SPI address
    SPI_WriteTxData(0x00);                      // Send dummy byte for read
    while( !(SPI_ReadTxStatus() & 0x01));       // while not: SPI-done, wait
    return SPI_ReadRxData();					// Read SPI data
}
示例#3
0
文件: NRF.c 项目: C47D/nRF24_Rx
void NRF_ReadMultipleRegister(uint8_t reg, uint8_t* bufIn , uint8_t bufSize){
	uint8_t i = 0, j = 0;
	
    SPI_ClearRxBuffer();
    Control_Write(0);
    SPI_WriteTxData(NRF_R_REGISTER | reg);
    for(; i < bufSize; i++){
        SPI_WriteTxData(NRF_NOP);
    }
    (void)SPI_ReadRxData(); /* Dummy read, this is the STATUS Register */
    for(; j < bufSize; j++){
        *(bufIn + j) = SPI_ReadRxData();
    }
    while(!(SPI_ReadTxStatus() & SPI_STS_SPI_IDLE));
    Control_Write(1);
    
    return;
}
示例#4
0
文件: NRF.c 项目: C47D/nRF24_Rx
/**
 * @brief Funcion para obtener el registro STATUS.
 * @return  Valor del registro STATUS.
 */
uint8_t NRF_GetStatus(void){
    SPI_ClearRxBuffer();
    Control_Write(0);
    SPI_WriteByte(NRF_NOP);
    while(!(SPI_ReadTxStatus() & SPI_STS_SPI_IDLE));
    Control_Write(1);
    
	return (uint8_t)SPI_ReadRxData();  
}
示例#5
0
// Read long register
uint8 zigbee_long_read(uint16 adr)
{
    uint8 adrMSB, adrLSB;
    adr = (adr << 5) | (1 << 15);				// Setup address for read
    adrMSB = adr >> 8;							// Setup address MSB
    adrLSB = adr;								// Setup address LSB
    SPI_WriteTxData(adrMSB);					// Send SPI address MSB
    SPI_WriteTxData(adrLSB);					// Send SPI address LSB
    SPI_WriteTxData(0x00);                      // Send dummy byte for read
    while( !(SPI_ReadTxStatus() & 0x01));       // while not: SPI-done, wait
    return SPI_ReadRxData();					// Read SPI data
}