Dear Team,
One of my customer is developing some product with K64 and SmartCard interface.
But he found some error when handling 1 byte response(Procedure byte) like below.
@emvl1_core.c
static smartcard_core_error_t ttl_send_cmd_t0(smartcard_core_params_t *coreParams,
smartcard_ttl_cmd_t *ttlCmd,
smartcard_ttl_resp_t *ttlRespPtr)
{
…
else if (coreParams->Case == kSCCommandCase3) -> Even case 1 and 2 have a same problem.
{
/* send command header */
send_data(coreParams, header, 5u);
tc = 0u;
do
{
/* Get procedure/status byte(s) */
receive_data(coreParams, ttlRespPtr->resp, 2u, &rcvLength);
while ((rcvLength == 2u) && (ttlRespPtr->resp[0u] == 0x60u)) -> Actually one PB byte can be received.(please refer to below )
But at this code if 2 bytes are not received, 1 byte PB is not proceeded. So finally system waits until time out.
{
ttlRespPtr->resp[0u] = ttlRespPtr->resp[1u];
rcvLength--;
if ((ttlRespPtr->resp[0u] == header[1u]) || ((ttlRespPtr->resp[0u] ^ (header[1u])) == 0xFFu))
{
break;
}
temp32 = 0u;
receive_data(coreParams, (ttlRespPtr->resp + 1u), 1u, &temp32);
rcvLength += temp32;
}
As you can see this driver cannot handle one byte response normally.
Have you ever used SmartCard driver with K64 or another Kinetis chips?
If yes, could you please share your experience?
And below is the part of ISO7816 spec.


Thanks a lot for your help in advance.
Best Regards,
YK Lee