
我在使用stm32作为微控制器尝试控制ST25R3911B(用的自己画的板子)去读nfc卡片的ID 写完代码SPI能够正常通信去读出芯片的寄存器 但是ST25R3911B板子上的外部无源晶振无法起振。我阅读了手册之后发现跟晶振起振有关的相关配置就两个一个是00h寄存器 选择OSC的频率这个我在初始化前就配置好了13.56MHZ 系统上电默认的是27.12MHZ 然后就是0X02h的寄存器的第七位en位是使能振荡器这个也配置了 所以我认为基本可以排除软件问题了。然后我跟队伍的硬件手几乎是把整个电路板的硬件翻了底朝天查了好几遍也没能找到问题,硬件认为我少配置了东西,但是我认为配置好这两个就够了,去翻官方demo写的很复杂我没有看懂。在此想请教大佬们可能是什么问题 这是我工程中主要代码 st25r3911ModifyRegister(0x00, 0x08, 0x00); // 清除 bit3,osc=0 Ini=rfalInitialize(); Ini = rfalNfcInitialize(); Ini=rfalFieldOnAndStartGT(); Ini=rfalSetMode(RFAL_MODE_POLL_NFCA, RFAL_BR_106, RFAL_BR_106); rfalSetGT(0); Ini=rfalNfcaPollerInitialize(); //st25r3911ReadRegister(0x01, &tmp); / USER CODE END 2 / / Infinite loop / / USER CODE BEGIN WHILE / while (1) { / USER CODE END WHILE / / USER CODE BEGIN 3 /
if (rfalNfcaPollerCheckPresence( RFAL_14443A_SHORTFRAME_CMD_WUPA, &sensRes) == ERR_NONE) {
}
//st25r3911ReadRegister(0x02, &tmp);
} |
为什么我读EH_CTRL_Dyn(BSP_NFCTAG_ReadEHCtrl_Dyn),一直为0(VCC_ON处于关闭状态),但是我VCC有3.1V供电
需要ST25R3911B的14443A的“rfal_iso14443a.h”和“rfal_iso14443a.c”文件
X-NUCLEO-NFC08A1开发板和st253916b芯片功耗信息
如何通过串口调试助手通过USB口读取电子标签信息和状态
关于NFC系列产品的疑惑
ST25如何切换天线进行测试
两个st25dv能不能利用ftm模式通信?
关于ST公司的NFC芯片ST25R3911b使用讨论
在arduino中st25dv16k怎么接收外部传输的图片数据
ST25DV64与HR11 NFC模块之间如何实现数据传输(主要是16进制数据)
ST25R3911B中,0x00寄存器中的osc位应当选择外部晶振的实际频率,例如板子上是27.12MHz晶体,则寄存器中应选择1(27.12MHz)。为了获得更好的性能,相较于13.56MHz的晶振更推荐使用27.12MHz的晶振。
对于软件移植,建议完整移植参考代码,移植完成调用demoIni()以及demoCycle()即可。
关于晶振硬件部分,ST25R3911B本身没有特别要求,可以重点排查晶体的规格书以及电容选择。
[md]好的谢谢您,晶振频率我确实设置为了我用的13.56MHZ 但是我嫌demoini 和democycle比较麻烦 就没有照着它的移植 那么我现在去完全将它移植过来试试
[md]我刚刚将demoini 和democycle 这两个函数移植到了我的工程中(删除掉了一些读按键操作 因为我板子上没有按键)我的demoini执行正常 但是我在while循环调用democycle 并读取ST25R3911B的寄存器0x30h,令人沮丧的是OSC OK并没有置一也就是说我的晶振依旧没有工作正常,除了芯片坏了,我实在想不到别的可能性了,请问您还有排查建议吗?