请教STM32的smartcard问题

[复制链接]
9393|23
 楼主| angleinlove 发表于 2011-4-18 11:24 | 显示全部楼层 |阅读模式
我在使用官方提供的smartcard例程时一直调不通,在SC_Handler函数里面发现程序一直进入不到SC_ACTIVE这个case里面,请教大侠有调通过的吗
re张风 发表于 2011-4-18 15:28 | 显示全部楼层
你试试其它方法呢。如时钟改变一下,数据位宽度改变一下,不用DMA用查询试试。还有,你是否能读出ID号来呢。我测试时,DMA反正是没有正常过。
以下是我组合测试的结果,画√表示测试正常,画×表示测试不通过:(用SDIO方式,仅供参考)
查询+12MHz+1b+无流控  结果:√
查询+15MHz+1b+无流控  结果:√
查询+18MHz+1b+无流控  结果:√
查询+24MHz+1b+无流控  结果:√

查询+12MHz+4b+无流控  结果:√
查询+15MHz+4b+无流控  结果:√
查询+18MHz+4b+无流控  结果:×
查询+24MHz+4b+无流控  结果:×

查询+12MHz+4b+流控  结果:√
查询+15MHz+4b+流控  结果:×
查询+18MHz+4b+流控  结果:√ 但不稳定
查询+24MHz+4b+流控  结果:×

        但中断与DMA模式还是不对。对于DMA方式,经过运行结果查看,程序在等待DMA标识结束的while()过程时,跑得不见
IJK 发表于 2011-4-18 15:49 | 显示全部楼层
2L说的是 SD卡,不是SmartCard,SmartCard是智能卡。
LZ不妨比较一下ST的例程用的硬件 跟自己硬件的区别。
re张风 发表于 2011-4-18 16:09 | 显示全部楼层
哦,对不起,搞混了!:L
丢脸丢大了!
vigia 发表于 2011-4-18 16:19 | 显示全部楼层
我记得官方的板子是在smartcard的接口外面另接接口芯片的,那个接口芯片的RESET信号MS和控制信号是反的

官方的代码是运行在官方板子上的


所以,,,查一下你的RESET信号吧
 楼主| angleinlove 发表于 2011-4-19 10:14 | 显示全部楼层
回2L:官方例程使用的是103,我用的是107.同样都是使用的USART3来进行通信的,查看文档除了USART3的几个引脚外其他引脚可以选择任意IO.
回5L:我是外接了一个8024的芯片的,现在检测他的OFF管脚一直输出不了高,所以程序进不到SC_ACTIVE里面。
yinyangdianzi 发表于 2011-4-19 10:54 | 显示全部楼层
huang2007 发表于 2011-4-19 11:12 | 显示全部楼层
我刚搞完SD卡初始化搞了几天,成功了,挂上了FATFS
huang2007 发表于 2011-4-19 11:13 | 显示全部楼层
用的是STC32F103C8 SPI模拟
 楼主| angleinlove 发表于 2011-4-19 11:58 | 显示全部楼层
不是SD卡的,是智能卡。。。
IJK 发表于 2011-4-19 13:40 | 显示全部楼层
回2L:官方例程使用的是103,我用的是107.同样都是使用的USART3来进行通信的,查看文档除了USART3的几个引脚外其他引脚可以选择任意IO.
回5L:我是外接了一个8024的芯片的,现在检测他的OFF管脚一直输出不了高,所以 ...
angleinlove 发表于 2011-4-19 10:14


如果使用了ST8024芯片,当智能卡插入插座,插座应该给出有效的/PRES(低电平有效,接到ST8024第9脚)或者PRES信号(高电平有效,接到ST8024第10脚),只有这样在ST8024第23脚(/OFF)才能输出高电平。
你目前的问题跟STM32还没有关系。
 楼主| angleinlove 发表于 2011-4-19 14:59 | 显示全部楼层
11# IJK

我参照官方例程的说明文档在/PRES加了一个按键,当按键按下时/PRES被拉低。现在的情况是按键按下后OFF也没有输出高电平
IJK 发表于 2011-4-19 15:45 | 显示全部楼层
11# IJK  

我参照官方例程的说明文档在/PRES加了一个按键,当按键按下时/PRES被拉低。现在的情况是按键按下后OFF也没有输出高电平
angleinlove 发表于 2011-4-19 14:59


可以把STM32拿掉,或者断开/OFF的连接,在ST8024的/OFF脚接上拉,如果ST8024的/PRES被拉低时它的/OFF脚仍然为低,那就是ST8024的问题。
IJK 发表于 2011-4-19 16:43 | 显示全部楼层
可以把STM32拿掉,或者断开/OFF的连接,在ST8024的/OFF脚接上拉,如果ST8024的/PRES被拉低时它的/OFF脚仍然为低,那就是ST8024的问题。
IJK 发表于 2011-4-19 15:45


需要再加1句:给ST8024的/CMDVCC脚(19)接高电平。
 楼主| angleinlove 发表于 2011-4-19 18:04 | 显示全部楼层
14# IJK

感谢IJK的回答,按照你的做法OFF的电平问题已经解决,现有的问题是smartcard的answer to reset响应不对,一直收不到智能卡的响应,这个问题可能是由什么原因引起的?
 楼主| angleinlove 发表于 2011-4-20 10:19 | 显示全部楼层
问题追加:单步运行程序发现,在将smartcard的RST管脚置高时,智能卡没有数据发送出来。现在有一个疑问,是不是RST管脚的电平发生变化智能卡就会给我一个ATR响应呢?如果收不到是不是可以认为是智能卡坏掉了?
 楼主| angleinlove 发表于 2011-4-20 11:02 | 显示全部楼层
没有人回答吗
vigia 发表于 2011-4-20 11:24 | 显示全部楼层
7816协议是这样定义复位的:

按照图4所示,在Ta时间对CLK加时钟信号。I/O线路应在时钟信号加于CLK的200个时钟周期(ta)内被卡置于状态Z(ta 时间在Ta之后)。时钟加于CLK后,保持RST为状态L,至少400周期(tb)内卡复位(tb在Ta之后)。  
在时间Tb,RST被置于状态H。I/O上的应答应在RST上信号的上升沿之后的400~40000个时钟周期(tc)内开始(tc在Tb之后)。


所以看看你的电源线,时钟线,数据线和复位线是不是符合要求,如果符合要求,在RST上升沿的400至40000个时钟周期内,卡片没有ATR返回,可以认为卡片坏掉了。不过卡片坏掉的几率真的不是很高啊。
 楼主| angleinlove 发表于 2011-4-20 11:47 | 显示全部楼层
18# vigia

检查过线路,没有发现问题,我是按照官方例程来做的,程序跑到接收ATR那地方出现问题,串口接收不到数据,怀疑是智能卡没有发送数据。

评分

参与人数 1威望 +1 收起 理由
huang2007 + 1

查看全部评分

hongjun1016 发表于 2013-5-12 22:28 | 显示全部楼层
你好,请问你问题解决了吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部