打印

MF RC500怎么选择页寄存器

[复制链接]
6948|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
mage心寒|  楼主 | 2012-2-13 16:50 | 只看该作者
没人嘛。。。anybody here????????

使用特权

评论回复
板凳
forgot| | 2012-2-13 18:18 | 只看该作者
MF RC50 0共有64个寄存器,,8个寄存器为一页,每页的第一个寄存器为页寄存器,其设置如图4所示。其地址分别为0x00,0",Ox10,Ox18,Ox20,Ox28,Ox30,Ox38o其初始值均为10000000,0x80。页寄存器用于选择寄存器页,通过对该寄存器的设置可以确定对本页内寄存器的寻址方式。

将 Use PageSelect位置1,则可对本页内的寄存器寻址,PageSelect的内容作为寄存器地址的A5、A4、A3此3位可以寻址8页,每页有7个寄存器,可由A2、A1、Ao来选择。该位置0,则寄存器地址由内部地址锁存器的全部内容来决定。本文对寄存器的寻址使用的是MF RC500手册给出的寄存器的绝对地址,所以各页的页寄存器该位一律置0.

使用特权

评论回复
地板
ups888| | 2012-2-14 10:38 | 只看该作者
本帖最后由 ups888 于 2012-2-14 14:34 编辑

rt

使用特权

评论回复
5
mage心寒|  楼主 | 2012-2-14 11:16 | 只看该作者
首先谢谢楼上的,我知道用地址寻址,就是有点不懂,按说MFRC500有FIFO,可以通过A2 A1 A0先选择页然后选择页里面的一个寄存器,可是datasheet上也没具体说就说用到分页机制不知道啥玩意,楼上的是用SPI与MCU互联与射频芯片通信的,我没打算用SPI,所以你的看起来有点乱,可以用文字具体说明下怎么选择页的嘛???

使用特权

评论回复
6
ups888| | 2012-2-14 11:27 | 只看该作者
从没用过你说的页,那个FIFO是射频收发数据的FIFO,不是寄存器的

使用特权

评论回复
7
mage心寒|  楼主 | 2012-2-14 11:33 | 只看该作者
MFRC500有八页,每页有八个寄存器,一共64个,但只有A2 A1 A0三根地址线。。

使用特权

评论回复
8
xzsxiao213| | 2012-2-14 12:40 | 只看该作者
你下飞利浦的官方RC500的源码(网上随便搜得到),看里面就知道怎么操作了,

使用特权

评论回复
9
xzsxiao213| | 2012-2-14 12:49 | 只看该作者
仔细阅读RC500 datasheet的第4节,关于接口的选择,选择复用地址总线,一般都是A2直接接地,A0和A1接5V,之后对于寄存器的操作很简单,如下(注意片选信号,没有冲突的情况下,片选可以直接接地)
#define ReadIO(addr)         XBYTE[0xFF00 + addr]
#define WriteIO(addr, value)          XBYTE[0xFF00 + addr] = value

使用特权

评论回复
10
mage心寒|  楼主 | 2012-2-14 14:02 | 只看该作者
楼上的代码我有,这里的0xff00啥意思。。我用的是独立的地址总线,先不管这个,0XFF00啥意思啊。。

使用特权

评论回复
11
xzsxiao213| | 2012-2-14 17:13 | 只看该作者
0xff00是一个偏移地址, 高低字节分别对应P2和P0,在没有地址重叠的情况下,可以不用0xff00

使用特权

评论回复
12
来与君| | 2012-2-14 17:29 | 只看该作者
本帖最后由 来与君 于 2012-2-14 17:31 编辑

3楼的文字写的很清楚,不过读起来有点拗口。

分页访问主要是针对地址线较少的条件,如果地址线足够多,是不必分页的。

分页与否与页寄存器的当前值有关:如果页寄存器的Use PageSelect位为0,则可组合芯片的片选确定64个寄存器的地址范围,直接访问;
如果页寄存器的Use PageSelect位为1,则需要分两步才能写入期望的寄存器。第一步写页寄存器选择页,第二步写入该页内寄存器,间接访问。

看飞利浦的例子源代码,一分钟就搞清楚了。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
mage心寒 + 1
13
mage心寒|  楼主 | 2012-2-14 17:32 | 只看该作者
就三根地址线怎么给??

使用特权

评论回复
14
mage心寒|  楼主 | 2012-2-14 17:34 | 只看该作者
之前对SRAM读写的时候,它的地址跟单片机地址线正好可以接在一起,可以直接寻址这个咋搞??不懂,,,可以说的详细点嘛。。。项目要用。。现在用的是现成的模块。。

使用特权

评论回复
15
mage心寒|  楼主 | 2012-2-15 11:33 | 只看该作者
人来。。。:dizzy:

使用特权

评论回复
16
mage心寒|  楼主 | 2012-2-15 15:00 | 只看该作者
13# 来与君
不好意思忘了。。你的这也有用。。谢谢。。

使用特权

评论回复
17
mage心寒|  楼主 | 2012-2-15 15:03 | 只看该作者
顺便谁有代码给发下。。网上下载要积分没有。。:'(  591652256@qq.com

使用特权

评论回复
18
yuandm1| | 2012-3-30 14:34 | 只看该作者
不知道楼主是不是解决了,我现在也遇到这样的问题   A0,A1,A2,是通过外部管脚来设置的,用于页内寻址,这个没啥问题。A3,A4,A5,在每个页的第一个寄存器里面设置(地址为0x00,0x08,0x10,0x18...),用于选择对哪一页操作,问题来了,一开始比如我想写第二页的第2个寄存器(0x11)。要把外部A0,A1,A2管脚置成100.把第二页的page寄存器(0x08)相应的A3.A4,A5写入100.那怎么才能对page(0x08写入数据呢)?????

使用特权

评论回复
19
mage心寒|  楼主 | 2012-4-13 17:24 | 只看该作者
19# yuandm1

如果是单片机的话可以用复用地址的也就是说A0-A2不用,用AD0-AD5,当做地址线,数据线就是AD0-AD7..我就是用单片机测试的,然后也是用ARMIO模拟的,我现在也搞不懂哪三个角是怎么测试的。。:Q

使用特权

评论回复
20
liugen21cn| | 2012-6-12 09:38 | 只看该作者
这个是根据具体电路来选择的,如果电路采用地址总线模式的话(我的电路采用的是复用地址总线+独立读写选通模式),采用的是寄存器内部地址。需要把页寄存器的Use PageSelect位为0,则可组合芯片的片选确定64个寄存器的地址范围,直接访问;
就可以了,如果你需要的是其他的电路接法的话,专用地址总线的话,就是页寄存器的Use PageSelect位为1,则需要分两步才能写入期望的寄存器。第一步写页寄存器选择页,第二步写入该页内寄存器,间接访问
这个只是个人意见,可能有错,单出搞这个也花了一段时间。呵呵
强烈推荐:如果想弄明白,就去肯RC500的说明书,现在网上很多程序都是第一种。可以参考

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

1019

帖子

13

粉丝