Uf... jodido jodido, todos los ejemplos que mostraste son hechos con SPI a mano ( soft ).
Y lo unico que deberias de tocar y cambiar es la funcion de escribir un byte por hw en ves de software.
En el .zip que pasaste hay muchisimos archivos. hay como 3/4 todos sobre el RC522
Normalmente lo que yo hago es tener un .c con todas las funciones y un .h con los prototipos, alli cargo solo 1 solo .h por libreria.
Sin embargo, de ahí solo entiendo que la señal NSS debe ser BAJA para poder envíar una serie de byts en un flujo de datos.
NSS parece ser como CS chip select. Y cada "transaccion" sea escribir o leer deberian estar separadas por un pulso alto en el NSS
A partir del datasheet del módulo no comprendo bien qué modo SPI(CKP,CPHA)
Parece ser:
CKP = 0 , CKE = 1 y SMP = 1
Es decir primero cambia el bit de datos y luego por flanco positivo es validado ese dato
Fijate en ambos datasheet los diagramas de tiempo
Claramente el problema esta en el SPI, los tiempos parecen estar. Ya que RC522 exigue el reloj maximo de 50ns+50ns = 100ns -> 10Mhz
Y teniendo un cristal+PLL al maximo que es 40Mhz si lo dividis por 4 estas en el maximo.
Primero proba con una velocidad mas lenta. y luego a renegar con esas funciones, podrias probar hacer una funcion simple y ver si realmente te responde como debe el SPI y no tratar de hacer funcionar toda la libreria de golpe.
Tal ves al no recibir todos los bits no activa el bit BF...