您好,社区,
您好,恩智浦团队
我在找 LPC55S28 ↔ PN5190 连接的详细信息(主机 SW + DAL/BAL 层)
我已经有 PN5190 NFC读取器库了,想将 LPC55S28 MCU 连接到 PN5190 NFC 前端。
我已经阅读了 “在 LPC55S69 中使用 NFC 读取器库” 这篇文章,但我正在专门寻找兼容 LPC55s28 的设置。
谢谢!
你好,@EduardoZamora、
感谢您的反馈,
你引用的指南已经比我最初在恩智浦网站上找到的指南有用得多,所以感谢你指出它们。
在查看这些指南时,我注意到其中许多指南都包含针对特定处理器或主板的预配置文件夹或即用型软件包。这些软件包通常将 NFC 读取器库与控制处理器设置集成在一起,在某些情况下还集成了 DiscoveryLoop 示例,这使得入门变得更加容易。
是否有可能为 LPC55S28 + PN5190 组合提供类似的参考软件包或项目(例如,可导入 MCUXpresso),或者至少为最接近支持的 LPC55xx 配置提供类似的参考软件包或项目?有这样一个项目作为起点,将对移植和验证工作大有帮助。
提前感谢您的支持。
致以最崇高的敬意,
Radoslaw Tomasik
很抱歉,没有关于 PN5190 + LPC55S28 的具体文档或指南。
不过,正如您提到的,您可以参考以下指南:
- NFC读取器库移植 FR DM_K64F
-移植到 i.MX RT1050 的 NFC读取器库-恩智浦社区
这些指南可以作为一个很好的起点。
Eduardo。
您好,
不幸的是,没有针对此特定设置的参考项目。适用于 PN5190 的 NFC读取器库 包括对 LPC1769 和 Kinetis K82 的支持;对任何其他主机 MCU 的支持必须由用户实现。
当你提到不再可能链接 NFC读取器库时,这是否意味着你在尝试链接文件夹时会收到错误消息?您遵循的程序是什么?你应该能够按照 NFC读取器库移植 FRDM_K64F、" 链接 NFC 读取器库 " 部分中列出的步骤来链接文件夹。此外,链接资源应出现在项目属性> 资源> 链接资源中。
Eduardo。
作为后续,我发现原来的 "无法创建链接资源错误是由于文件路径过长造成的。在缩短路径后,这个具体问题得到了解决。
但是,在 启用 “将项目复制到工作区” 选项的情况下将 NFC读取器库添加到工作区时,仍然存在相关问题 (参见随附的屏幕截图)。
一些文件(如 AN13425)明确建议 不选择该选项。当我遵循这一建议时,将 DiscoveryLoop 文件复制到 LPC55Sxx 项目中的工作正常。
缺点是,在这种情况下,不再可能链接 NFC读取器库,因为工作空间不包含任何 NFC 示例项目。
因此,无法将下列文件夹从 NfcrdlibEx1_BasicDiscoveryLoop链接到 lpc55sxx_basic_discovery_loop项目中:
DAL
NxpNfcRdLib
(二)......
intfs
请问这是否是使用 LPC55Sxx 的 PN5190 的已知限制,或者是否有建议的解决方法?
另外,是否有预配置的 LPC55sxx + PN5190 项目可用,与其他 NFC读取器库指南中提及的项目类似?
致以最崇高的敬意
拉多斯瓦夫
@EduardoZamora
当遵循以下指南时:
https://community.nxp.com/t5/NFC-Knowledge-Base/NFC-Reader-Library-Porting-FRDM-K64F/ta-p/1117798
我能够成功执行所述步骤:
添加 NFC 阅读器库
为 LPC55Sxx 创建项目
将 DiscoveryLoop 文件复制到 LPC 项目中
然而,在对PN5190执行相同步骤时(使用NxpNfcRdLib_PN5190_v07.14.00_Pub)、我能够
添加图书馆
创建 LPC55Sxx 项目
但在尝试复制 DiscoveryLoop 文件时,我遇到了以下错误:
复制资源时出现问题。
无法创建链接资源。
能否请贵方检查一下,并告诉我这是否是已知的限制,或者是否有针对使用 LPC55Sxx 的 PN5190 的建议变通方法?
感谢您的支持。
致以最崇高的敬意,
Radoslaw Tomasik
感谢您的回复和说明。
我知道 LPC55S28 + PN5190 组合没有参考项目,我已经准备好自己实现 SPI DAL 了。我的意图是 尽可能严格地遵守 NFC 阅读器库移植 FRDM_K64F 程序,但在使用 PN5190 软件包时遇到了一些差异 。
以下是目前的状况和尚未解决的问题:
导入 LPC55S28 SDK 示例例如 hello_world) 的工作没有任何问题。
链接 NFC读取器库:
袩褉芯胁芯写褋褌胁械薪薪褘械 NxpNfcRdLib和 文件夹文件夹可以链接到 LPC55S28 项目,并在以下位置可见
项目属性 → 资源 → 链接资源.
但是,这些链接文件夹 不会出现在项目结构中中显示。
美国 DAL和 文件夹文件夹是 发现循环示例的一部分,不能单独链接。
是否应该 复制到是否应该将这些文件夹从 DiscoveryLoop 项目复制到 LPC55S28 项目中,而不是进行链接?
如果是这样,哪些部分被认为是特定于平台的,并预计由用户修改?
包含路径可以手动配置,但目前还不清楚:
应从 NxpNfcRdLib / phOsal 程序库
哪些应该来自 DiscoveryLoop 示例
由于主 MCU 不同,库也不同,而且集成程序似乎也因项目而异,我希望您能就这种配置的建议设置提供指导。
这完全属于恩智浦平台;我已经连接了两个评估板,并想继续进行基本的驱动和连接测试。
致以最崇高的敬意
拉多斯瓦夫
您好,
"DAL 和 intfs 文件夹是 DiscoveryLoop 示例的一部分,不能独立链接" ,能否请您说明一下您的意思?在尝试将这些文件夹链接到项目时,应该不会遇到任何限制。
您可以将文件夹复制到工作区并进行链接,或者直接从提取库的路径链接文件夹;在项目结构中如何显示这些文件夹取决于所使用的方法。
链接文件夹后,需要包含的相关路径显示在 NFC 读取器库移植 FRDM_K64F 的 " 添加包含路径 " 部分中。
Eduardo。
你好,爱德华多、
感谢您的回复。
澄清一下我的意思:问题在于DiscoveryLoop 示例项目的结构和导入方式。
将 DiscoveryLoop 项目导入 MCUXpresso 时,无法使用"将文件复制到工作区"选项将其添加到工作区。因此,项目仍在 MCU 工作区目录之外,工作区文件系统中看不到DAL和intfs文件夹。正因为如此,它们无法以 FRDM_K64F 移植指南中所述的实际方式独立连接。
因此,我采用了手动端口:
将所需的DAL、intfs、NxpNfcRdLib 和phOsal文件夹直接复制到 LPC55S28 项目中,使其在项目结构中完全可见。
手动添加所有必需的包含路径、预处理器符号和源代码位置。
修改了DAL 实现,以匹配 LPC55S16/LPC55S28 平台(SPI、GPIO、IRQ 处理、定时等)。
通过这种方法,项目可以建立,并且结构现在在 MCU 工作空间内保持一致和透明。
Radoslaw
你好,
感谢你的回复!非常感谢。我正在使用LPC55S69-EVK + PNEV5190BP 。
我已经从网站下载了最新的 NxpNfcRdLib (NxpNfcRdLib_PN5190_v07.16.00_PUB) 和 SDK (SDK_26_06_00_LPCXpresso55S69)。
首先,我从为 K82F 微控制器编写的 NxpNfcLib 中导入了 DiscoveryLoop 示例。这次尝试并不成功,因为有很多微控制器特有的设置干扰了这个过程。
然后我找到了之前在这个帖子里提到的LPC移植指南。这也不算成功,因为 SDK 和 Nfc 库的版本太旧,无法正常使用。
然后我做了你刚才提到的那些事。我从最新的 SDK 中导入了 lpcxpresso55s69_lpc_gpio_led_output_cm33_core0 示例,并将DAL 、 intfs 、 NxpNfcRdLib和phOsal文件夹直接添加到项目中。然后我配置了路径、预处理器和源位置。我添加了缺失的SDK元器件。
我尝试修改 DAL,但由于适用于旧 Nfc 库的 DAL 和新库的 DAL 之间存在很多差异,因此我未能成功。它实际上可以编译,但却卡在了由 phbalReg_Init() 调用的 SPI_MasterInit 函数的硬故障处理程序中。
我认为这主要是因为我使用恩智浦产品的时间还不长。我会附上项目的压缩文件。或许我做错了什么,或者漏掉了什么。
你好,
你是否找到了移植该库的方法?我一直卡在重写 DAL 部分,因为 SDK 和 NFC 库的结构发生了相当大的变化。
我尝试根据这份包含源代码的指南编写代码。但是,此 NFC 库版本不包含 PN5190 驱动程序。添加 PN5190 时,库中也添加了很多重大更改,这导致当我尝试直接替换 NfcRdLib、phOsal 和 intfs 文件夹时出现了很多错误。我还遇到了一些由新版 SDK 引起的错误,所以现在我真的不知道该怎么办了。尤其是因为推荐指南1和2已经过时了。
提前致谢!
嗨,埃米尔,
你们使用的是相同的硬件组合(LPC55xx + PN5190)吗?
基本上,你可以参考,引用现有的移植指南,即使没有官方的 LPC55S28 + PN5190 项目。我建议下载最新的NxpNfcRdLib_PN5190代码包,软件包并将其导入 MCUXpresso。首先,从 LPC55xx SDK 示例(例如hello_world )创建一个新项目,然后手动移植 NFC 读取器库。
对我有效的方法是:
关于您提到的缺失的驱动程序:具体是哪些驱动程序?如果您能列出缺失的模块或发布编译器错误,就更容易确定哪些内容还需要移植。
新版 SDK 导致的错误也可能取决于您使用的 LPC 设备和 SDK 版本。首先,我会确认您使用的是 NXP 提供的适用于您 MCU 的最新 SDK,并确保它与您的项目所需的版本相匹配。
根据您的描述,我只能做出合理的猜测,如果您能分享一下就更好了:
我很乐意帮忙确定需要进行的更改。我之前也经历过类似的手动操作,所以或许可以给你一些指导。
希望这能对你有所帮助。
非常感谢。我不太确定应该如何配置引脚多路复用器和时钟。我是通过引脚配置工具完成的,但我不太确定我是否操作正确。但我不太明白为什么我必须这样做,因为这些设置似乎无论如何都会在phbalReg_LpcOpenSpi.c文件中被覆盖。
我发现,在phbalReg_Init()函数中(我记得是这个函数),我需要修改时钟频率的选择方式,因为这个设置之前被改过。
然后我便能够编译代码并将其下载到微控制器中。然而,除了调试文本之外,其他一切都不起作用 :(。我看了一下你的代码,但是遇到了更多问题。我使用的库版本要求中断处理程序像这样: PH_DRIVER_LPC_TIMER_IRQ_HANDLER(uint32_t flags); 而到目前为止,我找到的所有示例都使用了您的定义:PH_DRIVER_LPC_TIMER_IRQ_HANDLER(void);
这将导致以下错误:
../DAL/src/LPCOpen/phDriver_LPCOpen.c:42:47: 错误:从不兼容的指针类型“void (*)(void)”初始化“void (*)(uint32_t)” {aka 'void (*)(unsigned int)'} [-Wincompatible-pointer-types]
42 | ctimer_callback_t ctimer_callback_table[] = { PH_DRIVER_LPC_TIMER_IRQ_HANDLER, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
到目前为止,您的帮助非常宝贵。是否可以包含 phDriver_LPCOpen.c 文件?文件还是整个项目的压缩包?
提前致谢!
嗨,埃米尔,
根据您的描述,我首先要仔细检查的是您的引脚配置( pin_mux ),并确认已为 SPI 配置了正确的 Flexcomm 实例。如果配置不匹配,很容易导致代码在SPI_MasterInit()期间进入 HardFault 处理程序。
此外,请确保在调用SPI_MasterInit()之前正确初始化spi_master_config结构。同时,也建议检查Exchange函数,确保 WRITE 和 READ 阶段都已正确实现,因为新版读取器库的行为与旧版略有不同。
我已附上文件供您参考。它们或许能帮助你将自己的实现与一个可行的示例进行比较,但我不能保证它们无需修改就能正常工作,因为它们是为不同的设置而创建的。
希望这能为你指明正确的方向。
嗨,埃米尔,
是的,您需要使用以下命令配置端口: MCUXpresso 配置工具 (引脚/时钟配置器)DAL 假定 MCU 外设配置正确,因此这些设置不会被完全替换。 phbalReg_LpcOpenSpi.c。
我已附上我的 pin_mux 文件和 LPCOpen 源代码供参考。
请记住,这是 仅供参考,引用代码。该项目从未经过全面测试或最终定稿,因此我无法保证它开箱即用。我认为在一切正常运行之前,还需要进行大量的调试工作。
很抱歉,接下来两周左右我都不方便,所以在那之前可能无法回复任何问题。
祝您移植工作顺利,希望附件文件能对您有所帮助。
你好,
再次感谢。这是我开学前的最后一周,所以你假期回来后我恐怕没时间继续做这件事了。我总算让SPI勉强能用了。我也不太清楚具体该怎么做。情急之下,我替换了 pin_mux.c 文件。和 .h文件与你的文件一起。显然这样做行不通,所以我把它们改回了之前的设置,SPI 就开始工作了。
总之,我已经附上了逻辑分析仪的截图。我不知道发送的数据是否正确,但看起来合情合理。但是,正如你所看到的,PNEV5190B 没有响应。我还附上了我的设备照片。我已经将 R5 换成了 R7,以启用外部 SPI 接口。
在调试窗口中可以看到,它顺利地执行了所有函数。然而,在 phhalHw_Pn5190.c 文件第 286 行发送配置信息后,程序会等待一个始终未收到的中断,最终报错。
这是图钉分布图:
| PNEV5190B 上的 JP1 | P23 on LPCXpresso55S69 (Mikroe) | P24 on LPCXpresso55S69 (Mikroe) |
| 1. EXT_SPI1_CLK | 4. LSPI_HS_SCK (PIO1_2) | X |
| 2. EXT_SPI1_MOSI | 6. LSPI_HS_MOSI (PIO0_26) | X |
| 3. EXT_SPI1_MISO | 5. LSPI_HS_MISO (PIO1_3) | X |
| 4. EXT_SPI1_CS0 | 3. LSPI_HS_SSEL1 (PIO1_1) | X |
| 5. EXT_NFC_IRQ | X | 1. PIO1_5_GPIO_ARD (PIO1_5) |
| 6. EXT_NFC_CLK_REQ | X | X |
| 7. EXT_NFC_WKUP_REQ | X | 2. 唤醒/GPIO (PIO1_18) |
| 8. EXT_NFC_DWL_REQ | X | 3. PLU_OUT6/GPIO/FC2_USART_RXD_ARD/SD1_D1 (PIO1_24) |
| 9. 接地 | X | X |
| 10. 接地 | 8. 接地 | X |
编辑:是的,通过 SPI 发送的数据流似乎是正确的。phhalHw_Pn5190.c 文件第 151 行:
uint8_t PH_MEMLOC_REM pTxBuff[] = {0x7F /* 方向字节 */,
0x00, 0x04 /* HDLL 获取版本命令长度 */,
0xE1 /* HDLL 获取版本命令 OP 代码 */,
0x00, 0x00, 0x00,
0x75, 0x48 /* CRC */};
这与我之前发送的逻辑分析仪截图中显示的数据完全一致。