1) подстройку частоты синтезатора (FSCTRL0) лучше делать после приема каждого пакета, причем нужно складывать то что получено из FREQEST с текущим значением FSCTRL0, а потом писать обратно
2) этот микросхем обладает неприятной особенностью - если плохо припаяна нижняя площадка, SPI вроде работает, трансивер программируется и отвечает, даже как бы синтезатор калибруется, но, то ли он отрубается в начале передачи, то ли еще что... Не работает в общем. Поэтому нужно обязательно вводить таймаут на передачу, длительность которого зависит от скорости. Иначе зависнешь.
А код вообще не читаемый =( я бы постеснялся такое выкладывать.