Hello,
I work on a projet with the PN7362. I try to use the Host Interface, as an UART.
I configured it and I succeeded to receive frames via the Rx pin, but I fail to transmit until now.
I know the EOT interrupt is never generated because the callback function is never called.
I look the Tx Init register and i find the goud values into.
Could you help me with this problem?
Initialisation :
phhalHif_Config_t s_ConfigNXP_HSUART;
s_ConfigNXP_HSUART.eInterface = E_HIF_HSU;
s_ConfigNXP_HSUART.sConfig.sHsuConfig.bIsHsuBoot = 0;
s_ConfigNXP_HSUART.sConfig.sHsuConfig.bEOF = 8;
s_ConfigNXP_HSUART.sConfig.sHsuConfig.bStopBits = 1;
s_ConfigNXP_HSUART.sConfig.sHsuConfig.bDummyBytes = 0;
s_ConfigNXP_HSUART.eBufferType = E_BUFFER_FORMAT_FREE;
s_ConfigNXP_HSUART.bShortFrameLen = 0;
s_ConfigNXP_HSUART.bStoreErrData = 0;
s_ConfigNXP_HSUART.bHeaderSize = 0;
s_ConfigNXP_HSUART.bTimeout = 100;
s_ConfigNXP_HSUART.sConfig.sHsuConfig.bBaudRate = E_HSU_BAUDRATE_38_4K;
phhalHif_Init(&s_ConfigNXP_HSUART, (pphhalHif_Callback_t) &Erreur_Init_UART_Interrupt);
Transmission :
phStatus_t e = 0;
unsigned char ui_TxBuffer[4] = {'C','H','A','R'};
e = phhalHif_Transmit((uint32_t *)&ui_TxBuffer,sizeof(ui_TxBuffer), (pphhalHif_Callback_t)&ext_SetTxBufferEmptyInterrupt);
if (e == 0x0021)printf("INVALID PARAM");
else if (e== 129)printf("TX ONGOING");
else if (e== 131)printf("TX LOCKED");
else if (e== 133)printf("TX PREFETCH");
else if (e==0x00)printf("SUCCESS");
Thank you for your time.
Regards
Solved! Go to Solution.
I found the solution, it was an hardware problem. I didn't use the RTS/CTS flow control, so I had to connect the CTS pin to the ground.
I have the same problem with PN7362 and did not find the solution in the attached example. You can help me?
sHifConfigs.eBufferType = E_BUFFER_FORMAT_FREE; /* E_BUFFER_FORMAT_FREE */
sHifConfigs.bShortFrameLen = 0 ; // gpkphCfg_EE_HW_HIF->bShortFrameLen;
sHifConfigs.bStoreErrData = 0 ; // gpkphCfg_EE_HW_HIF->bStoreErrData;
sHifConfigs.bHeaderSize = 0 ; // gpkphCfg_EE_HW_HIF->bHeaderSize;
sHifConfigs.bTimeout = 0 ; // gpkphCfg_EE_HW_HIF->bTimeout;
sHifConfigs.eInterface = E_HIF_HSU;
sHifConfigs.sConfig.sHsuConfig.bIsHsuBoot = 0 ; // gpkphCfg_EE_HW_HIF->bIsHsuBoot;
sHifConfigs.sConfig.sHsuConfig.bEOF = 8 ; // gpkphCfg_EE_HW_HIF->bEndOfFrame;
sHifConfigs.sConfig.sHsuConfig.bStopBits = 1 ; //gpkphCfg_EE_HW_HIF->bStopBits;
sHifConfigs.sConfig.sHsuConfig.bDummyBytes = 3 ; // gpkphCfg_EE_HW_HIF->bDummyBytes;
sHifConfigs.sConfig.sHsuConfig.bBaudRate = E_HSU_BAUDRATE_9_6K ; //(phhalHif_Hsu_BaudRate_t) gpkphCfg_EE_HW_HIF->bBaudRate;
/** Host Interface Initialize */
PH_USER_ASSERT(
phhalHif_Init(&sHifConfigs, &phExHif_Hw_Generic_CallBack) == PH_ERR_SUCCESS);
Thanks, Giovanni
I found the solution, it was an hardware problem. I didn't use the RTS/CTS flow control, so I had to connect the CTS pin to the ground.
Hi, Thomas
thanks for the solution, I also had to connect the #CTS to the ground.
Unfortunately I did not find the way to disable flowcontrol via firmware, if someone knows the solution would be a good thing for me.
Thanks Giovanni
Hello thomasbarreto,
Hope you are doing great, please check the attached project it uses the HSUART to interact with the PN7462 it should not be much different than the one you are using, just as reference.
- Receive UART data at 9600/8/N1 from Host
- Execute the next commands depending on received character from UART:
‘T’ = Run a polling test and return PASS/NO PASS response to host depending if card was detected or not.
‘O’ = Turn RF field on and leave it on.
‘F’ = Turn RF field off.
Have a great day !
Best Regards.
Jonathan