STM8 智能卡

2020-07-01来源: eefocus关键字:STM8  智能卡  寄存器

STM8智能卡

设置UART_CR5寄存器的SCEN位选择智能卡模式。在智能卡模式下,下列位必须保持清零:

  • UART_CR3寄存器的LINEN位

  • UART_CR5寄存器的HDSEL位和IREN位

此外,CLKEN位可以被设置,以提供时钟给智能卡。


注意:该功能只适用于UART1和UART2。


智能卡接口设计成支持ISO7816-3标准所定义的异步协议智能卡。UART应该被设置为8位数据位加校验位和1.5位停止位。当智能卡模式使能时(寄存器UART_CR5的SCEN位置1),UART可以与异步智能卡通讯。

STM8_ISO7816-3异步协议
(图112:STM8_ISO7816-3异步协议)

当与智能卡相连接时,UART的TX根智能卡共同驱动一根双向通讯线。


STM8智能卡是一个单线半双工通信协议

  • 从发送移位寄存器把数据发送出去,要被延时最小1/2波特时钟。在正常操作时,一个满的发送移位寄存器将在下一个波特时钟沿开始向外移出数据。在智能卡模式里,此发送被再延迟1/2波特时钟。

  • 如果在接收一个设置为1.5停止位的数据帧期间,检测到一个校验错误,在1/2波特时钟周期后,发送线被拉低一个波特时钟周期。这是告诉智能卡发送到UART的数据没有被正确接收到。此NACK信号(拉低发送线一个波特时钟周期)在发送端会识别为一个帧错误(发送端被配置成1.5个停止位)。应用程序可以根据协议处理重新发送的数据。如果NACK控制位被置1,发生校验错误时接收器就会给出一个NACK信号;否则就不会发送NACK。

  • TE位必须通过置1来使能

    • 数据发送

    • 在校验错误发生时,发送应答
      当向数据寄存器写入新数据时,必须由软件来管理数据发送时间以避免数据线上的冲突。

  • RE位必须置1来使能

    • 数据接收(由智能卡或者UART发送)

    • 侦测在校验错误发生时发送的应答

  • 对保护时间寄存器编程会使得TC标志置1的时间点推后。在正常操作时,当发送移位寄存器变空并且没有新的发送请求出现时,TC被置1。在STM8智能卡模式里,空的发送移位寄存器将触发保护时间计数器开始向上计数,直到计到等于保护时间寄存器中的值。TC在这段时间被强制拉低。当保护时间计数器达到保护时间寄存器中的值时,TC被置高。

  • TC标志的撤销不受智能卡模式的影响。

  • 如果发送器检测到一个帧错误(收到接收器的NACK信号),发送器的接收功能模块不会把NACK当作起始位检测。根据ISO协议,接收到的NACK的持续时间可以是1或2波特时钟周期。

  • 在接收器这边,如果一个校验错误被检测到,并且NACK被发送,接收器不会把NACK检测成起始位。

  • 智能卡I/O的输出使能信号可以使能对双向信号线的驱动,这条线路同时也由智能卡驱动。在发送起始位,数据位和NACK信号的时候,该信号有效。在发送停止位的时候,该信号被禁用,这样UART在双向信号线上的状态为弱上拉信号"1"。

注意:

1.断开符号在智能卡模式里没有意义。一个带帧错误的00h数据将被当成数据而不是断开符号。
2.当来回切换TE位时,没有IDLE帧被发送。ISO协议没有定义IDLE帧。


图113详述了UART是如何采样NACK信号的。在这个例子里,UART正在发送数据,并且被配置成1.5个停止位。为了检查数据的完整性和NACK信号,UART的接收功能块被激活。

STM8_使用1.5停止位检测奇偶检验错
(图113:STM8使用1.5停止位检测奇偶检验错)


UART可以通过UART_CK输出为智能卡提供时钟。在STM8智能卡模式里,UART_CK不和通信直接关联,而是先通过一个位预分频器简单地用内部的外设输入时钟来驱动智能卡的时钟。分频系数在预分频寄存器UART_PSCR中配置。UART_CK频率可调整的范围是从fMASTER/2到fMASTER/62,这里的fMASTER是外设输入时钟。

关键字:STM8  智能卡  寄存器 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic501790.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8 IrDA红外功能
下一篇:STM8 单线半双工通信

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8学习笔记---普通IO口模拟串口功能
串口在产品应用中很常见,但是单片机的默认带的串口往往比较少,有时候就会出现串口不够用,所以就想着能不能用普通IO口模拟串口来实现串口的功能。要模拟串口首先要清楚串口数据传输过程中的原理。常用的串口格式为 1位起始位,8位数据位,无校验位,1位结束位。起始位为低电平,结束位为高电平。数据0为低电平,数据1为高电平。所以最简单的串口传输一个字节总共有10个电平变化,每个电平的宽度由波特率决定的。具体的串口数据分析,可以参考这篇文章:STM8学习笔记---通过示波器分析串口数据。下面看一个通过波特率如何计算每个位的电平宽度。发送一个字节,以stm8中9600bit/s的波特率计算的过程为例(1秒钟传输9600位)。可以计算出传输1位所需
发表于 2020-06-07
STM8学习笔记---普通IO口模拟串口功能
IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
同一个工程文件,选择103F3可以编译通过,但是选择103K3便提示空间不足百思不得其解,查阅大量资料无果。最后在IAR工程里面找到了配置文件 打开003f3的配置文件和003K3配置文件进行对比,其余都一样,唯独程序空间003K3是从地址0X9000开始,少了1K,不知道为何要这样设置,明明两个芯片空间大小和结构一模一样。将003K3的配置文件地址改成0x8000开始,重新编译,一切正常。编译通过,程序空间总共占用5419b。问题:这样操作后将程序下载到电路板上不知道会不会出错,有待验证。个人猜测应该没问题,是IAR的错误。
发表于 2020-06-07
IAR FOR STM8 同一个工程芯片选择003F3可以编译003K3提示空间不足
STM8的烧写
最近一次烧写STM8遇到以下问题1.Error : Cannot communicate with the tool.Wrong tool selection or check tool power supply or check that a previous session is closed.Error : < PROGRAM MEMORY programming failed.和stlink的链接出问题,有两种情况:a.仿真器未连接b.驱动没装好2.Error : Cannot communicate with the device !Check the SWIM cable connection and check
发表于 2020-06-07
STM8读取AD值偶尔跳变出错的问题
在调试STM8S103K3T6的AD功能时,发现当温度快速变化时(吹风机模拟),读取到的AD值会偶尔出现跳变,出现的位置相对固定;AD时钟设为2Mhz,每100ms采集一次,单次单路采集,通道无切换,用示波器看供电电压和AD口电压都没有毛刺等跳变,可以排除外部器件的问题;后来查看手册发现问题,DRH/DRL数据的左对齐和右对齐方式,对应不同的读取顺序我使用的右对齐,把程序改成先读DRL,再读DRH,问题解决
发表于 2020-06-06
STM8读取AD值偶尔跳变出错的问题
基于使用STM8单片机I2C方式实现读写操作
STM8硬件I2C知识STM8S的I2C模块不仅可以接收和发送数据,还可以在接收时将数据从串行转换成并行数据,在发送时将数据从并行转换成串行数据。可以开启或禁止中断。接口通过数据引脚(SDA)和时钟引脚(SCL)连接到I2C总线。允许连接到标准(最高100kHz)或快速(最高400kHz)的I2C总线。1.I2C的4种模式● 从设备发送模式● 从设备接收模式● 主设备发送模式● 主设备接收模式2.I2C的主要特点● 并行总线/I2C总线协议转换器● 多主机功能:该模块既可做主设备也可做从设备●I2C主设备功能─ 产生起始和停止信号●I2C从设备功能─ 可编程的I2C 地址检测─ 停止位检测● 产生和检测7位/10位地址和广播呼叫
发表于 2020-05-23
基于使用STM8单片机I2C方式实现读写操作
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved