为什么我没有收到SIM卡的回复(ISO-7816)?

时间:2013-08-28 18:18:28

标签: embedded smartcard avr uart

我的微控制器连接了一个SIM卡。 rst,i / o和clck引脚连接正确。我的主板上有一个硬件UART,但由于它是全双工而不是一半,我一直跳过RX / TX。

到目前为止,我根据ISO-7816切换RST,我的UART缓冲区填满了SIM卡响应的ATR。一旦我收到ATR,我就将UART更改为TX模式并向其发送PPS。发送后,我将UART更改回仅RX模式。它遵循ISO-7816中规定的正确格式,但我没有收到来自sim的确认字节。确认应该是我发送的设置的重复。

2 个答案:

答案 0 :(得分:0)

我认为你的问题与我对gsm调制解调器的问题起源相同。 发送命令,您将从设备收到确认,然后发送下一个命令,获取确认等等。设备挂起或不久后。

关键是对确认的解释。 您可能认为确认意味着命令被接受并执行。但是 - 至少在我所知道的所有gsm调制解调器中 - 它意味着没有更多,但命令被接受和解释 - 但没有被执行。如果是耗时的命令,则在执行上一个命令期间发送下一个命令。你这样做是因为你可能认为确认意味着命令已经完成 - 但事实并非如此。 设备可能会也可能不会缓冲累积命令,但设备很快或稍后会耗尽资源并挂起。

我对您使用的设备没有经验,但现象似乎是一样的。

答案 1 :(得分:0)

虽然我不是协议专家,但在我看来,最有可能的原因是你过早发送PPS-"发送"在现代微控制器上可能很容易过早。 ISO 7816-3规定,保护时间照常适用,等待时间为9600 etu。 过早发送PPS意味着该卡尚未收听,这完全解释了根本没有收到回应。错误的格式会导致错误块,这也应该在范围内可见,这支持了我的假设。