電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>單片機(jī)>基于單片機(jī)通用引腳的軟件UART設(shè)計(jì)方案解析

基于單片機(jī)通用引腳的軟件UART設(shè)計(jì)方案解析

2017-11-06 | rar | 0.5 MB | 次下載 | 1積分

資料介紹

 引言
  隨著單片機(jī)應(yīng)用技術(shù)的不斷深入,由單片機(jī)構(gòu)成的多機(jī)系統(tǒng)取得了長(zhǎng)足的發(fā)展,多個(gè)單片機(jī)之間以串口進(jìn)行數(shù)據(jù)傳輸,構(gòu)成復(fù)雜的主從式通訊網(wǎng)。在多機(jī)系統(tǒng)中的有一些單片機(jī)承擔(dān)著復(fù)雜的通訊任務(wù),當(dāng)計(jì)算機(jī)的串口不能滿(mǎn)足需要,就必須對(duì)串口進(jìn)行擴(kuò)展。如多參數(shù)醫(yī)用監(jiān)護(hù)儀、小區(qū)防盜報(bào)警系統(tǒng)、RS485總線(xiàn)控制系統(tǒng)等。
  目前擴(kuò)展串口的方法主要有以下方法, ①、采用串口擴(kuò)展芯片實(shí)現(xiàn),如ST16C550、ST16C554、SP2538、MAX3110等,雖然成本較高, 但系統(tǒng)的可靠性得到了保證,適用于數(shù)據(jù)量較大、串口需求較多的系統(tǒng);②、采用分時(shí)切換的方法將一個(gè)串口擴(kuò)展與多個(gè)串口設(shè)備通信,分時(shí)復(fù)用的方法成本低, 但只適用于數(shù)據(jù)量不大的場(chǎng)合, 并且只能由這個(gè)單片機(jī)主動(dòng)和多個(gè)設(shè)備通信,實(shí)時(shí)性差;③、用軟件模擬的方法擴(kuò)展串口,其優(yōu)勢(shì)也是成本低、實(shí)時(shí)性好, 但要占用一些CPU時(shí)間。
  一般的軟件模擬擴(kuò)展串口方法,使用1個(gè)I/O端口、1個(gè)INT外部中斷和定時(shí)器,該方法擴(kuò)展的串口有2個(gè)缺點(diǎn),①、由于使用了INT外部中斷,故只能使用2個(gè)INT外部中斷擴(kuò)展2個(gè)串口。②、文中的發(fā)送和接收數(shù)據(jù)的效率比較低,占用了CPU的大量時(shí)間,不能與其他任務(wù)同時(shí)進(jìn)行,所以使用范圍有限。
  本文提出的模擬串口方法,僅使用2個(gè)普通I/O和1個(gè)定時(shí)器,由于不需要INT的限制,可以擴(kuò)展出多個(gè)串口,且?guī)IFO的功能,該方法擴(kuò)展模擬串口的收發(fā)數(shù)據(jù)在中斷服務(wù)中完成,所以非常效率高,一般的單片機(jī)都支持定時(shí)器中斷,所以所以該方法在大多數(shù)單片機(jī)上都可以應(yīng)用。
  對(duì)于低速度的單片機(jī)(如89S51)可以擴(kuò)展出低速串口(9600、4800等),對(duì)于高速單片機(jī)(如AVR、PIC、C8051、STC12)可以擴(kuò)展高速串口(如19200、28800、38400、57600等)。目前單片機(jī)的處理速度越來(lái)越高,而價(jià)格越來(lái)越便宜,本文使用的STC12C1052芯片就具有高速度和低價(jià)格,價(jià)格僅為每片人民幣3.8元。電子產(chǎn)品的開(kāi)發(fā)設(shè)計(jì)時(shí),要求在保證性能的情況下降低硬件成本,軟件模擬擴(kuò)展串口提供了一種降低成本的好方法。
  1、串口通訊原理
  在串口的異步通信中,數(shù)據(jù)以字節(jié)為單位的字節(jié)幀進(jìn)行傳送,發(fā)送端和接收端必須按照相同的字節(jié)幀格式和波特率進(jìn)行通信,其中字節(jié)幀格式規(guī)定了起始位、數(shù)據(jù)位、寄偶效驗(yàn)位、停止位。起始位是字節(jié)幀的開(kāi)始,使數(shù)據(jù)線(xiàn)處于邏輯0狀態(tài),用于向接收端表明開(kāi)始發(fā)送數(shù)據(jù)幀,起到使發(fā)送和接收設(shè)備實(shí)現(xiàn)同步。停止位是字節(jié)幀的終止,使數(shù)據(jù)線(xiàn)處于邏輯1狀態(tài),用于向接收端表明數(shù)據(jù)幀發(fā)送完畢。波特率采用標(biāo)準(zhǔn)速度,如4800、9600、19200、28800、38400、57600等。
  2、軟件UART的設(shè)計(jì)思想
  在本設(shè)計(jì)對(duì)硬件要求方面,僅僅占用單片機(jī)的任意2個(gè)I/O端口和1個(gè)定時(shí)器,利用定時(shí)器的定時(shí)中斷功能實(shí)現(xiàn)精確的波特率定時(shí),發(fā)送和接收都在定時(shí)中斷的控制之下進(jìn)行。
  數(shù)據(jù)發(fā)送的思想是,當(dāng)啟動(dòng)字節(jié)發(fā)送時(shí),通過(guò)TxD先發(fā)起始位,然后發(fā)數(shù)據(jù)位和奇偶數(shù)效驗(yàn)位,最后再發(fā)停止位,發(fā)送過(guò)程由發(fā)送狀態(tài)機(jī)控制,每次中斷只發(fā)送1個(gè)位,經(jīng)過(guò)若干個(gè)定時(shí)中斷完成1個(gè)字節(jié)幀的發(fā)送。
  數(shù)據(jù)接收的思想是,當(dāng)不在字節(jié)幀接收過(guò)程時(shí),每次定時(shí)中斷以3倍的波特率監(jiān)視RxD的狀態(tài),當(dāng)其連續(xù)3次采樣電平依次為1、0、0時(shí),就認(rèn)為檢測(cè)到了起始位,則開(kāi)始啟動(dòng)一次字節(jié)幀接收,字節(jié)幀接收過(guò)程由接收狀態(tài)機(jī)控制,每次中斷只接收1個(gè)位,經(jīng)過(guò)若干個(gè)定時(shí)中斷完成1個(gè)字節(jié)幀的接收。
  為了提高串口的性能,在發(fā)送和接收上都實(shí)現(xiàn)了FIFO功能,提高通信的實(shí)時(shí)性。FIFO的長(zhǎng)度可以進(jìn)行自由定義,適應(yīng)用戶(hù)的不同需要。
  波特率的計(jì)算按照計(jì)算公式進(jìn)行,在設(shè)置最高波特率時(shí)一定要考慮模擬串口程序代碼的執(zhí)行時(shí)間,該定時(shí)時(shí)間必須大于模擬串口的程序的規(guī)定時(shí)間。單片機(jī)的執(zhí)行速度越快,則可以實(shí)現(xiàn)更高的串口通訊速度。
  3、軟件UART設(shè)計(jì)的實(shí)現(xiàn)
  本程序在宏晶科技(深圳)生產(chǎn)的STC12C1052高速單片機(jī)上進(jìn)行運(yùn)行測(cè)試,STC12C1052單片機(jī)是單時(shí)鐘/機(jī)器周期的MCS51內(nèi)核單片機(jī),與89C2051引腳完全兼容,其工作頻率達(dá)35MHz,相當(dāng)與420MHz的89C2051單片機(jī),每片人民幣3.8元。由于該單片機(jī)的高速度,使得軟件擴(kuò)展串口的方法,更方便實(shí)現(xiàn)高速的串口。
  本擴(kuò)展串口的設(shè)計(jì)中,STC12C1052使用的晶振頻率為22.1184Mhz,以波特率的3倍計(jì)算定時(shí)時(shí)間,在接收過(guò)程中以此定時(shí)進(jìn)行接收起始位的采樣,在發(fā)送和接收過(guò)程中再3分頻得到標(biāo)準(zhǔn)波特率定時(shí),進(jìn)行數(shù)據(jù)發(fā)送與接收。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1TC358743XBG評(píng)估板參考手冊(cè)
  2. 1.36 MB  |  330次下載  |  免費(fèi)
  3. 2開(kāi)關(guān)電源基礎(chǔ)知識(shí)
  4. 5.73 MB  |  6次下載  |  免費(fèi)
  5. 3100W短波放大電路圖
  6. 0.05 MB  |  4次下載  |  3 積分
  7. 4嵌入式linux-聊天程序設(shè)計(jì)
  8. 0.60 MB  |  3次下載  |  免費(fèi)
  9. 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
  10. 0.61 MB  |  2次下載  |  免費(fèi)
  11. 651單片機(jī)窗簾控制器仿真程序
  12. 1.93 MB  |  2次下載  |  免費(fèi)
  13. 751單片機(jī)大棚環(huán)境控制器仿真程序
  14. 1.10 MB  |  2次下載  |  免費(fèi)
  15. 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
  16. 0.86 MB  |  2次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33564次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6653次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537796次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191185次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)