你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用ST25R3911B时SPI能够正常通信但是外部的无源晶振(13.56MHZ)无法工作

[复制链接]
lllxuj 提问时间:2025-6-17 13:01 / 已解决

我在使用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 /

rfalWorker();

if (rfalNfcaPollerCheckPresence( RFAL_14443A_SHORTFRAME_CMD_WUPA, &sensRes) == ERR_NONE) {

if (rfalNfcaPollerFullCollisionResolution(RFAL_COMPLIANCE_MODE_NFC, 1, &nfcaDev, &devCnt) == ERR_NONE)
{
   // printf("UID: ");
    for (int i = 0; i < nfcaDevice.nfcId1Len; i++)
    {
   //     printf("%02X ", nfcaDevice.nfcId1[i]);
    }
  //  printf("\n");
}

} //st25r3911ReadRegister(0x02, &tmp); }SCH_Schematic1_2025-04-26.pdf / USER CODE END 3 /板子的原理图也放上了 }image.png

收藏 评论4 发布时间:2025-6-17 13:01

举报

4个回答
Palealibi 最优答案 回答时间:3 天前

ST25R3911B中,0x00寄存器中的osc位应当选择外部晶振的实际频率,例如板子上是27.12MHz晶体,则寄存器中应选择1(27.12MHz)。为了获得更好的性能,相较于13.56MHz的晶振更推荐使用27.12MHz的晶振。

对于软件移植,建议完整移植参考代码,移植完成调用demoIni()以及demoCycle()即可。

关于晶振硬件部分,ST25R3911B本身没有特别要求,可以重点排查晶体的规格书以及电容选择。

lllxuj 回答时间:3 天前

Palealibi 发表于 2025-6-17 15:39
ST25R3911B中,0x00寄存器中的osc位应当选择外部晶振的实际频率,例如板子上是27.12MHz晶体,则寄存器 ...

[md]好的谢谢您,晶振频率我确实设置为了我用的13.56MHZ 但是我嫌demoini 和democycle比较麻烦 就没有照着它的移植 那么我现在去完全将它移植过来试试

lllxuj 回答时间:3 天前

Palealibi 发表于 2025-6-17 15:39
ST25R3911B中,0x00寄存器中的osc位应当选择外部晶振的实际频率,例如板子上是27.12MHz晶体,则寄存器 ...

[md]我刚刚将demoini 和democycle 这两个函数移植到了我的工程中(删除掉了一些读按键操作 因为我板子上没有按键)我的demoini执行正常 但是我在while循环调用democycle 并读取ST25R3911B的寄存器0x30h,令人沮丧的是OSC OK并没有置一也就是说我的晶振依旧没有工作正常,除了芯片坏了,我实在想不到别的可能性了,请问您还有排查建议吗?

lllxuj 回答时间:前天 15:51

lllxuj 发表于 2025-6-17 16:30
我刚刚将demoini 和democycle 这两个函数移植到了我的工程中(删除掉了一些读按键操作 因为我板子上 ...

[md]确实是晶振问题 已解决

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版