/**************************************************************** *FUNCTION NAME:SpiWriteReg *FUNCTION :CC1101 write data to register *INPUT :addr: register address; value: register value *OUTPUT :none ****************************************************************/ void ELECHOUSE_CC1101::SpiWriteReg(byte addr, byte value) { digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(addr); SpiTransfer(value); digitalWrite(SS_PIN, HIGH); }
/**************************************************************** *FUNCTION NAME:SpiReadStatus *FUNCTION :CC1101 read status register *INPUT :addr: register address *OUTPUT :status value ****************************************************************/ byte ELECHOUSE_CC1101::SpiReadStatus(byte addr) { byte value,temp; temp = addr | READ_BURST; digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(temp); value=SpiTransfer(0); digitalWrite(SS_PIN, HIGH); return value; }
/**************************************************************** *FUNCTION NAME:SpiReadReg *FUNCTION :CC1101 read data from register *INPUT :addr: register address *OUTPUT :register value ****************************************************************/ byte ELECHOUSE_CC1101::SpiReadReg(byte addr) { byte temp, value; temp = addr|READ_SINGLE; digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(temp); value=SpiTransfer(0); digitalWrite(SS_PIN, HIGH); return value; }
/**************************************************************** *FUNCTION NAME:SpiReadBurstReg *FUNCTION :CC1101 read burst data from register *INPUT :addr: register address; buffer:array to store register value; num: number to read *OUTPUT :none ****************************************************************/ void ELECHOUSE_CC1101::SpiReadBurstReg(byte addr, byte *buffer, byte num) { byte i,temp; temp = addr | READ_BURST; digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(temp); for(i=0;i<num;i++) { buffer[i]=SpiTransfer(0); } digitalWrite(SS_PIN, HIGH); }
/**************************************************************** *FUNCTION NAME:SpiStrobe *FUNCTION :CC1101 Strobe *INPUT :strobe: command; //refer define in CC1101.h// *OUTPUT :none ****************************************************************/ void ELECHOUSE_CC1101::SpiStrobe(byte strobe) { digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(strobe); digitalWrite(SS_PIN, HIGH); }
void LcdWriteByte(Spi* s1, uint8_t c) { uint8_t txBuf[1]; uint8_t rxBuf[1]; txBuf[0] = c; if (!SpiTransfer(s1, txBuf, rxBuf, 1)) { //printf("Err: %i\n", errno); } }
/**************************************************************** *FUNCTION NAME:Reset *FUNCTION :CC1101 reset //details refer datasheet of CC1101/CC1100// *INPUT :none *OUTPUT :none ****************************************************************/ void ELECHOUSE_CC1101::Reset (void) { digitalWrite(SS_PIN, LOW); delay(1); digitalWrite(SS_PIN, HIGH); delay(1); digitalWrite(SS_PIN, LOW); while(digitalRead(MISO_PIN)); SpiTransfer(CC1101_SRES); while(digitalRead(MISO_PIN)); digitalWrite(SS_PIN, HIGH); }
void ADXL362_WriteReg(char addr, char data) { u8 tx_buffer[3]; u8 rx_buffer[3]; tx_buffer[0] = 0x0A; tx_buffer[1] = addr; tx_buffer[2] = data; rx_buffer[0] = 0x00; rx_buffer[1] = 0x00; rx_buffer[2] = 0x00; SpiTransfer(ACCEL_ADXL362, tx_buffer, rx_buffer, 3); }