1

我有一个连接到我的微控制器的 sim 卡。rst、i/o 和 clck 引脚接线正确。我的板上有一个硬件 UART,但由于它是全双工的而不是半双工的,所以我将 RX/TX 跳到一起。

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

4

2 回答 2

1

我想您的问题与我使用 gsm 调制解调器的问题相同。发送命令您会从设备获得确认,然后发送下一个命令,获取确认等,等等。设备迟早会挂断。

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

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

于 2013-08-29T09:18:12.457 回答
0

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

于 2013-09-08T19:31:16.533 回答