完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛扫一扫,分享给好友
|
以下内容只是为了加深自己的记忆,让自己知道自己曾经遇到过这个问题,如有错误谢谢大家帮忙指出!感谢!
在pos机消费充值等功能开发中会用到psam进行加密解密等操作。 而实际使用中 由于各psam卡生产厂商不同最终我们使用的卡都会存在这样那样的不兼容性。 当然 不同的pos机psam这一块的各家的驱动处理程序也存在差别,最终导致读卡失败操作失败的情况发生。 stm32F103vc、psam卡3.3v供电 电路就是这么简单,但是问题出现就是比较复杂: 今天我遇到的情况是:同样的程序 不同的终端,读卡结果不同。 读卡时复位能够成功,但是选择文件会失败 接上监控之后,看出psam返回的的结果: 1. 好的终端,接上监控线之后,psam卡reset返回的数据错误。但是不接监控直接在终端上断点调试的时候,psam卡reset得到的值是3B 69 00.。。。。。正确的结果。 2.不好的终端,接上监控之后,psam卡reset的返回的值,还是错误的。 问题猜测: 1.猜测clk,不稳。 2.psam卡的电压5v 或者3v。 3.ETU参数错误。 4.因为复位成功,所以接收数据函数没有问题。选择文件失败应该是发送函数apdu指令没有发送出去,没有返回。 解决1:逻辑分析仪抓取的数据: 4M的clk,符合。但实际从图中可以看出有几个1的长度与其它有区别,这样的结果我也没有想通是什么原因,若哪位前辈知晓,请指点下,谢谢! ( 我用的是stm32,定时器TIM4的通道1,产生PWM:端口配置://CLK TIM4_ch1 -->PB6 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); ) 2:请硬件工程师改过电压,测试结果没变。 3:ETU参数调整,还是或出现失败的情况,最差的情况怎么读都失败。(调试的时候可以减少分频,这样左右偏移的数据更精确一点) 4:单步跟踪,确实发送数据的时候apdu没有发全就出现错误了。 后来在大神的建议下将发送一个字节函数中:发送8bit位之后,data脚拉高,后再去检测之前延迟了一个ETU时间。(理解为:软件在data脚拉高之后 立即去检测data脚的值,这个时候的值不稳定,表现为有的终端快,有的终端慢,所以结果有失败,有成功。) |
|
|
|
|
只有小组成员才能发言,加入小组>>
1986 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4787 浏览 0 评论
4266 浏览 9 评论
3855 浏览 16 评论
4429 浏览 1 评论
4256浏览 3评论
2414浏览 0评论
3432浏览 0评论
1197浏览 0评论
2884浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 07:06 , Processed in 0.667576 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1296