ardx.jpg

https://github.com/OH1GIU-P/arduino-cc1120

CC1120 partnumber is 0x48.
SPI.begin/endTransaction removed. Write config register and read extended register.

void setup() {
  Serial.begin(9600);
  pinMode(RESET_PIN, OUTPUT);
  pinMode(SS_PIN, OUTPUT);
  digitalWrite(SS_PIN, HIGH);
  digitalWrite(RESET_PIN, HIGH);

  SPI.begin();

  strobeSPI(SNOP);  
  printStatus();

  uint8_t 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);
}

void writeSPI(uint8_t addr, uint8_t value) {
  digitalWrite(SS_PIN, LOW);
  ccstatus.v = SPI.transfer(addr);
  ccstatus.v = SPI.transfer(value);
  digitalWrite(SS_PIN, HIGH);
}

uint8_t readExtAddrSPI(uint8_t addr) {
  uint8_t v;
  digitalWrite(SS_PIN, LOW);
  ccstatus.v = SPI.transfer(R_BIT | EXT_ADDR);
  SPI.transfer(addr);
  v = SPI.transfer(0xff);
  digitalWrite(SS_PIN, HIGH);
  return v;
}


Write extended register

  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);

void writeExtAddrSPI(uint8_t addr, uint8_t value) {
  digitalWrite(SS_PIN, LOW);
  ccstatus.v = SPI.transfer(EXT_ADDR);
  ccstatus.v = SPI.transfer(addr);
  ccstatus.v = SPI.transfer(value);
  digitalWrite(SS_PIN, HIGH);
}

ardx2.jpg