[STM32F1] STM32F103 直接驱动智能卡

[复制链接]
 楼主| 发表于 2014-2-20 23:56 | 显示全部楼层 |阅读模式
使用官方例程,USART3直接连接SIM卡,PB12-CK PB10-IO PB11-RST 供电用3V3 ,复位信号后 能收到ATR,但之后收到的相应数据都有异常,分析了一下收到ATR后的void SC_PTSConfig(void)函数,USART3的波特率通过RCC_ClocksStatus.PCLK1_Frequency/((SC_USART->GTPR & (uint16_t)0x00FF) * 2)*D/F得出的,
而实际上,SIM卡的需要的波特率也是通过3571200*D/F得出,DF的值均可通过查表获取,问题在于RCC_ClocksStatus.PCLK1_Frequency的值位36000000,而不是3571200,导致最后计算的波特率有差异,以至于例如 例程中使用的初始波特率是9677,而不是9600,再ATR后调整波特率的误差与SIM卡要求的值相差了1%,这个会不会是收到错码的原因,抛砖引玉,希望各位大神指点。如果是其他原因请支持。
 楼主| 发表于 2014-2-21 10:28 | 显示全部楼层
香主呢
发表于 2014-2-21 11:24 | 显示全部楼层
异步方式,根据采样原理,肯定有个容差的范围的,这就像以前用51,用整数倍的晶振,无论如何算,不可能所有的波特率都能做到100%,无误差,大家还是这样使用了几十年,不也一样没问题?

对于你提到的1%,想减小,只能去改时钟源,算到整数倍。不改的话要看误差范围是否在SIM的容许误差范围。
 楼主| 发表于 2014-2-21 11:45 | 显示全部楼层
grant_jx 发表于 2014-2-21 11:24
异步方式,根据采样原理,肯定有个容差的范围的,这就像以前用51,用整数倍的晶振,无论如何算,不可能所有 ...

我目前用STM32直连SIM,无论发送什么数据,接受的DATA里全为零,而SW1=A4,SW2=0,如果不是波特率差异造成的,不知还有什么原因,请赐教
 楼主| 发表于 2014-2-21 14:29 | 显示全部楼层
没有做过直连智能卡的兄弟吗
 楼主| 发表于 2014-2-21 16:20 | 显示全部楼层
我发现我收到的A4是 我发出来的 INS,为什么会出现这个情况
发表于 2014-2-21 16:51 | 显示全部楼层
支持楼主研究探索。
 楼主| 发表于 2014-2-21 18:01 | 显示全部楼层
坐等高手
发表于 2014-3-3 12:52 | 显示全部楼层
波特率可以直接用9600,我亲试可以。

发送数据后收到04,是INS,这个是正常,根据ISO7816-3的文档有介绍这个返回的意义。
 楼主| 发表于 2014-7-31 22:10 | 显示全部楼层
cosxpeach 发表于 2014-3-3 12:52
波特率可以直接用9600,我亲试可以。

发送数据后收到04,是INS,这个是正常,根据ISO7816-3的文档有介绍这 ...

嗯 没错 自己多7816理解不够
发表于 2016-12-1 15:37 | 显示全部楼层
挖个坟,想跟楼主请教一下智能卡的问题,现在我用的是官方的demo,但是得到ATR后,无法继续进行下一步的操作了,无法发送ADPU,望赐教,不胜感激!
发表于 2016-12-8 13:34 | 显示全部楼层
m191007 发表于 2014-2-21 14:29
没有做过直连智能卡的兄弟吗

我就是直连的,可以交流下心得不
发表于 2016-12-8 13:35 | 显示全部楼层
godejiao1 发表于 2016-12-1 15:37
挖个坟,想跟楼主请教一下智能卡的问题,现在我用的是官方的demo,但是得到ATR后,无法继续进行下一步的操 ...

和你遇到一样的问题,调了好久都找不到原因,请问你解决了吗
发表于 2019-5-24 15:02 | 显示全部楼层
直接连接SIM卡,是可以进行通信的吗?不需要通信模块吗?
发表于 2019-7-9 20:47 | 显示全部楼层
直连可以读SIM卡,但用HAL库不好用。问题还没解决。谁用过HAL?支援一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

23

帖子

1

粉丝
快速回复 返回顶部 返回列表