我在读智能IC卡的过程中出现发送数据完后,不能及时转为接收。因此要漏掉IC卡返回的第1个字节 INS。不知如何解决。代码是参照ST公司使用ST8024芯片的代码,收发转换的部分代码如下:
else if(SC_ADPU->Body.LE)
{
SCData = SC_ADPU->Body.LE;
USART_SendData(USART_S[card_num], SCData);
STATUS_LED=!STATUS_LED;
while(USART_GetFlagStatus(USART_S[card_num], USART_FLAG_TC) == RESET)
{
;
}
}
/* Flush the SC_USART DR */
USART_ReceiveData(USART3);
USART_DMACmd(USART3, USART_DMAReq_Rx, DISABLE);
if((USART_ByteReceive(&locData, SC_RECEIVE_TIMEOUT)) == SUCCESS)
{
用示波器观察,IO线上发完LE后2个etu(200us),IC卡即返回一个INS字节。但上述程序检查 USART_FLAG_TC
位成功是在发送完毕后的2ms才检测到。不知是什么原因,怎样才能改进,实现快速切换到接收状态? |