If this is a single value (scalar), the energy edges are read from the corresponding ct_edges table in the dbase. To see a description of the codes, look at the file $SSW/hessi/dbase/energy_binning.txt.
If it is a 1D array with M values, it considers each value as the edge of a (contiguous) energy channel (therefore there will be M-1 energy bins).
If it is a 2 x N array, then each 2-element vector is a separate energy channel, and the resulting spectrum has N energy bins.
If sp_chan_binning is not 0, then sp_chan_binning takes precedence over sp_energy_binning.