首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32单片机的PSAM卡驱动模块设计(2)

STM32单片机的PSAM卡驱动模块设计(2)

3 软件设计
对于PSAM卡的软件驱动设计要符合ISO7816—4协议。应用协议数据单元(APDU)可包含有命令报文或响应报文,它从接口设备发送到卡,或者相反地由卡发送到接口设备。
APDU指令的格式如表1所列。


APDU指令的命令头内容如表2所列。



APDU指令响应结构如表3所列。
APDU指令响应内容如表4所列。
(1)主要的数据结构
Typedef struct{
u8 Cla; //命令的类型
u8 Cmd; //命令的编码
u8 P1; //具体命令参数1
u8 P2; //具体命令参数2
u8 P3; //在发送模式的为Lc;//在接收模式时为Le
u8*Data_Ptr;//命令和相应的数据字段
u8 RspCode[2];//APDU响应的内容
}APDU;
(2)主要功能函数
①函数名:PSAM_APDU_Out
功能描述:读取智能卡的数据。
参数:*Data_out,返回从智能卡中读出的数据SAMConfig,智能卡的配置。
返回值:读取数据成功标志(0为失败,1为成功)。
②函数名:PSAM_APDU In
功能描述:向智能卡写数据。
参数:*Data_in,向卡上写入的数据SAMConfig,智能卡的配置。
返回值:写入数据成功标志(0为失败,1为成功)。
③函数名:PSAM_Send1 Byte
功能描述:向智能卡发送1字节数据,并判断接收方是否成功接收。如果没有成功,则向收方发送两次该数据。
参数:SendByte,待发送的字节数据。
返回值:SendStatus,数据发送是否成功标志(成功为0x01,失败为0x00,超时为0xFF)。
④函数名:PSAM_Send1Block
功能描述:向智能卡发送n个字节数据。
参数:*SendPtr,待发送的字节数据指针;DataLen,传送的字节数;ByteDir,字节方向。
返回值:SendStatus,数据发送是否成功标志(成功为0x01,失败:0x00)。
⑤函数名:PSAM_Receive1Byte
功能描述:接收智能卡的1字节数据,当检测到奇偶出错时,可请求2次智能卡从发当前字节数据。
参数:无。
返回值:DataBuf,其中高字节是数据接收是否成功标志(成功为0x01,失败为Parity error(0x55),timeout overflow(0xff))低字节是收到的有效字节数据。
⑥函数名:PSAM_Reset
功能描述:对智能卡进行复位操作,并等待智能卡的应答,如果应答成功则返回复位成功标志,否则返回复位失败标志。
参数:*uiATR,保存复位应答信息的指针。
返回值:复位成功标志(0x01为复位成功,0x00为复位失败)。
继承事业,薪火相传
返回列表