搜索
bottom↓
回复: 2

RC522 读取寄存器便宜一个字节

[复制链接]

出0入0汤圆

发表于 2013-3-28 17:51:30 | 显示全部楼层 |阅读模式
使用MSP430SPI口读取RC522寄存器时出现错位,如下表
UART发送正常##########
测试SIP口通讯.....
RC522_REG[0x 0] = 0x1e
RC522_REG[0x 1] = 0x 0
RC522_REG[0x 2] = 0x20
RC522_REG[0x 3] = 0x80
RC522_REG[0x 4] = 0x 0
RC522_REG[0x 5] = 0x14
RC522_REG[0x 6] = 0x 0
RC522_REG[0x 7] = 0x 0
RC522_REG[0x 8] = 0x21
RC522_REG[0x 9] = 0x 0
RC522_REG[0x a] = 0x80
RC522_REG[0x b] = 0x 0
RC522_REG[0x c] = 0x 8
RC522_REG[0x d] = 0x10
RC522_REG[0x e] = 0x 0
RC522_REG[0x f] = 0xa0
RC522_REG[0x10] = 0x 0
RC522_REG[0x11] = 0x 0
RC522_REG[0x12] = 0x3f
RC522_REG[0x13] = 0x 0
RC522_REG[0x14] = 0x 0
RC522_REG[0x15] = 0x80
RC522_REG[0x16] = 0x 0
RC522_REG[0x17] = 0x10
RC522_REG[0x18] = 0x84
RC522_REG[0x19] = 0x84
RC522_REG[0x1a] = 0x4d
RC522_REG[0x1b] = 0x 0
RC522_REG[0x1c] = 0x 0
RC522_REG[0x1d] = 0x62
RC522_REG[0x1e] = 0x 0
RC522_REG[0x1f] = 0x 0
RC522_REG[0x20] = 0xeb
RC522_REG[0x21] = 0x 0
RC522_REG[0x22] = 0xff
RC522_REG[0x23] = 0xff
RC522_REG[0x24] = 0x88
RC522_REG[0x25] = 0x26
RC522_REG[0x26] = 0x87
RC522_REG[0x27] = 0x48
RC522_REG[0x28] = 0x88
RC522_REG[0x29] = 0x20
RC522_REG[0x2a] = 0x20
RC522_REG[0x2b] = 0x 0
RC522_REG[0x2c] = 0x 0
RC522_REG[0x2d] = 0x 0
RC522_REG[0x2e] = 0x 0
RC522_REG[0x2f] = 0x90
RC522_REG[0x30] = 0x6b
RC522_REG[0x31] = 0x 0
RC522_REG[0x32] = 0x 0
RC522_REG[0x33] = 0x 0
RC522_REG[0x34] = 0x80
RC522_REG[0x35] = 0x 0
RC522_REG[0x36] = 0x 0
RC522_REG[0x37] = 0x40
RC522_REG[0x38] = 0x91
RC522_REG[0x39] = 0x 0
RC522_REG[0x3a] = 0x 1
RC522_REG[0x3b] = 0x 2
RC522_REG[0x3c] = 0x88
RC522_REG[0x3d] = 0xff
RC522_REG[0x3e] = 0x 0
RC522_REG[0x3f] = 0x 3

unsigned char ReadRegRC1(unsigned char ucAddress)
{
  Spi_SendByte((ucAddress<<1)&0x7E|0x80);// 发送读取寄存器地址(最低位为0,中间6位为实际地址,最高位为1)
  return (Spi_RecvByte());  
}

void Spi_SendByte(unsigned char ucData)
{
  RC522_NSS_0();
  UCB0TXBUF = ucData;
  while ((IFG2 & UCB0TXIFG) == 0); // 等待一个字节发送完成
  RC522_NSS_1();
}

RC522官方手册中描述寄存器地址 0x37,是版本号。应该为0x91,但见上表。怎么跑到0x38去了????????????????????
9.3.4.8 VersionReg register
Shows the MFRC522 software version.
MFRC522 version 1.0 software version is: 91h.
MFRC522 version 2.0 software version is: 92h.

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2013-3-28 21:17:37 | 显示全部楼层
UART发送正常##########
测试SIP口通讯.....
RC522_REG[0x 0] = 0x 0
RC522_REG[0x 1] = 0x20
RC522_REG[0x 2] = 0x80
RC522_REG[0x 3] = 0x 0
RC522_REG[0x 4] = 0x14
RC522_REG[0x 5] = 0x 0
RC522_REG[0x 6] = 0x 0
RC522_REG[0x 7] = 0x21
RC522_REG[0x 8] = 0x 0
RC522_REG[0x 9] = 0xc2
RC522_REG[0x a] = 0x 0
RC522_REG[0x b] = 0x 8
RC522_REG[0x c] = 0x10
RC522_REG[0x d] = 0x 0
RC522_REG[0x e] = 0xa0
RC522_REG[0x f] = 0x 0
RC522_REG[0x10] = 0x 0
RC522_REG[0x11] = 0x3f
RC522_REG[0x12] = 0x 0
RC522_REG[0x13] = 0x 0
RC522_REG[0x14] = 0x80
RC522_REG[0x15] = 0x 0
RC522_REG[0x16] = 0x10
RC522_REG[0x17] = 0x84
RC522_REG[0x18] = 0x84
RC522_REG[0x19] = 0x4d
RC522_REG[0x1a] = 0x 0
RC522_REG[0x1b] = 0x 0
RC522_REG[0x1c] = 0x62
RC522_REG[0x1d] = 0x 0
RC522_REG[0x1e] = 0x 0
RC522_REG[0x1f] = 0xeb
RC522_REG[0x20] = 0x 0
RC522_REG[0x21] = 0xff
RC522_REG[0x22] = 0xff
RC522_REG[0x23] = 0x88
RC522_REG[0x24] = 0x26
RC522_REG[0x25] = 0x87
RC522_REG[0x26] = 0x48
RC522_REG[0x27] = 0x88
RC522_REG[0x28] = 0x20
RC522_REG[0x29] = 0x20
RC522_REG[0x2a] = 0x 0
RC522_REG[0x2b] = 0x 0
RC522_REG[0x2c] = 0x 0
RC522_REG[0x2d] = 0x 0
RC522_REG[0x2e] = 0x93
RC522_REG[0x2f] = 0xa9
RC522_REG[0x30] = 0x 0
RC522_REG[0x31] = 0x 0
RC522_REG[0x32] = 0x 0
RC522_REG[0x33] = 0x80
RC522_REG[0x34] = 0x 0
RC522_REG[0x35] = 0x 0
RC522_REG[0x36] = 0x40
RC522_REG[0x37] = 0x91
RC522_REG[0x38] = 0x 0
RC522_REG[0x39] = 0x27
RC522_REG[0x3a] = 0x 2
RC522_REG[0x3b] = 0x88
RC522_REG[0x3c] = 0xff
RC522_REG[0x3d] = 0x 0
RC522_REG[0x3e] = 0x 3
RC522_REG[0x3f] = 0x 0
现在可以了,但是奇怪的是。写寄存器为什么写不进去。大家帮我看看。

void WriteRawRC1(unsigned char ucAddress, unsigned char ucValue)
{
  Spi_SendByte((ucAddress<<1)&0x7E);  
  Spi_SendByte(ucValue);
  IFG2 &= ~UCB0TXIFG;  
}


/*****************************************************************************
** Function name:                Spi_RecvByte
**
** Descriptions:                通过UART接收一个字节数据
** parameters:                        buffer pointer, and data length
** Returned value:                None
**
*****************************************************************************/
unsigned char Spi_RecvByte(void)
{
  RC522_NSS_0();
  while((IFG2 & UCB0RXIFG) == 0);   // 等待接收一个字节数据
  RC522_NSS_1();
  return(UCB0RXBUF);
}

出0入0汤圆

 楼主| 发表于 2013-3-28 21:18:11 | 显示全部楼层
/*****************************************************************************
** Function name:                Spi_SendByte
**
** Descriptions:                通过UART输出一个BYTE的数据
** parameters:                        ucData
** Returned value:                None
**
*****************************************************************************/
void Spi_SendByte(unsigned char ucData)
{
  RC522_NSS_0();
  UCB0TXBUF = ucData;
  while ((IFG2 & UCB0TXIFG) == 0); // 等待一个字节发送完成
  RC522_NSS_1();
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 12:39

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表