RC522在S5PV210处理器上的linux驱动调试(3)

现在到上层的rc522测试程序的编写了。

首先列几篇博文参考

http://blog.csdn.net/fulinus/article/details/40898677

http://blog.csdn.net/WANG__RONGWEI/article/details/50717883

http://download.csdn.net/detail/wang__rongwei/9440094

http://blog.csdn.net/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()  ----- */


这个函数首先是写了一个地址,然后读取数据,这儿有一个问题,在写完成之后,驱动底层的片选CS就会重新拉高了,然后再read,cs片选再被拉低。但是在单片机的RC522程序中,在向一个地址读取数值的时候,先发再收,这个过程CS会始终拉低,所以这个函数是无法完成寄存器的读操作的。对此我深信不疑。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值