|
发表于 2016-2-22 16:22:28
26379 浏览 13 回复
4412开发板rfid(spi)模块问题
在使用SCP精英版大内存开发板时出现问题:
我用 4412开发板资料\iTOP4412开发板资料汇总(不含光盘内容)\iTOP-4412开发板系统源码及镜像(其他)\小模块的测试程序\RFID\rfidtest.rar 这个程序操作spi时发现管脚波形跟我想象的不一样。我直接运行rfidtest那个程序(为了方便观察波形,把cardreader.ReadCardNum()这个函数循环多次连续调用,不然按一次recv只出现很短时间的话示波器观察不到)。然后得到这张示波器波形图。问题主要是在调用read函数时,会多出一组不应该出现的clk。
这个现象在我的开发板上一直出现,包括我通过ioctl函数修改了通信频率、通信数据的长度等等参数后都存在,而且在一些情况下多出来的那一组clk会延伸到cs置为高电平之后,造成整个通讯的错误。
第二张是使用2Mhz,32位数据长度时跟FPGA通讯,在fpga端读到的,左边那个是read函数,可一看到多出来的一组clk已经延伸到cs置成高电平之后了[img]file:///C:\Users\鸣威\Documents\Tencent Files\1436895767\Image\C2C\3NB[A}W4REMQG~MH4SA~4A9.png[/img](多出来的这组clk在我把数据长度设成32位后也变成了32位)。
我是想拿jni里调用的read、write函数直接当做spi对外读写,就像串口那样,我试过基本是对的,就是读的过程结束之后最后会多出图片里那种clk.
比如我在我的程序里连续读了32*n个数据(此期间cs是低电平),读完之后,在cs跳变到高电平之前会出现一组32个clk的波形,不论n多长或者多短(哪怕=1)都会出现一组32个clk。而我的数据如果选择八位的通讯模式则会出现一组8位的clk
。上面的两个图就是这个现象(当然这两个图里读的长度分别是8*1和32*1)
而write函数直接用就是对的。
这组多出的clk可以复现,关键是多的这组信号虽然长度是固定的,但是会有一部分在cs低电平里,一部分在cs高电平里,多的这个东西和cs上升沿的相对位置会变化,就带来很多麻烦,而且按照spi协议来说不应该有这个。
而且数据和时钟是对的,这个多出来的东西纯粹是多余的。
麻烦大家看看这个是不是个例,或者有没有其它版本的固件可以使用spi或者rfid模块
[img]file:///C:\Users\鸣威\Documents\Tencent Files\1436895767\Image\C2C\@0PV4OAYKG[`2~_R1B0O92X.jpg[/img]
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
|
|
|
|
|
|
|
楼主|
发表于 2016-2-22 16:39:09
|
|
|
|
|
|
|
先不要太急,看到帖子之后就在研究,这个问题设计的面比较多 |
|
|
|
|
|
|
|
楼主|
发表于 2016-2-23 11:25:42
|
|
|
|
|
|
|
楼主|
发表于 2016-2-23 15:50:48
对了,请问怎么在4.4的系统里启用rfid或者spi啊 |
|
|
|
|
|
|
|
4.4也是一样的~
不过你的APK需要重新基于Android4.4版本编译一下 |
|
|
|
|
|
|
|
楼主|
发表于 2016-2-24 08:42:45
我的4.4系统里没有rc522或者spidev的设备号啊,我之前按照“iTop4412驱动实验手册”里讲的,对照着4.0.3的系统修改menuconfig、makefile、mach-itop4412.c等,注册上了设备可是运行的时候还是打不开设备,不能运行,请问迅为有把rc522注册进系统的4.4版本镜像吗? |
|
|
|
|
|
|
|
你检查可以对比一下那部分的源码~
spi总线应该都支持的 |
|
|
|
|
|
|
|
楼主|
发表于 2016-2-24 09:44:29
应该是都支持的,不过由于我水平不够,可能有些地方改了有些地方没改,所以看起来好像设备已经注册好了,但是其实用不起来......所以希望你们能给个注册好的版本或者给个教程,都需要修改哪些地方。。因为spi是总线可能和普通的字符设备不一样? |
|
|
|
|
|
|
|
嵌入式中常用的四大总线i2c,can,spi,usb,底层的驱动协议都是linux系统自带做好的
即使作为驱动工程师,最多就是学习它们的调用~
大多数工程师都不用花费太多时间去专研底层的。
|
|
|
|
|
|
|
登录或注册
扫一扫关注迅为公众号
|