现在到上层的rc522测试程序的编写了。
首先列几篇博文参考
http://blog.youkuaiyun.com/fulinus/article/details/40898677
http://blog.youkuaiyun.com/WANG__RONGWEI/article/details/50717883
http://download.youkuaiyun.com/detail/wang__rongwei/9440094
http://blog.youkuaiyun.com/vanbreaker/article/details/7737833
在做这个过程中,我阅读了大量的博文和书,有些博文给我很多引导,但是也有很多博文带我走了弯路,浪费了大量的时间,这也不是怪人家的博文,而是每个人所使用的平台不一样,导致了遇到的问题不一样,要处理的问题也不一样。
我所参考的代码是第一篇博文的代码,注意其提供的代码是应用层代码,使用的驱动程序是我上一篇文章写的spidev.c。
其提供的开源码,参考意义极大,可以省去很多麻烦,但是我也可以明确的说,这个源码在我所使用的S5PV210上是不能用的,某种程度上说,我怀疑这个源码在之前那些博主的实践中肯定也出现了问题,我不相信其实现了功能。
这个源码有一个小错误,编译时大家会发现,但是最重要的问题是rc522.c文件中的read_reg函数是无法实现的,这个是最基础的读寄存器的数据的函数。
void read_reg (unsigned char addr, unsigned char *data)
{
int status = MI_ERR;
addr = ((addr << 1) & 0x7E) | 0x80;
memset(data, 0, sizeof(unsigned char));
status = write(fd, &addr, 1);
if(status < 0)
{
pabort("can't write byte to device");
}
status = read(fd, data, 1);
if(status < 0)
{
pabort("can't read byte form device");
}
} /* ----- End of read_reg() ----- */