RX
void setup() {
Serial.begin(9600);
pinMode(RESET_PIN, OUTPUT);
pinMode(SS_PIN, OUTPUT);
pinMode(GDO0_PIN, INPUT); // ccRF3 GDO0 pin
digitalWrite(SS_PIN, HIGH);
digitalWrite(RESET_PIN, HIGH);
SPI.begin();
strobeSPI(SNOP);
printStatus();
// CRC off
uint8_t v = readSPI(PKT_CFG1);
bitClear(v, 2);
bitClear(v, 3);
writeSPI(PKT_CFG1, v);
// SYNC off
v = readSPI(SYNC_CFG0);
bitClear(v, 2);
bitClear(v, 3);
bitClear(v, 4);
writeSPI(SYNC_CFG0, v);
writeSPI(IOCFG0, RXFIFO_THR_PKT); // ccRF3 GDO0 pin configured for #define RXFIFO_THR_PKT 0x01
writeSPI(SYNC_CFG1, SMARTRF_SETTING_SYNC_CFG1);
writeSPI(MODCFG_DEV_E, SMARTRF_SETTING_MODCFG_DEV_E);
writeSPI(DCFILT_CFG, SMARTRF_SETTING_DCFILT_CFG);
writeSPI(PREAMBLE_CFG1, SMARTRF_SETTING_PREAMBLE_CFG1);
writeSPI(IQIC, SMARTRF_SETTING_IQIC);
writeSPI(CHAN_BW, SMARTRF_SETTING_CHAN_BW);
writeSPI(MDMCFG0, SMARTRF_SETTING_MDMCFG0);
writeSPI(SYMBOL_RATE2, SMARTRF_SETTING_SYMBOL_RATE2);
writeSPI(AGC_REF, SMARTRF_SETTING_AGC_REF);
writeSPI(AGC_CS_THR, SMARTRF_SETTING_AGC_CS_THR);
writeSPI(AGC_CFG1, SMARTRF_SETTING_AGC_CFG1);
writeSPI(AGC_CFG0, SMARTRF_SETTING_AGC_CFG0);
writeSPI(FIFO_CFG, SMARTRF_SETTING_FIFO_CFG);
writeSPI(FS_CFG, SMARTRF_SETTING_FS_CFG);
writeSPI(PKT_CFG0, SMARTRF_SETTING_PKT_CFG0);
writeSPI(PA_CFG2, SMARTRF_SETTING_PA_CFG2);
writeSPI(PA_CFG0, SMARTRF_SETTING_PA_CFG0);
writeSPI(PKT_LEN, SMARTRF_SETTING_PKT_LEN);
writeExtAddrSPI(IF_MIX_CFG, SMARTRF_SETTING_IF_MIX_CFG);
writeExtAddrSPI(FREQOFF_CFG, SMARTRF_SETTING_FREQOFF_CFG);
writeExtAddrSPI(FREQ2, SMARTRF_SETTING_FREQ2);
writeExtAddrSPI(FREQ1, SMARTRF_SETTING_FREQ1);
writeExtAddrSPI(FS_DIG1, SMARTRF_SETTING_FS_DIG1);
writeExtAddrSPI(FS_DIG0, SMARTRF_SETTING_FS_DIG0);
writeExtAddrSPI(FS_CAL1, SMARTRF_SETTING_FS_CAL1);
writeExtAddrSPI(FS_CAL0, SMARTRF_SETTING_FS_CAL0);
writeExtAddrSPI(FS_DIVTWO, SMARTRF_SETTING_FS_DIVTWO);
writeExtAddrSPI(FS_DSM0, SMARTRF_SETTING_FS_DSM0);
writeExtAddrSPI(FS_DVC0, SMARTRF_SETTING_FS_DVC0);
writeExtAddrSPI(FS_PFD, SMARTRF_SETTING_FS_PFD);
writeExtAddrSPI(FS_PRE, SMARTRF_SETTING_FS_PRE);
writeExtAddrSPI(FS_REG_DIV_CML, SMARTRF_SETTING_FS_REG_DIV_CML);
writeExtAddrSPI(FS_SPARE, SMARTRF_SETTING_FS_SPARE);
writeExtAddrSPI(FS_VCO0, SMARTRF_SETTING_FS_VCO0);
writeExtAddrSPI(XOSC5, SMARTRF_SETTING_XOSC5);
writeExtAddrSPI(XOSC1, SMARTRF_SETTING_XOSC1);
v = readSPI(CHAN_BW);
Serial.print(F("CHAN_BW "));
Serial.println(v, HEX);
writeSPI(CHAN_BW, 0x18);
v = readSPI(CHAN_BW);
Serial.print(F("CHAN_BW "));
Serial.println(v, HEX);
v = readExtAddrSPI(PARTVERSION);
Serial.print(F("PARTVERSION "));
Serial.println(v, HEX);
v = readExtAddrSPI(PARTNUMBER);
Serial.print(F("PARTNUMBER "));
Serial.println(v, HEX);
v = readExtAddrSPI(FREQ1);
Serial.print(F("FREQ1 "));
Serial.println(v, HEX);
writeExtAddrSPI(FREQ1, 0x16);
v = readExtAddrSPI(FREQ1);
Serial.print(F("FREQ1 "));
Serial.println(v, HEX);
strobeSPI(SRX);
delay(5);
v = readExtAddrSPI(MARCSTATE);
Serial.print(F("MARCSTATE "));
Serial.println(v, BIN);
}
ccRF3 GDO0 pin configured for #define RXFIFO_THR_PKT 0x01
5:0 GPIO0_CFG 0x3C R/W Output selection
Default: EXT_OSC_EN
uint8_t checkRX() {
if (digitalRead(GDO0_PIN)) {
while (digitalRead(GDO0_PIN));
return 1;
}
else {
return 0;
}
}
Kommentit
Tämän blogin kommentit tarkistetaan ennen julkaisua.