一種stm32降頻實(shí)現(xiàn)高速率讀卡器的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種STM32降頻實(shí)現(xiàn)高速率讀卡器的方法。
【背景技術(shù)】
[0002] 目前的讀卡器主要采用STM32微型控制平臺(tái)。讀卡器的IS07816是由 USART (Universal Synchronous/Asynchronous Receiver/Transmitter 通用同步異步收發(fā) 器)接口的智能卡模式實(shí)現(xiàn)。IS07816接口通信速率取決于ETU(Elementary Time Unit基 本時(shí)間單元),IS07816接口傳輸1個(gè)字節(jié)時(shí)需要10個(gè)ETU。ETU的值由時(shí)鐘頻率決定,ETU 與時(shí)鐘頻率呈現(xiàn)關(guān)系為:1ETU = (F/D) X (Ι/f),其中,F(xiàn)/D為波特率轉(zhuǎn)換因子,取決于智能 卡,f是IS07816/智能卡的CLK的頻率,取決于讀卡器。由于ETU的值取決于F/D和f,因 此F/D的值越小,f的值越大,ETU的值越小,讀卡器通信速率越快。當(dāng)前的讀卡技術(shù)將基于 STM32F103平臺(tái)的系統(tǒng)時(shí)鐘設(shè)置為72Mhz,CLK取最大值為4. 5Mhz,F(xiàn)/D取最小值11. 625,得 出ETU的值為2. 58us,使得目前的最大通信速率只能達(dá)到387096bps。因此當(dāng)智能IC卡接 觸到讀卡器,讀卡器讀取智能IC卡的最高通信速率只能達(dá)到387096bps。然而隨著讀卡器 的廣泛應(yīng)用,人們對(duì)讀卡器的閱讀效率要求越來(lái)越高,387096bps的通信速率已經(jīng)滿足不了 現(xiàn)代人對(duì)讀卡器高速率的通信需求。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于提供一種STM32降頻實(shí)現(xiàn)高速率讀卡器的方法,該方法基于 STM32F103平臺(tái)的IS07816最高通信速率應(yīng)用,能夠提高讀卡器的通信速率,實(shí)現(xiàn)讀卡器高 速閱讀的目的。
[0004] 為解決上述技術(shù)問(wèn)題,本發(fā)明采用如下所述的技術(shù)方案。一種STM32降頻實(shí)現(xiàn)高 速率讀卡器的方法,包括以下步驟:初始化STM32微控制器的系統(tǒng)時(shí)鐘為48Mhz ;初始化 GPIO ;初始化STM32微控制器的USART接口為7816模式,系統(tǒng)時(shí)鐘設(shè)置為5分頻,CLK設(shè)置 為4. 8Mhz ;根據(jù)IETU = (F/D) X (Ι/f),得到ETU的最小值,其中F/D為波特率轉(zhuǎn)換因子,f 是IS07816/智能卡的CLK頻率。
[0005] 優(yōu)選地,初始化STM32微控制器系統(tǒng)時(shí)鐘,設(shè)置系統(tǒng)時(shí)鐘來(lái)源為PLL,將PLL系統(tǒng)時(shí) 鐘倍頻到48Mhz。
[0006] 優(yōu)選地,初始化STM32微控制器USART接口為智能卡模式,即STM32微控制器的 7816模式由USART接口的智能卡模式實(shí)現(xiàn)。
[0007] 優(yōu)選地,USART產(chǎn)生CLK頻率的算法如下:
[0008] 系統(tǒng)時(shí)鐘的分頻因子為:USART_GTPR[4:0] X2,依此將系統(tǒng)時(shí)鐘設(shè)置為5分頻,根 據(jù)預(yù)設(shè)算法CLK頻率=系統(tǒng)時(shí)鐘AUSART_GTPR[4:0] X2),得到CLK頻率為4. 8Mhz。
[0009] 優(yōu)選地,根據(jù)IETU = (F/D) X (1/f),可知F/D的值越小,f的值越大,ETU的值越 小,通信速率越快。
[0010] 優(yōu)選地,根據(jù)IS07816規(guī)范將F/D設(shè)置為最小值,即11. 625。
[0011] 優(yōu)選地,STM32微控制器選為STM32F103系列。
[0012] 本發(fā)明的有益技術(shù)效果在于:本發(fā)明采用STM32F103微型控制器,將系統(tǒng)時(shí)鐘設(shè) 置為48Mhz,系統(tǒng)時(shí)鐘5分頻得到CLK最大值為4. 8Mhz,依此ETU的最小值為2. 42us,根據(jù) ETU = (F/D) * (Ι/f),使最大通信速率達(dá)到412903bps,比原來(lái)主頻率為72Mhz時(shí)達(dá)到的通信 速率高出25807bps。本發(fā)明具有使讀卡器通信速率提高,讀卡器的閱讀速度加快,使用者的 滿意度提升的優(yōu)點(diǎn)。
【附圖說(shuō)明】
[0013] 圖1是本發(fā)明實(shí)施例的流程圖。
【具體實(shí)施方式】
[0014] 為使本領(lǐng)域的普通技術(shù)人員更加清楚地理解本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn),以 下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步的闡述。
[0015] 參考圖1所示,在本實(shí)施例中,該STM32降頻實(shí)現(xiàn)高速率讀卡器的方法包括以下步 驟:
[0016] 步驟SI:初始化堆棧;
[0017] 步驟S2 :初始化STM32微控制器的系統(tǒng)時(shí)鐘為48Mhz ;
[0018] 步驟 S3 :初始化 GPIO (General Purpose Input Output 通用輸入輸出);
[0019] 步驟S4 :初始化STM32微控制器的USART接口為7816模式,系統(tǒng)時(shí)鐘設(shè)置為5分 頻,CLK設(shè)置為4. 8Mhz ;
[0020] 步驟S5 :根據(jù)IETU = (F/D) X (1/f),得到ETU的最小值,其中F/D為波特率轉(zhuǎn)換 因子,f是IS07816/智能卡的CLK頻率。
[0021] 具體地,步驟Sl為初始化堆棧。STM32微控制器運(yùn)行或內(nèi)部函數(shù)執(zhí)行時(shí)要用到了 一些寄存器,對(duì)于這些寄存器的值,要先保存起來(lái),而后跳轉(zhuǎn)到子函數(shù)中去執(zhí)行,以防止其 被破壞。
[0022] STM32系統(tǒng)時(shí)鐘有三種不同的時(shí)鐘源:HSI振蕩器時(shí)鐘(由芯片內(nèi)部RC振蕩器提 供),HSE振蕩器時(shí)鐘(由芯片外部晶體振蕩器提供),PLL時(shí)鐘(通過(guò)倍頻HSI或HSE振蕩 器倍頻得到)。其中,HSI高速內(nèi)部時(shí)鐘是由內(nèi)部RC振蕩器產(chǎn)生的8MHz時(shí)鐘。HSE高速外 部時(shí)鐘是由外部4~16MHz的晶體或有源晶振提供,通常采用8MHz。8MHz外部晶體或晶振 輸入后,先經(jīng)過(guò)一個(gè)開(kāi)關(guān)PLLXTPRE(HSE divider forPLL entry),此開(kāi)關(guān)決定對(duì)HSE進(jìn)行2 分頻,再輸入到PLL或直接到PLL。這樣時(shí)鐘又到了第二個(gè)開(kāi)關(guān)PLLSRC (PLL entry clock source),此開(kāi)關(guān)決定PLL的時(shí)鐘來(lái)源是內(nèi)部高速時(shí)鐘二分頻的時(shí)鐘還是PLLXTPRE的輸出。 PLL倍頻器,由PLLMUL決定倍頻系統(tǒng)數(shù),可以選擇2~16倍頻輸出,但PLL輸出頻率最高 72MHz,這時(shí)的PLLCLK為USB提供時(shí)鐘時(shí)鐘在STM32USB的48MHz時(shí)鐘、系統(tǒng)時(shí)鐘SYSCLK、實(shí) 時(shí)時(shí)鐘模塊RTC、獨(dú)立看門狗的時(shí)鐘IWDGCLK。
[0023] 具體地,在本實(shí)施例中,步驟S2為初始化STM32微控制器系統(tǒng)時(shí)鐘,設(shè)置系統(tǒng)時(shí)鐘 來(lái)源為PLL,將PLL系統(tǒng)時(shí)鐘倍頻到48Mhz。即將進(jìn)入PLL的8Mhz進(jìn)行6倍頻后得到48Mhz, 藉由PLL系統(tǒng)時(shí)鐘的6倍頻可將系統(tǒng)時(shí)鐘設(shè)置為48Mhz。
[0024] 具體地,在STM32系統(tǒng)時(shí)鐘初始化為48Mhz后,步驟S3為初始化GPI0,以便啟動(dòng)系 統(tǒng)輸入輸出口。
[0025] 具體地,在本實(shí)施例中,步驟S4 :初始化STM32微控制器USAR