Hi Team,
I am working on HSU UART communication on PN7462 and have implemented HIF initialization as below:
void Hif_UartInit(void)
{
phStatus_t status;
gHifConfig.eInterface = E_HIF_HSU;
gHifConfig.sConfig.sHsuConfig.bIsHsuBoot = 0;
gHifConfig.sConfig.sHsuConfig.bBaudRate = E_HSU_BAUDRATE_9_6K;
gHifConfig.sConfig.sHsuConfig.bStopBits = 1;
gHifConfig.sConfig.sHsuConfig.bDummyBytes = 0;
gHifConfig.sConfig.sHsuConfig.bEOF = 0;
gHifConfig.bTimeout = 0;
gHifConfig.eBufferType = E_BUFFER_FORMAT_FREE;
gHifConfig.bShortFrameLen = 0;
gHifConfig.bStoreErrData = 0;
gHifConfig.bHeaderSize = 0;
status = phhalHif_Init(
&gHifConfig,
(pphhalHif_Callback_t)Hif_UartErrorCallback
);
status = phhalHif_InitRxBuffer(
E_RX_BUFFER_ID0,
HIF_UART_RX_MAX_FRAME,
gHifRxBuffer,
(pphhalHif_Callback_t)Hif_UartRxCallback
);
gUartStream = xStreamBufferCreate(
HIF_UART_STREAM_SIZE,
1
);
}Observed behavior in my implementation:
RX callback triggers correctly
Commands are received successfully
TX API is invoked
However, TX complete callback is not triggered consistently
Continuous transmission from main() does not complete as expected
My simplified implementation is:
int main(void)
{
phFlashBoot_Main();
phhalTimer_Init();
phOsal_Init();
Hif_UartInit();
while(1)
{
LOG_TXT("sending....\n");
Hif_Print("hello");
phUser_Wait(10000000);
}
return 0;
}I also compared this with the PN7462 phExDoorAccess example.
In DoorAccess example:
int main(void)
{
phFlashBoot_Main();
phhalTimer_Init();
phOsal_Init();
phExDoorAccess_SystemTaskInit();
phExDoorAccess_BootHandler();
phRtos_Start();
return 0;
}Observed behavior in DoorAccess:
System tasks are initialized
RTOS scheduler is started using phRtos_Start()
After card detection/authentication, UART transmission over Host interface works correctly
TX completion callback is received successfully
However, in my implementation where transmission is triggered continuously from main(), TX completion callback is not observed.
I would like to understand:
Is additional HIF/HSU configuration required apart from phhalHif_Init() and phhalHif_InitRxBuffer()?
Does HSU TX callback require explicit registration or enabling?
Is phRtos_Start() / scheduler mandatory for HSU TX completion callbacks?
Does HIF require a separate API to start RX/TX handling after buffer initialization?
Are there dependencies in the DoorAccess example (tasks/events/RTOS context) that enable UART TX completion handling?
Are there known conditions where transmit API is called successfully but TX complete callback is not generated?
Please let me know if any initialization sequence or configuration is missing.
Thanks.