请教问题 英文STM32 + ST8024 读卡问题

金融电子(5)
如何在读卡器中增加SAM
(1) & 常用的智能卡读卡器中SAM(Security & Access & Module)芯片有哪些? &
& (2) & 读卡器中SAM的specification那里有描述?EMV3.1? & &
& (3) & 能否提供一下这方面的资料? &
& (4) & 除了增加SAM芯片以外,读卡器的Firmware和驱动还有哪些工作要做?&&
1 & SAM & 一般是以 & CPU & 卡的方式提供的。在读卡器中,利用微型内置卡座(同手机中 & SIM & 卡座)连接。 &
& 2 & SAM & 规范是根据具体的应用定义的,各不相同。例如,有 & PBOC & (银行卡)、社保等 & SAM & 卡。都专门写了 & COS & 的。 &
& 3 & 先确定具体应用,再找相应的规范。或者根据你自定义的应用借用某一种合适的规范。 &
& 4 & 如果你愿意,当然也可以自己做 & SAM。比较麻烦而且安全性不容易处理而已。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:122565次
积分:1467
积分:1467
排名:第19348名
转载:79篇
评论:20条
(12)(31)(27)(16)(1)请教STM32 + ST8024 读卡问题,谢谢!!! - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 5501|回复: 10
请教STM32 + ST8024 读卡问题,谢谢!!!
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
用STM32F10+ST8024读IC卡,但是总是没有ATR过来
很奇怪!用的是ST demo程序里面的smartcard.c/.h
如下是MCU脚的配置,pin11接的是ST8024的OFF,pin15是插IC卡中断拉PRES。
TX用的是PB.10, CLK PB.12
#define SC_3_5V
GPIO_Pin_14
#define SC_RESET
GPIO_Pin_12
#define SC_CMDVCC
GPIO_Pin_13
#define SC_OFF
GPIO_Pin_11
其他如UART3的设置主要是smartcard.c里面init设置,无改动。
& & & & NVIC_InitTypeDef NVIC_InitS
& & & & EXTI_InitTypeDef EXTI_InitS
& & & & GPIO_InitTypeDef GPIO_InitS
& & & & RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);
& & & &&&/* Configure Smartcard CMDVCC */
& & & &&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
& & & &&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
& & & &&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & &&&GPIO_Init(GPIOD, &GPIO_InitStructure);
& & & &&&GPIO_SetBits(GPIOD, GPIO_Pin_13);
& & & &&&/* Configure Smartcard OFF
& & & &&&GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
& & & &&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
& & & &&&GPIO_Init(GPIOD, &GPIO_InitStructure);
& & & & /* Configure one bit for preemption priority */
& & & & NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
& & & & /* Clear the SC_EXTI_IRQ Pending Bit */
& & & & NVIC_ClearIRQChannelPendingBit(EXTI15_10_IRQChannel);
& & & & NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQC
& & & & NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
& & & & NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
& & & & NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
& & & & NVIC_Init(&NVIC_InitStructure);
/* Enable the USART3 Interrupt */& & & &
& & & & NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQC
& & & & NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
& & & & NVIC_Init(&NVIC_InitStructure);
& & & & /* Smartcard OFF Pin */
& & & & GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource11);
& & & & /* Clear SC EXTI Line Pending Bit */
& & & & EXTI_ClearITPendingBit(EXTI_Line11);
& & & & EXTI_InitStructure.EXTI_Mode = EXTI_Mode_I
& & & & EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_R
& & & & EXTI_InitStructure.EXTI_Line = EXTI_Line11;
& & & & EXTI_InitStructure.EXTI_LineCmd = ENABLE;
& & & & EXTI_Init(&EXTI_InitStructure);
& & & & EXTI_GenerateSWInterrupt(EXTI_Line11);
& & & & & & & &
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
/* Clear EXTI Line Pending Bit */
& & & & GPIO_Init(GPIOB, &GPIO_InitStructure);
& & & & GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource15);
& & & & EXTI_ClearITPendingBit(EXTI_Line15);
& & & & //PB15 IC卡插入中断
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_F
& & & & EXTI_InitStructure.EXTI_Line = EXTI_Line15;
& & & & EXTI_Init(&EXTI_InitStructure);
& & & & EXTI_GenerateSWInterrupt(EXTI_Line15);
& & & & //PD15
& & & & GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
& & & & GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
& & & & GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
& & & & GPIO_Init(GPIOD, &GPIO_InitStructure);
& & & & GPIO_SetBits(GPIOD, GPIO_Pin_15);
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
版主,帮忙看下,非常谢谢!
主题帖子积分
新手上路, 积分 229, 距离下一级还需 -179 积分
新手上路, 积分 229, 距离下一级还需 -179 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
没有搞过,顶帖
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
版主呢,救救额吧!
主题帖子积分
RE:请教STM32 + ST8024 读卡问题,谢谢!!!
你好,请把你的问题详细描述一下。
今天有事情, 没有来论坛。
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
MCU是stm32f103VB + ST8024, 当IC卡插入后,能产生OFF中断,但是接下来RST后8024片子没有反映,IO上没有ATR数据过来,用示波器看了,8024和IC卡之间的IO脚上也无数据。逻辑分析仪抓了下时序,也都没问题。
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
时序图,其中8024_CLK_IN, 接的是XTAL1.
(52.38 KB, 下载次数: 27)
09:55 上传
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
卡类型不兼容,但有新问题,UART3没有数据中断RXNE没有被置位?
主题帖子积分
新手上路, 积分 30, 距离下一级还需 20 积分
新手上路, 积分 30, 距离下一级还需 20 积分
回复:请教STM32 + ST8024 读卡问题,谢谢!!!
回复第 5 楼 于 01:54:30发表:
你好,请把你的问题详细描述一下。
今天有事情, 没有来论坛。
你好,我也遇到同样的问题,时钟管教输出不了信号,导致IC卡无法在复位后无法回复ATR指令。麻烦版主帮忙解决下,联系QQ:
主题帖子积分
新手上路, 积分 30, 距离下一级还需 20 积分
新手上路, 积分 30, 距离下一级还需 20 积分
RE:请教STM32 + ST8024 读卡问题,谢谢!!!
请问这个问题解决了吗?我也遇到了同样的问题,时钟信号出不来,请问是怎么回事?
站长推荐 /1
2016年度 STM32全国巡回研讨会将于日至23日于全国12城市举办,届时将为您呈现STM32最新的产品线和系统解决方案
>>>>报名参加
Tel: 3-8056
备案号: 苏ICP备号-2
Powered byFM1208 CPU卡操作程序调试小结
FM1702这款芯片的操作可以通过串口,也可以通过并口。在我们的设计中,是通过串口进行操作的。所以在硬件电路搭建好了之后,首先要做的是调试接口。我们所用的控制芯片是,其中集成了接口,对其进行操作就是进行一些设置,然后读写缓冲区,标志位,片选信号线。在程序中设置如下:
SCK,,对应芯片上的引脚设为推挽复用,
RST,对应的芯片上的引脚设为推挽输出,
设置端口:方向,为双向全双工;模式,主模式;数据大小,;为高时钟电平为高;在有效后第二个周期数据有效;发送或者接受的第比特为中的最高位;循环纠正码为。
ST芯片上的端口设定好之后,就是进行端口调试,这个模块的调试,我们是费了一些周折的,先是直接连上芯片,发送数据并接收数据,结果总是令人沮丧,这是第一步,口没有调通,之后的操作都不能进行。后来改了一下,接上来调试端口,由于开发平台是的一个开发板,把以前一个废板子,上面有的,通过飞线将对应端口连接起来,结果受到废板子电路的影响,高低电平都无法稳定得到,然后换了一个有的废板子,就可以了,这个大概是侥幸吧。
让我觉得欣慰的是,在两天内,我就完成了对这个存储器的读写操作的程序,当然是在借鉴别人的一些程序的基础上。让我有点纳闷,并且有点出乎我的意料的是,端口的读操作,并不是我分析出来的那样:
先让有效(低)并保持有效,然后发送一个地址命令(),接着检测接收缓冲器的标识位,有效以后读取缓冲区的值,然后将无效。这个流程是我分析出来的,但是这样是不对的,因为这样无法读出数据,读出来的数据也是不对的。
在我参考、学习了好几个操作程序之后,我发现了正确的读操作流程,,让有效(低)并保持有效;,发送一个无效字节(),,检测接收缓冲器的标示位,有效后读取接收缓冲区的数据。,让无效(高)。而正确的发送一个字节操作流程为,让有效(低)并保持有效;,发送一个命令或者数据;,检测接收缓冲器的标志位,有效后读取数据();,让无效(高)。其中读操作的第二步,是为了给端口提供时钟,而写操作的第步好似多余,因为读出的数据是无效数据。
不管怎样,经过折腾,把接口的操作调试通过了。紧接着做的工作就是调试的读写,参看了文档之后,发送地址,数据,发送地址,接收数据,主要是对中的进行读写,对寄存器进行读写,以及对一些寄存器进行设置。
测试这些寄存器通过之后,写好一个初始化的程序进行设置。设置好了以后,就要通过对卡片(FM1208)进行操作,,寻卡;,防冲突;,选卡;这三步执行成功就会选定一张卡接下来的操作就是针对这张卡的。在第步中,会获得卡片的序列号,这个序列号是生产卡片时就确定了的。
接着是和命令,这两条命令通过之后就进入了,是默认的一个文件夹,将卡内的64k空间当做一个文件夹便于管理操作。之后的操作就是建立文件夹(应用),然后建立文件,添加记录等的操作。
在发送命令对卡进行操作时,有个问题然我很头痛,直到最后才解决,那就是发送命令等待返回值,有时候是操作失败,没有成功,那么可以继续发送,但是我并不知道怎样去判断该等待多长时间才去读取返回值,在调试的过程中,()如果把它设为死循环,只要没有得到相应的相应,就一直发送,结果这样很不好,假如在寻卡时失败,或者发送命令有误,那么程序无法跳出。()又试着把延迟设置得比较小,因为这样可以让系统反应快一点,有错就重新来过,但是有些命令,(如创建文件,添加记录)执行正确之后,需要很长时间才能有返回值,还没有到执行结束,由于延迟不够,就判定执行失败了,又重新发命令,结果是一直都操作失败。后来我发现,()可以通过检测的一个寄存器(中断请求寄存器)的值来判断是否完成了接受返回值。不能进行的操作是,等待期间读取的值,或者长度。这样还是有()中的问题,当一开始没有卡,而后来有卡时就没有办法检测到,所以在()的基础上添加一个延迟判别,到达一定延迟时间还没有返回正确值就判定命令执行失败,再重新发送。这个问题在调试的过程中让我吃尽苦头,有时候都不知道是这个地方的问题,最后终于解决,心中也有那么一点的成就感。
还有一些问题,是在复旦微电子那边的技术支持(唐工)的帮助下解决的,主要是后面建立钱包,管理钱包,充值,消费程序调试的时候,有一个问题,困扰了几天,在调试初始化圈存命令时,总是返回,使用条件不满足,唐工帮我看了好久,排除了各种权限问题,还是不行,后来我仔细看文档,发现其中说钱包文件的标识符要设为,改过来之后就执行成功了;还有一个问题也是让我很困扰,在调试圈存命令时,总是返回,一开始,唐工告诉我要建立一个应用公共基本数据文件,并且往里面添加记录,当我把这个完成(其实也不简单,这个文件是线路保护的二进制文件,添加记录也是一件麻烦的事情)之后,圈存命令返回值还是6901,后来在我都觉得没有希望的时候,唐工帮我仔细分析了我的操作流程,发现问题就在初始化圈存之后,卡片的状态发生了改变,我仔细检查,发现有一个获取随机数的命令,改过来之后,调试成功了,心中又是一阵欢喜。就这样,后面的消费指令也顺利调试通过了。
本分类共有文章21篇,更多信息详见
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";
/*爱悠闲底部960*75*/
var cpro_id = "u1888128"; 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
基于STM32的SIM卡数据读取技术研究
下载积分:0
内容提示:基于STM32的SIM卡数据读取技术研究
文档格式:PDF|
浏览次数:79|
上传日期: 00:14:58|
文档星级:
该用户还上传了这些文档
基于STM32的SIM卡数据读取技术研究
官方公共微信}

我要回帖

更多关于 st8024 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信