一种stm32降频实现高速率读卡器的方法

文档序号:9327260阅读:684来源:国知局
一种stm32降频实现高速率读卡器的方法
【技术领域】
[0001] 本发明涉及通信领域,尤其涉及一种STM32降频实现高速率读卡器的方法。
【背景技术】
[0002] 目前的读卡器主要采用STM32微型控制平台。读卡器的IS07816是由 USART (Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步异步收发 器)接口的智能卡模式实现。IS07816接口通信速率取决于ETU(Elementary Time Unit基 本时间单元),IS07816接口传输1个字节时需要10个ETU。ETU的值由时钟频率决定,ETU 与时钟频率呈现关系为:1ETU = (F/D) X (Ι/f),其中,F/D为波特率转换因子,取决于智能 卡,f是IS07816/智能卡的CLK的频率,取决于读卡器。由于ETU的值取决于F/D和f,因 此F/D的值越小,f的值越大,ETU的值越小,读卡器通信速率越快。当前的读卡技术将基于 STM32F103平台的系统时钟设置为72Mhz,CLK取最大值为4. 5Mhz,F/D取最小值11. 625,得 出ETU的值为2. 58us,使得目前的最大通信速率只能达到387096bps。因此当智能IC卡接 触到读卡器,读卡器读取智能IC卡的最高通信速率只能达到387096bps。然而随着读卡器 的广泛应用,人们对读卡器的阅读效率要求越来越高,387096bps的通信速率已经满足不了 现代人对读卡器高速率的通信需求。

【发明内容】

[0003] 本发明的目的在于提供一种STM32降频实现高速率读卡器的方法,该方法基于 STM32F103平台的IS07816最高通信速率应用,能够提高读卡器的通信速率,实现读卡器高 速阅读的目的。
[0004] 为解决上述技术问题,本发明采用如下所述的技术方案。一种STM32降频实现高 速率读卡器的方法,包括以下步骤:初始化STM32微控制器的系统时钟为48Mhz ;初始化 GPIO ;初始化STM32微控制器的USART接口为7816模式,系统时钟设置为5分频,CLK设置 为4. 8Mhz ;根据IETU = (F/D) X (Ι/f),得到ETU的最小值,其中F/D为波特率转换因子,f 是IS07816/智能卡的CLK频率。
[0005] 优选地,初始化STM32微控制器系统时钟,设置系统时钟来源为PLL,将PLL系统时 钟倍频到48Mhz。
[0006] 优选地,初始化STM32微控制器USART接口为智能卡模式,即STM32微控制器的 7816模式由USART接口的智能卡模式实现。
[0007] 优选地,USART产生CLK频率的算法如下:
[0008] 系统时钟的分频因子为:USART_GTPR[4:0] X2,依此将系统时钟设置为5分频,根 据预设算法CLK频率=系统时钟AUSART_GTPR[4:0] X2),得到CLK频率为4. 8Mhz。
[0009] 优选地,根据IETU = (F/D) X (1/f),可知F/D的值越小,f的值越大,ETU的值越 小,通信速率越快。
[0010] 优选地,根据IS07816规范将F/D设置为最小值,即11. 625。
[0011] 优选地,STM32微控制器选为STM32F103系列。
[0012] 本发明的有益技术效果在于:本发明采用STM32F103微型控制器,将系统时钟设 置为48Mhz,系统时钟5分频得到CLK最大值为4. 8Mhz,依此ETU的最小值为2. 42us,根据 ETU = (F/D) * (Ι/f),使最大通信速率达到412903bps,比原来主频率为72Mhz时达到的通信 速率高出25807bps。本发明具有使读卡器通信速率提高,读卡器的阅读速度加快,使用者的 满意度提升的优点。
【附图说明】
[0013] 图1是本发明实施例的流程图。
【具体实施方式】
[0014] 为使本领域的普通技术人员更加清楚地理解本发明的目的、技术方案和优点,以 下结合附图和实施例对本发明做进一步的阐述。
[0015] 参考图1所示,在本实施例中,该STM32降频实现高速率读卡器的方法包括以下步 骤:
[0016] 步骤SI:初始化堆栈;
[0017] 步骤S2 :初始化STM32微控制器的系统时钟为48Mhz ;
[0018] 步骤 S3 :初始化 GPIO (General Purpose Input Output 通用输入输出);
[0019] 步骤S4 :初始化STM32微控制器的USART接口为7816模式,系统时钟设置为5分 频,CLK设置为4. 8Mhz ;
[0020] 步骤S5 :根据IETU = (F/D) X (1/f),得到ETU的最小值,其中F/D为波特率转换 因子,f是IS07816/智能卡的CLK频率。
[0021] 具体地,步骤Sl为初始化堆栈。STM32微控制器运行或内部函数执行时要用到了 一些寄存器,对于这些寄存器的值,要先保存起来,而后跳转到子函数中去执行,以防止其 被破坏。
[0022] STM32系统时钟有三种不同的时钟源:HSI振荡器时钟(由芯片内部RC振荡器提 供),HSE振荡器时钟(由芯片外部晶体振荡器提供),PLL时钟(通过倍频HSI或HSE振荡 器倍频得到)。其中,HSI高速内部时钟是由内部RC振荡器产生的8MHz时钟。HSE高速外 部时钟是由外部4~16MHz的晶体或有源晶振提供,通常采用8MHz。8MHz外部晶体或晶振 输入后,先经过一个开关PLLXTPRE(HSE divider forPLL entry),此开关决定对HSE进行2 分频,再输入到PLL或直接到PLL。这样时钟又到了第二个开关PLLSRC (PLL entry clock source),此开关决定PLL的时钟来源是内部高速时钟二分频的时钟还是PLLXTPRE的输出。 PLL倍频器,由PLLMUL决定倍频系统数,可以选择2~16倍频输出,但PLL输出频率最高 72MHz,这时的PLLCLK为USB提供时钟时钟在STM32USB的48MHz时钟、系统时钟SYSCLK、实 时时钟模块RTC、独立看门狗的时钟IWDGCLK。
[0023] 具体地,在本实施例中,步骤S2为初始化STM32微控制器系统时钟,设置系统时钟 来源为PLL,将PLL系统时钟倍频到48Mhz。即将进入PLL的8Mhz进行6倍频后得到48Mhz, 藉由PLL系统时钟的6倍频可将系统时钟设置为48Mhz。
[0024] 具体地,在STM32系统时钟初始化为48Mhz后,步骤S3为初始化GPI0,以便启动系 统输入输出口。
[0025] 具体地,在本实施例中,步骤S4 :初始化STM32微控制器USAR
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1