Please post your init and reading functions.
Hang up during init function could be due to a wrong SPI setting : clock too fast or wrong CPOL setting.
I've also experienced these issues last weeks, do you have a logic analyser, it helps a lot to debug SPI problems.
Edit : one more trick, if you use other SPI devices in your project, these could have different SPI settings.
You should save the SPI settings in use before applying new ones and restore them afterwards.
This has to be done for each SPI function ( init and reading ) you're going to use.