999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于KL25的UART通信UHM構(gòu)件研究與實現(xiàn)

2014-02-08 09:08:20曹金華王宜懷
實驗室研究與探索 2014年9期
關(guān)鍵詞:信息

楊 炯, 曹金華, 王宜懷

(蘇州大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,江蘇 蘇州 215006)

0 引 言

串行通信接口(簡稱串行口或串口,可簡寫為UART,或SCI)在USB未普及之前,是PC機必備的通信接口之一。作為設(shè)備之間簡便的通信方式,在相當(dāng)長的時間內(nèi),串行口還不會消失,并且在市場上也可很容易地購買到USB到串行口的轉(zhuǎn)接器。因為簡單且常用,該通信只需要三根線(發(fā)送線、接收線和地線),所以UART仍然是MCU與外界通信的簡便方式之一,為現(xiàn)實中的開發(fā)帶來極大方便。正因為該通信簡單,在實際應(yīng)用中卻常常不敢使用而采用復(fù)雜的通信方式,比如CAN、USB、以太網(wǎng)等,其實通信穩(wěn)定可靠不在于協(xié)議復(fù)雜,而是有問題能否解決,據(jù)統(tǒng)計,通信中如果出錯,而一位出錯的可能很大[1],大約90%的誤碼率,所以抑制一位出錯,可以大大解決通信帶來的錯誤。利用UART自身帶有的奇偶校驗方式,因為奇偶校驗?zāi)軝z驗、但不能糾正一位錯等缺陷,所以采用能自動糾正一位錯且檢驗兩位錯的海明碼方式。

2012年3月14日,ARM公司于中國上海發(fā)布了一款擁有全球最低功耗的微處理器ARM Cortex-M0+[2-3]。該處理器采用低成本的90納米低功耗(Low Power,LP)工藝,耗電量僅為9 μA/MHz;飛思卡爾公司在以該微處理器為核的MKL25Z128VLK4[4-6](簡稱KL25)芯片中,仍然包含了三個UART模塊,其實飛思卡爾的芯片大多數(shù)包含二個以上,遠比其他通信模塊高,因此探討UART高可靠性應(yīng)用的研究實現(xiàn)具有非常現(xiàn)實意義。

為了方便軟件編程和推廣應(yīng)用,本文將研究UART通信結(jié)合海明碼校驗技術(shù)形成UHM構(gòu)件[7-8](結(jié)合海明碼校驗技術(shù)的UART通信構(gòu)件的簡寫)的實現(xiàn)問題。

以ARM公司最新微處理器ARM Cortex-M0+的飛思卡爾KL25芯片為硬件基礎(chǔ)。

1 UART的通信要素

UART的通信運用具有初始化、接收和發(fā)送三種基本操作[3,9-10]。

初始化基本操作,完成UART通信工作所需的時鐘源選擇、傳輸方式選擇、是否奇偶校驗、數(shù)據(jù)幀格式等工作模式設(shè)置,以及反映傳輸速度的波特率設(shè)置。

發(fā)送基本操作,是通過移位寄存器將數(shù)據(jù)寄存器中字節(jié)型一幀數(shù)據(jù)的變成一位位串行數(shù)字,輸送至數(shù)據(jù)線上,發(fā)送時機是通過判斷狀態(tài)寄存器UARTx_S1的第7位(TDRE)進行的。

若該位為0,說明發(fā)送緩沖區(qū)還沒有空閑,待發(fā)送的數(shù)據(jù)還不能裝入其中,需繼續(xù)等待,若該位為1,說明發(fā)送緩沖區(qū)空閑了,待發(fā)送的數(shù)據(jù)能裝入發(fā)送緩沖區(qū)中,以便發(fā)送出去。

發(fā)送基本語句(以C語言為例):

while((UART0_S1&(1<<7))==0); //UART0循環(huán)等待發(fā)送緩沖區(qū)空閑,以便能夠發(fā)送數(shù)據(jù)

UART0_D=SendData;

接收基本操作,是將數(shù)據(jù)線上的一位位數(shù)據(jù),接收下來并通過移位寄存器變成字節(jié)型一幀數(shù)據(jù)存入數(shù)據(jù)寄存器,接收時機是通過判斷狀態(tài)寄存器UARTx_S1的第5位(RDRF)進行的。若該位為0,說明所接收的一幀數(shù)據(jù)還沒有都裝入接收緩沖區(qū),需繼續(xù)等待,若該位為1,說明所接收的一幀數(shù)據(jù)都裝入接收緩沖區(qū)中,可以將該幀取走,以便繼續(xù)接收下一幀。

接收基本語句(以C語言為例):

while(UART0_S1&(1<<5)==0); //UART0循環(huán)等待接收緩沖區(qū)裝滿,以便取走所接收的數(shù)據(jù)

ReData =UART0_D;

2 海明碼技術(shù)的要素

海明碼校驗技術(shù)[11]是由Richard Hamming于1950年提出的,其實現(xiàn)原理是在信息碼中加入幾個校驗位,將信息碼的每個二進制位分配在幾個奇偶校驗組中,若某一位(不論信息碼還是校驗碼)出錯后,根據(jù)所接收的海明碼進行偶校驗,計算出哪位出錯,并糾錯。

比如8位信息碼,為了便于計算哪位出錯,將信息碼(D8…D2D1)和校驗碼(P4…P2P1)一起組合在海明碼(H12…H2H1)中,注:海明碼下標(biāo)從1開始計數(shù),信息碼順序不變填入海明碼中,但其中海明碼的下標(biāo)為2m留給校驗碼填寫,即1、2、4、8位。為了區(qū)別一位出錯還是兩位出錯,增加一位校驗碼P5,在海明碼中位據(jù)H13。

為了便于編程,在此稍作變動,上述海明碼(H13…H2H1)本來需占用兩個字節(jié),但讓其中一個字節(jié)保存信息碼,一個字節(jié)保存校驗碼,即只是不讓信息碼與校驗碼不混排,但關(guān)系保持不變,在編程中會體現(xiàn)。

2.1 發(fā)送方的形成海明碼

比如發(fā)送方信息碼為D8…D2D1,檢驗一位錯誤并糾正需要校驗碼四個,即P4、P3、P2、P1

設(shè)海明碼為H12H11H10H9H8H7H6H5H4H3H2H1

P4、P3、P2、P1根據(jù)規(guī)則,分別位于:H8、H4、H2、H1

而D8、D7、D6、D5、D4、D3、D2、D1分別位于:H12、H11、H10、H9、H7、H6、H5、H3

據(jù)海明碼校驗規(guī)則[2],校驗碼的值由下列公式1~4計算:

P1=D1?D2?D4?D5?D7

(1)

P2=D1?D3?D4?D6?D7

(2)

P3=D2?D3?D4?D8

(3)

P4=D5?D6?D7?D8

(4)

為了分清是兩位出錯還是一位出錯,還要補充一個總校驗位P5,使:

(5)

P5位于H13。

為了方便編程,信息碼單獨占用一個字節(jié),校驗碼占用一個字節(jié)的后5位。

由此編程實現(xiàn)發(fā)送方由信息碼得到校驗碼,然后一起發(fā)送。

該函數(shù)頭如下。

//函數(shù)名稱:send_hmma

//函數(shù)參數(shù):data:8位信息碼。

//函數(shù)返回:產(chǎn)生校驗位編碼(低5位有效)

//功能概要:發(fā)送方對8位信息碼產(chǎn)生5位校驗碼

uint_8 send_hmma(uint_8 data)

2.2 接收方檢驗數(shù)據(jù)編碼

接收方收到的海明碼,根據(jù)海明碼校驗規(guī)則進行校驗,先由式10校驗是一位出錯還是兩位出錯。若一位出錯再由式(6)~(9),檢驗出錯位置,即S4S3S2S1組合值反映該出錯位置值。

若由式(10)得到兩位出錯,丟失所得數(shù)據(jù)。

為了方便編程,信息碼單獨占用一個字節(jié),校驗碼占用一個字節(jié)的后5位。

由此編程實現(xiàn)由所接收的海明碼根據(jù)海明碼檢驗規(guī)則判斷所接收數(shù)據(jù)是否正確,檢查發(fā)送過程中因干擾而出現(xiàn)的一位錯誤并糾正,而保證接收方所接收信息的準(zhǔn)確。若多位錯誤只能丟棄。

該函數(shù)頭如下。

//函數(shù)名稱:re_hmma

//函數(shù)參數(shù):*data:數(shù)據(jù)位(通過指針可返回糾正后數(shù)據(jù)值);

// check:校驗位。

//函數(shù)返回:0=正確;1=兩位錯

//功能概要:接收方對13位海明碼糾錯并產(chǎn)生8位正確接收數(shù)據(jù)

uint_8 re_hmma(uint_8 *data,uint_8 check)

3 UHM構(gòu)件的實現(xiàn)

根據(jù)UART的初始化、接收和發(fā)送三種基本操作,按照構(gòu)件的思想[7],可將它們封裝成三個獨立對外的功能函數(shù),而海明碼的形成和檢錯糾正函數(shù)為內(nèi)部的功能函數(shù)。UART初始化函數(shù)完成對UART模塊的工作屬性的設(shè)定,接收和發(fā)送功能函數(shù)則完成實際的通信任務(wù),其通信過程中的驗錯糾錯由海明碼形成和檢錯糾正功能函數(shù)完成。對UART模塊進行編程,其中涉及到對硬件底層寄存器的直接操作,因此,可將初始化、接收、發(fā)送三種基本操作所對應(yīng)的功能函數(shù)共同放置在命名為uart.c的文件中,海明碼形成和檢錯糾正函數(shù)作為內(nèi)部函數(shù)也放置在uart.c中,并按照相對嚴(yán)格的構(gòu)件設(shè)計原則[2]對其進行封裝,同時配以命名為uart.h的頭文件,用來定義模塊的基本信息和對外接口。

根據(jù)以上構(gòu)件思想,形成以下三個對外函數(shù),其中初始化函數(shù)實現(xiàn)流程圖見圖1。

圖1 UART的初始化

初始化函數(shù)頭如下:

//函數(shù)名稱:uart_init

//功能概要:初始化uart模塊

//參數(shù)說明:uartNo:串口號:UART_0、UART_1、UART_2

// sel_clk:選擇串口0時,時鐘源為MCGIRCLK(4 000 Khz)或MCGPLL(48 000 Khz)

// 選擇串口1、2時,時鐘源為BUSCLK(24 000 Khz)

// baud:波特率:300、600、1 200、2 400、4 800、9 600、19 200、115 200 bps

//函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常

//說 明:sel_clk若選擇內(nèi)部時鐘MCGIRCLK,波特率需小于19 200

void uart_init (uint_8 uartNo,uint_32 sel_clk,uint_32 baud_rate);

發(fā)送函數(shù)實現(xiàn)流程圖如圖2所示。

函數(shù)頭如下:

//函數(shù)名稱:uart_send1

//參數(shù)說明:uartNo: 串口號:UART_0、UART_1、UART_2

// ch :要發(fā)送的字節(jié)

// yn :是否要海明碼校驗: yn =0,不要;yn =1,要

//函數(shù)返回:函數(shù)執(zhí)行狀態(tài):0=正常;非0=異常。

//功能概要:UART發(fā)送1個或者2個字節(jié)(2個中第一個為海明校驗碼)

uint_8 uart_send1(uint_8 uartNo, uint_8 ch, uint_8 yn);

接收函數(shù)實現(xiàn)流程圖如圖3所示,函數(shù)頭如下。

//函數(shù)名稱:uart_re1

//參數(shù)說明:uartNo: 串口號:UART_0、UART_1、UART_2

// fp:接收成功標(biāo)志的指針:*fp=0,成功接收;*fp=1,接收失敗

// yn:是否要海明碼校驗: yn=0,不要;yn=1,要

//函數(shù)返回:接收返回1個字節(jié)

//功能概要:UART共接收1個或者2個字節(jié)

uint_8 uart_re1 (uint_8 uartNo,uint_8 *fp, uint_8 yn);

圖2 uart_send1函數(shù)流程圖 圖3 uart_re1函數(shù)流程圖

4 構(gòu)件的測試工程

為了檢驗UHM構(gòu)件的驗錯糾錯功能,在即將發(fā)送的海明碼里,有意改變其中某一位,使之成為錯誤的編碼,再發(fā)送,接收方接到編碼,由程序處理,若糾錯成正確碼,則說明該程序編程沒有問題,否則程序要調(diào)試修正。

為了UHM構(gòu)件的測試,搭建PC與MCU通信,PC方用C#語言編程實現(xiàn)串行口通信含海明碼校驗進行接收發(fā)送數(shù)據(jù)的功能。

運行界面如圖4所示。通信測試方式有兩種:

(1) MCU端形成海明碼并發(fā)送海明碼,PC端接收海明碼并驗錯糾錯。點擊“發(fā)送信息(Send Info)”,PC機將信息碼D8…D1發(fā)送給MCU,并將海明碼是否校驗和人工干預(yù)的某位出錯位號等指令也發(fā)送給MCU,MCU接收到信息碼后,按照指令將信息碼轉(zhuǎn)換為海明碼,及海明碼對應(yīng)位號數(shù)字變動,成為出錯的海明碼,然后將出錯的海明碼,發(fā)送給PC機,PC機將進行海明碼驗錯糾錯處理,并顯示。

(2) PC端形成海明碼并發(fā)送海明碼,MCU端接收海明碼并驗錯糾錯。通過串行口,點擊“發(fā)送數(shù)據(jù)(Send Data)”按鈕,PC機將信息碼D8…D1和校驗碼P5…P1一起發(fā)送給MCU,其中含人工干預(yù)的某一位出錯,MCU接收到編碼后進行海明碼驗錯糾錯處理,再回送給PC機顯示。

圖4 測試UHM構(gòu)件的工程運行界面

5 結(jié) 語

通過以上的KL25的UART通信的融入海明碼校驗技術(shù)的編程設(shè)計,構(gòu)建了3個可移植并重用于Freescale. Kinetis L系列所有UART的構(gòu)件,通過了測試并進行了封裝,使得該校驗技術(shù)UART通信的應(yīng)用變得易用又可靠。但在抗干擾非常強的場合,引起多位錯差,這將無法糾正與檢測出來,可考慮采用檢錯能力更強的編碼(如循環(huán)冗余校驗碼),但冗余度相應(yīng)會大大增加。或者在硬件方面同時使用差分方式完善UART通信,差分方式的使用并不影響軟件編程,如此將大大提高UART的應(yīng)用前景。

本測試工程不僅應(yīng)用于系統(tǒng)開發(fā)中,而且是理解和掌握海明碼校驗概念的好實驗題材方案[12-13],完成項目與實踐教學(xué)的轉(zhuǎn)換[14-15],所以該測試工程已應(yīng)用于硬件實驗室[16],輔助學(xué)生理解掌握概念。

[1] 趙軍軍.海明碼在微機信息傳輸中的糾錯原理與應(yīng)用[J].寶雞文理學(xué)院學(xué)報(自然科學(xué)版),1997,17(1):54-58.

ZHAO Jun-jun. Error-correcting Principle And Applications In Microcomputer Information Transmission With Hamming code[J].Baoji University of Arts and Sciences Journals Press(Natural Science Edition),1997,17(1):54-58.

[2] ARM. Cortex-M0+ Technical Reference Manual Rev.r0p0[EB/OL]. http://www.freescale.com.cn,2012.

[3] 王宜懷,朱仕浪,郭 蕓.嵌入式技術(shù)基礎(chǔ)與實踐教程(第3版)[M].北京:清華大學(xué)出版社,2013:26-155.

[4] Freescale. Kinetis L Peripheral Module Rev.0[EB/OL]. http://www.freescale.com.cn,2012.

[5] Freescale Inc. KL25 Sub-Family Reference Manual Rev.3[EB/OL]. http://www.freescale.com.cn,2012.

[6] 曹金華,賀黎瀟,沈安東,等.基于KL25的AD轉(zhuǎn)換動態(tài)在線校正技術(shù)[J].實驗室研究與探索,2013,212(10):249-252.

CAO Jinhua,He Li-xiao,Shen An-dong.AD Conversion Technique of Online Dynamic Reviser Based on KL25[J].Research and Exploration in Laboratory, 2013,212(10):249-252.

[7] 蔣銀珍,王宜懷,王加俊. 基于硬件構(gòu)件的底層軟件構(gòu)件開發(fā)方法研究[J].微計算機信息, 2010,309(14):77-79.

JIANG Yin-zhen, WANG Yi-huai, WANG Jia-jun. Development Method Research for Bottom Driver Based on EHC[J].Microcomputer Information, 2012,185(2):91-94.

[8] 曹金華,李 映,沈安東,等. 基于XS128的P-Flash之ICP構(gòu)件的設(shè)計與實現(xiàn)[J].實驗技術(shù)與管理,2012(2):91-94.

CAO Jinhua,LI Ying,SHEN An-dong.Design And Implementation Based On XS128 P-Flash ICP Compents[J]. Experimental Technology and Management,2012(2):91-94.

[9] 王宜懷,曹金華.嵌入式系統(tǒng)設(shè)計實踐——基于飛思卡爾S12X微控制器[M].北京:北京航空航天大學(xué)出版社,2011:157-165.

[10] 王宜懷,陳建明,蔣銀珍.基于32位ColdFire構(gòu)建嵌入式系統(tǒng)[M].北京:電子工業(yè)出版社,2009:82-92.

[11] 王愛英.計算機組成與結(jié)構(gòu)(第5版)[M].北京:清華大學(xué)出版社,2013:62-64.

[12] 張清祥.探索實驗教學(xué)載體,培養(yǎng)學(xué)生實踐創(chuàng)新能力[J].實驗技術(shù)與管理, 2012,29(2):130-133.

ZHANG Qing-xiang.Exploring A Carrier For Exercising Experiment And Practice And Cultivating Students’ Innovative Practice Ability[J]. Experimental Technology and Management, 2012,29(2):130-133.

[13] 李曉勇,周麗濤.提升計算機專業(yè)實踐能力的研究與探索[J].計算機教育,2010(1):116-118.

LI Xiao-yong,ZHOU Li-tao. Research And Exploration Of Enhancing Computer Professional Practice.Competer Education, 2010(1):116-118.

[14] 徐 昊.以“項目”為引擎,探索“工學(xué)結(jié)合”實踐教學(xué)新方法[J].計算機教育,2010(17):126-128.

XU Hua.Discussion on Work-integrated Learning Method Based on Engine of Projects[J].Competer Education,2010(17):126-128.

[15] 官 頌,張 鵬,董艇艦,等.擴招背景下提高實踐教學(xué)質(zhì)量的方法研究與實踐[J].實驗技術(shù)與管理, 2011,28(8):126-128,132.

GUAN Song,ZHANG Peng,DONG Tingjian,etal.Research and practice on improving quality of practical teaching under background of enrollment expansion[J].Experimental Technology and Management,2011,28(8):126-128,132.

[16] 馬漢達,鮑可進.計算機硬件課程實驗教學(xué)改革與實踐[J].實驗室研究與探索,2013(10):360-362.

MA Han-da,BAO Ke-jin.Reform and practice of experimental teaching of computer hardware[J].Research and Exploration in Laboratory, 2013(10):360-362.

猜你喜歡
信息
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息超市
展會信息
展會信息
展會信息
展會信息
展會信息
信息
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 一级毛片免费的| 四虎成人在线视频| 女人av社区男人的天堂| 五月婷婷亚洲综合| 国产精品亚洲五月天高清| 久久一本日韩精品中文字幕屁孩| 国产成人AV男人的天堂| 亚洲精品动漫在线观看| 男女精品视频| 欧美在线一级片| 成人毛片在线播放| 日韩欧美中文在线| 久久久久久尹人网香蕉| 中文无码毛片又爽又刺激| 国产精品欧美日本韩免费一区二区三区不卡 | 色网站在线免费观看| 亚洲精品中文字幕无乱码| 亚洲成a∧人片在线观看无码| 婷婷色丁香综合激情| 精品国产网| 国产成人无码AV在线播放动漫 | 欧美一级黄片一区2区| 小说 亚洲 无码 精品| 午夜日b视频| 岛国精品一区免费视频在线观看| 国产成人精品免费av| 伊人久久综在合线亚洲91| 国产精品自在在线午夜区app| 久久婷婷六月| 在线观看国产网址你懂的| 秘书高跟黑色丝袜国产91在线 | 宅男噜噜噜66国产在线观看| 久久亚洲AⅤ无码精品午夜麻豆| 精品久久香蕉国产线看观看gif| 久久精品人人做人人综合试看| 亚洲欧美日韩动漫| 久久精品亚洲专区| 国产极品粉嫩小泬免费看| 极品国产在线| 国产女人18毛片水真多1| 扒开粉嫩的小缝隙喷白浆视频| 无码一区18禁| 2021精品国产自在现线看| 国产精品第5页| 99人体免费视频| 99视频在线免费观看| 四虎国产成人免费观看| 无码网站免费观看| 精品福利视频网| 欧美在线一二区| 久久天天躁狠狠躁夜夜躁| 中文字幕亚洲综久久2021| 人与鲁专区| 久久精品欧美一区二区| 91丝袜乱伦| 欧洲亚洲欧美国产日本高清| 国产v精品成人免费视频71pao| 99re在线视频观看| 老司机午夜精品网站在线观看 | 激情视频综合网| 91成人在线观看| 亚洲精品va| 五月天久久婷婷| 精品国产成人高清在线| 91成人免费观看| 夜夜爽免费视频| 热九九精品| 欧美色99| yjizz国产在线视频网| 国产自在线播放| 福利在线一区| 欧美午夜视频在线| 国产一区二区丝袜高跟鞋| 91香蕉国产亚洲一二三区 | 亚洲天堂精品在线观看| 午夜一级做a爰片久久毛片| 97国产成人无码精品久久久| 好紧好深好大乳无码中文字幕| 欧美午夜小视频| 亚洲日韩高清在线亚洲专区| a毛片基地免费大全| 国产亚洲美日韩AV中文字幕无码成人 |