Interfacing AD7321 ADC with Arduino using SPI
You did a good job asking your question here. Its always encouraging to see a well formed Q where research has already been done. 

In my first comment I suggested reading the datasheet, I should have added "carefully" because ICs are usually complex and can easily "getcha".

The ADC is capable of producing codes in 2 different formats:


Straight counts
2s Complement


Take note of how the output codes change with each mode, depicted here:


In Straight Binary case, the counts will map to voltages: -FS/2 -> 0, 0V -> ~4096, +FS/2 -> 8191

In 2's complement case, the counts will map to voltages: -FS/2 -> -4096, 0V ->~0, +FS/2 -> 4095

Which coding the ADC uses depends on the value set in the CONTROL REGISTER. You've selected the straight coding format. 

  digitalWrite(CS_PIN, LOW);
  SPI.transfer(0b10000000);  //Defines control register -&gt; | Write (1) | 0 | Register Select (0) | 0 | 0 | ADD0 | Mode1 | Mode0 |
  SPI.transfer(0b00110000);  // | PM1 | PM0 | **Coding** | Ref | Seq1 | Seq2 | 0 | 0 |
  digitalWrite(CS_PIN, HIGH);


Your code selects the "straight count" method, meaning it will map 0V to approximately 4096 counts, which it is. Try the other configuration and see how that works for you.