器件型号: CC2340R5
我已使用没有握手的 host_test 示例成功进行测试、但自从添加 MRDY (DIO21) 和 SRDY (DIO8) GPIO 以来一直遇到问题。
我需要添加 NPI_FLOW_CTRL 预定义符号并修改 npi_config.h 以指向正确的引脚。
MRDY 由主机 MCU 置为有效、但 SRDY 绝不会置为有效。 调试时、会根据事件调用 MRDY 回调、但绝不会启用 SRDY。
我仔细检查了硬件、并根据需要连接了所有内容。 
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号: CC2340R5
我已使用没有握手的 host_test 示例成功进行测试、但自从添加 MRDY (DIO21) 和 SRDY (DIO8) GPIO 以来一直遇到问题。
我需要添加 NPI_FLOW_CTRL 预定义符号并修改 npi_config.h 以指向正确的引脚。
MRDY 由主机 MCU 置为有效、但 SRDY 绝不会置为有效。 调试时、会根据事件调用 MRDY 回调、但绝不会启用 SRDY。
我仔细检查了硬件、并根据需要连接了所有内容。 
您好 Kevin、
在 npi_tl.c 内已根据以下配置配置了引脚:
GPIO_setConfig(MRDY_PIN, GPIO_CFG_INPUT_INTERNAL | GPIO_CFG_IN_INT_BOTH_EDGES | GPIO_CFG_PULL_UP_INTERNAL);
GPIO_setConfig(SRDY_PIN, GPIO_CFG_OUTPUT_INTERNAL | GPIO_CFG_OUT_STR_HIGH | GPIO_CFG_OUT_HIGH);
您好 Kevin、
对延迟深表歉意。 我们遇到了 e2e 门户方面的一些问题、目前应该修复。 我已经更详细地检查了 NPI 代码流。 以下是我迄今为止的见解。 您可能已经知道、外设或控制器都可以启动握手、在当前使用 NPI 流控制的开箱即用实现中、假设中央器件将启动事务、因此如果您没有主机、SRDY 不会生效。 使 SRDY 有效的两个函数是基于 MRDY 事件触发的:NPITL_handleMrdyEvent() 和 NPITL_writeTL()。 如前所述、MRDY GPIO 的基于双边沿触发的中断被正确触发 、然后调用 NPITL_MRDYYPinHwiFxn ()、因此在开始时 mrdy_state 为 1 时、 应调用 taskMrdyCB。 最新版本实际上指向 NPITASK_MRDYEventCB,这是在 NPITL_initTL() 内完成的操作的一部分。 这应该将 MRDY_ISR_EVENT_FLAG 设置为等于 NPITASK_MRDY_event 并发布事件和 appSem 信标 、这将恢复 NPITask_process () 的流程 — 由事件挂起和 appSem 信标挂起。 在最后一个主进程函数中、 如果确认了 MRDY 事件 (NPITASK_EVENTS & NPITASK_MRDY_EVENT)、我们最终到达 NPITL_handleMrdyEvent ()。 我看到的问题,我也希望你在你这边确认,程序是在 event_pend(syncEvent) 下的 NPITask_Process () 中挂起,即使事件已发布在 NPITask_MRDYEventCB 中。 我目前正在研究为什么 EVENT_POST 没有正确更新事件掩码。
BR、
David。
您好 Kevin、
您能否请 在 npi_task.c 中的 free_rtos_NPITASK_ALL_events 中添加 NPITASK_MRDY_event
如下所示:
#define FREE_RTOS_NPITASK_ALL_EVENTS (NPITASK_TX_READY_EVENT | NPITASK_FRAME_RX_EVENT | NPITASK_TRANSMIT_DONE_EVENT | NPITASK_TRANSMIT_RX_EVENT | NPITASK_ICALL_EVENT | NPITASK_MRDY_EVENT)
添加事件后:

BR、
David。