打印

请教STM32的smartcard问题

[复制链接]
7868|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
丢脸丢大了!

使用特权

评论回复
5
vigia| | 2011-4-18 16:19 | 只看该作者
我记得官方的板子是在smartcard的接口外面另接接口芯片的,那个接口芯片的RESET信号MS和控制信号是反的

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


所以,,,查一下你的RESET信号吧

使用特权

评论回复
6
angleinlove|  楼主 | 2011-4-19 10:14 | 只看该作者
回2L:官方例程使用的是103,我用的是107.同样都是使用的USART3来进行通信的,查看文档除了USART3的几个引脚外其他引脚可以选择任意IO.
回5L:我是外接了一个8024的芯片的,现在检测他的OFF管脚一直输出不了高,所以程序进不到SC_ACTIVE里面。

使用特权

评论回复
7
yinyangdianzi| | 2011-4-19 10:54 | 只看该作者

使用特权

评论回复
8
huang2007| | 2011-4-19 11:12 | 只看该作者
我刚搞完SD卡初始化搞了几天,成功了,挂上了FATFS

使用特权

评论回复
9
huang2007| | 2011-4-19 11:13 | 只看该作者
用的是STC32F103C8 SPI模拟

使用特权

评论回复
10
angleinlove|  楼主 | 2011-4-19 11:58 | 只看该作者
不是SD卡的,是智能卡。。。

使用特权

评论回复
11
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还没有关系。

使用特权

评论回复
12
angleinlove|  楼主 | 2011-4-19 14:59 | 只看该作者
11# IJK

我参照官方例程的说明文档在/PRES加了一个按键,当按键按下时/PRES被拉低。现在的情况是按键按下后OFF也没有输出高电平

使用特权

评论回复
13
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的问题。

使用特权

评论回复
14
IJK| | 2011-4-19 16:43 | 只看该作者
可以把STM32拿掉,或者断开/OFF的连接,在ST8024的/OFF脚接上拉,如果ST8024的/PRES被拉低时它的/OFF脚仍然为低,那就是ST8024的问题。
IJK 发表于 2011-4-19 15:45


需要再加1句:给ST8024的/CMDVCC脚(19)接高电平。

使用特权

评论回复
15
angleinlove|  楼主 | 2011-4-19 18:04 | 只看该作者
14# IJK

感谢IJK的回答,按照你的做法OFF的电平问题已经解决,现有的问题是smartcard的answer to reset响应不对,一直收不到智能卡的响应,这个问题可能是由什么原因引起的?

使用特权

评论回复
16
angleinlove|  楼主 | 2011-4-20 10:19 | 只看该作者
问题追加:单步运行程序发现,在将smartcard的RST管脚置高时,智能卡没有数据发送出来。现在有一个疑问,是不是RST管脚的电平发生变化智能卡就会给我一个ATR响应呢?如果收不到是不是可以认为是智能卡坏掉了?

使用特权

评论回复
17
angleinlove|  楼主 | 2011-4-20 11:02 | 只看该作者
没有人回答吗

使用特权

评论回复
18
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返回,可以认为卡片坏掉了。不过卡片坏掉的几率真的不是很高啊。

使用特权

评论回复
19
angleinlove|  楼主 | 2011-4-20 11:47 | 只看该作者
18# vigia

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

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
huang2007 + 1
20
hongjun1016| | 2013-5-12 22:28 | 只看该作者
你好,请问你问题解决了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

12

帖子

0

粉丝