《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于μPD78045F單片機(jī)的軟件UART
基于μPD78045F單片機(jī)的軟件UART
摘要: 本文給出在μPD78045F上采用軟件模擬方式,使用2個(gè)I/O口線和一個(gè)8位定時(shí)器實(shí)現(xiàn)異步串行UART功能的方法,。本方法占用資源少,,設(shè)置和使用簡(jiǎn)單方便,幀格式可自由改變,。
Abstract:
Key words :

       引  言

       單片機(jī)在數(shù)據(jù)采集與控制,、智能儀表中發(fā)揮重要的作用。單片機(jī)應(yīng)用系統(tǒng)與后端上位機(jī)系統(tǒng)之間通訊進(jìn)行數(shù)據(jù)交換,,構(gòu)成功能強(qiáng)大的測(cè)控系統(tǒng)是目前發(fā)展的趨勢(shì),。

       NEC公司生產(chǎn)的μPD78045F是78K0系列8位單片機(jī)功能較強(qiáng)的044F子系列的最高型號(hào)。該芯片功能強(qiáng),、可靠性高,、速度快、支持節(jié)電應(yīng)用,。美中不足的是,,該芯片的2個(gè)串行I/O口雖然功能強(qiáng),卻只支持同步通訊,,沒有異步通訊功能,。

       本文給出在μPD78045F上采用軟件模擬方式,使用2個(gè)I/O口線和一個(gè)8位定時(shí)器實(shí)現(xiàn)異步串行UART功能的方法,。本方法占用資源少,,設(shè)置和使用簡(jiǎn)單方便,幀格式可自由改變,。

       設(shè)計(jì)思路

    &nb

 

sp;  每一個(gè)UART都應(yīng)具備如下功能:

       異步串行發(fā)送和接收的基本單位是幀,,通常每幀包括以下部分:

       本設(shè)計(jì)中,發(fā)送采用主動(dòng)查詢方式,,可使用任一輸出端口,,本文中將P12.1設(shè)置為輸出口,作為TxD,;由于異步通訊中接收是被動(dòng)的和隨機(jī)的,,因此只能采用中斷方式,P0.1是外部中斷INTP1的外部引腳,,設(shè)計(jì)中使用它作為RxD,,設(shè)置為下降沿觸發(fā)方式,,可及時(shí)檢測(cè)到起始位的邏輯0電平,進(jìn)入中斷處理程序進(jìn)行數(shù)據(jù)接收,。

       波特率發(fā)生器使用8位定時(shí)器TM1,,產(chǎn)生指定波特率下的1個(gè)發(fā)送/接收位時(shí)序長(zhǎng)度,即“位定時(shí)”,。UART的并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換,、每幀數(shù)據(jù)格式的生成、發(fā)送和接收功能都由軟件來控制完成,。在指定波特率下,,位定時(shí)為1,000,000ms / 波特率,硬件系統(tǒng)采用fx=4.9152 MHz的主晶振,,軟件設(shè)置定時(shí)器計(jì)數(shù)時(shí)鐘為4分頻,,即:fx/4=1.2288 MHz  ,達(dá)到指定波特率位定時(shí)常數(shù)為:1228800 / 波特率 ,。常用的波特率對(duì)應(yīng)的位定時(shí)常數(shù)列在表1中,。

常用的波特率對(duì)應(yīng)的位定時(shí)常數(shù)


       以下設(shè)置通訊參數(shù)為9600波特率,1位起始位,,6位數(shù)據(jù)位,,發(fā)送順序從MSB到LSB,偶校驗(yàn),,2位停止位,。

 

 

軟件初始化的C語(yǔ)言程序

發(fā)送過程流程圖

                                                                 圖1 發(fā)送過程流程圖

接收過程流程圖

                                                            圖2 接收過程流程圖

       軟件流程 

       發(fā)送

      
發(fā)送過程采用主動(dòng)查詢方式完成,為保證每個(gè)發(fā)送位的時(shí)長(zhǎng)相同,,整個(gè)過程關(guān)閉中斷,。首先,設(shè)定定時(shí)器定時(shí)一位時(shí)長(zhǎng),,啟動(dòng)定時(shí)器,,關(guān)閉中斷,開始一幀的發(fā)送,;然后,,在發(fā)送一位時(shí)長(zhǎng)的低電平(起始位)后,按最高位在先的順序依次發(fā)送6個(gè)數(shù)據(jù)位,,同時(shí)計(jì)算偶校驗(yàn)位,,并在數(shù)據(jù)位后發(fā)送;最后,,發(fā)送2位時(shí)長(zhǎng)高電平作為停止位,,結(jié)束一幀的發(fā)送。關(guān)閉定時(shí)器,開放中斷,,發(fā)送過程結(jié)束,。發(fā)送流程見圖1。

       接收

      
接收過程是在中斷處理程序中完成的,。中斷是由下降沿觸發(fā)的,,進(jìn)入中斷的時(shí)刻是處在接收起始位的時(shí)段。為了保證接收準(zhǔn)確,,在檢測(cè)到起始位后,,不能在每一位時(shí)長(zhǎng)的開始而應(yīng)在其中間進(jìn)行采樣。進(jìn)入中斷程序后,,首先通過設(shè)定定時(shí)器,,等待一位半時(shí)長(zhǎng),跳過整個(gè)起始位和半時(shí)長(zhǎng)的首個(gè)數(shù)據(jù)位,,然后開始按最高位在先的協(xié)議接收六個(gè)時(shí)長(zhǎng)的數(shù)據(jù)位,每接收一位進(jìn)行串并轉(zhuǎn)換和校驗(yàn)位計(jì)算,;隨后接收校驗(yàn)位并與計(jì)算機(jī)結(jié)果比較,,確定是否接收

 

正確。出于簡(jiǎn)化程序,,校驗(yàn)位接收完畢后,,沒有讀取停止位。最后關(guān)閉定時(shí)器,,結(jié)束接收過程,,中斷返回。

       在μPD78045F的中斷系統(tǒng)中,,高優(yōu)先級(jí)中斷的響應(yīng)時(shí)間最長(zhǎng)32個(gè)CPU時(shí)鐘,,這些時(shí)延應(yīng)在程序中進(jìn)行補(bǔ)償,尤其在高速率通訊時(shí)位定時(shí)時(shí)長(zhǎng)很短,,補(bǔ)償尤為重要,。補(bǔ)償?shù)姆椒ㄊ菑奈欢〞r(shí)中減去最長(zhǎng)時(shí)延32個(gè)時(shí)鐘。在9600波特率,、定時(shí)器 4分頻計(jì)數(shù)情況下,,應(yīng)減去 32/4=8個(gè)定時(shí)器計(jì)數(shù)。接收中斷處理流程見圖2,。

       結(jié)語(yǔ)

      
本文介紹的軟件UART實(shí)現(xiàn)方法,,已在項(xiàng)目中實(shí)際應(yīng)用,達(dá)到功能要求,,工作穩(wěn)定可靠,。從以上方案可以看出,本方法的最高波特率可達(dá)38400,,每一幀的格式可靈活改變,,其中數(shù)據(jù)位長(zhǎng)度和發(fā)送順序均沒有限制,,可根據(jù)需要發(fā)送數(shù)十位的數(shù)據(jù)位。

       使用本方法應(yīng)具備以下條件:

       本方法占用外部連線少,,穩(wěn)定可靠,,使用方便,簡(jiǎn)單有效,,由于其幀格式的巨大靈活性,,是在低成本、中速率,、特殊數(shù)據(jù)傳輸場(chǎng)合下的一個(gè)較好選擇,。


參考文獻(xiàn):
1.        NEC Corporation,‘μPD78045F SUBSERIES USER'S MANUAL’,,1996 

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。