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

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

3天內(nèi)不再提示

基于AT89C51單片機(jī)實(shí)現(xiàn)串行總線芯片測(cè)試實(shí)驗(yàn)平臺(tái)的設(shè)計(jì)

電子設(shè)計(jì) ? 來源:電子技術(shù)應(yīng)用 ? 作者:夏繼強(qiáng),邢春香, ? 2021-06-17 11:09 ? 次閱讀

作者:夏繼強(qiáng),邢春香,盧明臻,滿慶豐

應(yīng)用串行接口芯片擴(kuò)展系統(tǒng)時(shí),在初步選擇了串行接口的芯片后,為了對(duì)芯片的資源更好地了解,開發(fā)者一般在系統(tǒng)設(shè)計(jì)前搭建一個(gè)簡(jiǎn)單的硬件電路并編制相應(yīng)的軟件對(duì)其測(cè)試,待性能驗(yàn)證后再確定最終的設(shè)計(jì)方案?本文根據(jù)這一需要設(shè)計(jì)了一個(gè)用于串行總線芯片測(cè)試的實(shí)驗(yàn)平臺(tái)?該平臺(tái)以PC機(jī)為人機(jī)接口?采用單片機(jī)產(chǎn)生芯片串行通信時(shí)序?應(yīng)用這一平臺(tái)可以大大簡(jiǎn)化芯片使用前的測(cè)試過程?這一平臺(tái)也為單片機(jī)串行擴(kuò)展的初學(xué)者提供了快捷的學(xué)習(xí)工具?本平臺(tái)目前集成了SPI?One-wire?Microware?I2C四種串行接口,在今后的使用中,可根據(jù)需要增加串行接口的種類?

1 串行擴(kuò)展平臺(tái)的結(jié)構(gòu)

SPI?One-wire?Microware?I2C是目前單片機(jī)應(yīng)用系統(tǒng)中最常用的幾個(gè)串行擴(kuò)展接口?具有I2C和One-wire接口的外圍器件都有自己的地址編號(hào),單片機(jī)通過軟件選通器件;而SPI和Microware擴(kuò)展接口芯片首先要通過單片機(jī)I/O口線選通其片選腳,然后才能對(duì)其進(jìn)行操作?這四種串行擴(kuò)展接口都有不同的時(shí)序要求,但每一種總線的基本時(shí)序要求都是一致的,對(duì)芯片的操作無非是讀出或?qū)懭?,所不同的是具體的數(shù)據(jù)字節(jié)內(nèi)容,只要按照各自的時(shí)序和命令操作,即可實(shí)現(xiàn)芯片功能?本文的串行擴(kuò)展平臺(tái)就是基于這一方法搭建的? 串行擴(kuò)展平臺(tái)由兩部分組成:上位機(jī)部分由PC機(jī)構(gòu)成,具有人機(jī)接口界面,操作起來方便直接;下位機(jī)部分由單片機(jī)及擴(kuò)展接口電路構(gòu)成,并通過RS-232接口與上位機(jī)通信?

下位機(jī)的核心是AT89C51單片機(jī)?單片機(jī)本身并沒有SPI?One-wire?Microware?I2C接口,使用虛擬器件技術(shù),在單片機(jī)內(nèi)采用模塊化設(shè)計(jì)思想固化四種接口的串行訪問子程序,通過軟件調(diào)用完成這幾種串行擴(kuò)展的時(shí)序,用單片機(jī)的普通I/O口線模擬出四種串行接口,在下位機(jī)電路板上留有較大的通用板空間或用標(biāo)準(zhǔn)的連接器將串行接口引出,便于與待測(cè)芯片連接?AT89C51單片機(jī)沒有RS-232接口,但它的UART口可以采用MAX232等芯片擴(kuò)展出簡(jiǎn)單的RS-232接口,與上位機(jī)的RS-232接口相接?下位機(jī)的結(jié)構(gòu)如圖1所示?

測(cè)試時(shí),將待測(cè)芯片與對(duì)應(yīng)的串行接口相連,操作者在上位機(jī)將訪問命令和數(shù)據(jù)通過RS-232接口下傳給下位機(jī);下位單片機(jī)對(duì)其分析后調(diào)用相應(yīng)的時(shí)序模擬程序訪問待測(cè)芯片,并將結(jié)果通過RS-232接口上傳給上位機(jī),在上位機(jī)顯示?從整個(gè)測(cè)試過程來看,只要關(guān)心命令和數(shù)據(jù)的輸入和輸出,不必關(guān)心具體時(shí)序,近似一種透明的操作?測(cè)試后,只需對(duì)單片機(jī)中的子程序稍加裁減,即可移植到實(shí)際應(yīng)用軟件中,為開發(fā)提供了方便?下面將分別介紹這四種串行通信接口的實(shí)現(xiàn)?

2 四種串行通信接口的實(shí)現(xiàn)

在串行擴(kuò)展中,可以根據(jù)接口主器件的數(shù)量分為單主器件系統(tǒng)和多主器件系統(tǒng)?其中單主器件系統(tǒng)應(yīng)用最普遍?在單主器件系統(tǒng)中,具有一個(gè)主控制器件和多個(gè)從器件,數(shù)據(jù)的傳送由主器件控制?主器件啟動(dòng)和停止數(shù)據(jù)的發(fā)送,提供同步時(shí)鐘信號(hào)?在應(yīng)用中使用種類最多的是功能繁多的從器件?本文的串行擴(kuò)展平臺(tái)主要針對(duì)這些從器件應(yīng)用設(shè)計(jì)?所以該平臺(tái)采用單主器件系統(tǒng)結(jié)構(gòu),只考慮用單片機(jī)的通用I/O口線模擬主器件訪問從器件的時(shí)序邏輯?

2.1 I2C總線接口時(shí)序

I2C串行總線是Philips公司提出的一種板內(nèi)芯片間串行總線?它用兩根連線即可方便地實(shí)現(xiàn)外圍器件擴(kuò)展?圖2給出了主器件對(duì)從器件訪問的基本讀寫時(shí)序,SDA為數(shù)據(jù)線,SCL為時(shí)鐘線?

I2C總線上數(shù)據(jù)傳送的基本單位為字節(jié),采用低位在前的格式?主從器件之間一次傳輸?shù)臄?shù)據(jù)稱為一幀,由啟動(dòng)信號(hào)?若干個(gè)數(shù)據(jù)字節(jié)和應(yīng)答位以及停止信號(hào)組成?可以看出,I2C的主要命令只有讀?寫兩種情況,雖然讀寫的字節(jié)根據(jù)具體器件的不同而不同,但其時(shí)序關(guān)系不會(huì)發(fā)生改變?根據(jù)這一點(diǎn),下位機(jī)只要具備I2C的基本時(shí)序即可?這些基本時(shí)序包括:?jiǎn)?dòng)?寫字節(jié)?讀字節(jié)?應(yīng)答位?停止信號(hào),并可以組合成兩個(gè)子程序:讀N字節(jié)子程序?寫N字節(jié)子程序?

2.2 串行外圍接口SPI

SPI(同步串行外設(shè)接口)由Motorola公司提出,它是一種三線同步接口,分別為同步信號(hào)?輸入信號(hào)和輸出信號(hào)?另外每個(gè)擴(kuò)展芯片還需要一根片選線,主器件通過片選線選通與其通信的從器件?圖3給出了SPI的時(shí)序圖?其中,SCK為同步時(shí)鐘脈沖,SS為片選線,MOSI為主器件的數(shù)據(jù)輸出和從器件的數(shù)據(jù)輸入線,MISO為主器件的數(shù)據(jù)輸入線和從器件的數(shù)據(jù)輸出線?

SPI是全雙工的,即數(shù)據(jù)的發(fā)送和接收可同時(shí)進(jìn)行?如果僅對(duì)從器件寫數(shù)據(jù),主器件可以丟棄同時(shí)讀入的數(shù)據(jù);反之,如果僅讀數(shù)據(jù),可以在命令字節(jié)后,寫入任意數(shù)據(jù)?數(shù)據(jù)傳送以字節(jié)為單位,并采用高位在前的格式?SPI接口的通信程序可簡(jiǎn)化為:寫讀N字節(jié)子程序?

2.3 Microware串行通訊接口

NS公司的Microware是串行同步雙工通訊接口,由一根數(shù)據(jù)輸出線?一根數(shù)據(jù)輸入線和一根時(shí)鐘線組成?所有從器件的時(shí)鐘線連接到同一根SK線上,主器件向SK線發(fā)送時(shí)鐘脈沖信號(hào),從器件在時(shí)鐘信號(hào)的同步沿輸出/輸入數(shù)據(jù)?主器件的數(shù)據(jù)輸出線DI和所有從器件的數(shù)據(jù)輸入線相接,從器件的數(shù)據(jù)輸出線都接到主器件的數(shù)據(jù)輸入線DO上?與SPI接口類似,每個(gè)從器件也都需要另外提供一條片選通線CS(注意:它采用高選通方式)? 圖4給出了主器件對(duì)從器件操作的基本時(shí)序,包括寫起始位?寫操作碼和讀字節(jié),數(shù)據(jù)交換采用高位在前的格式?圖4中給出了讀兩個(gè)字節(jié)時(shí)的情況,在主器件寫完起始位和操作碼后,從器件會(huì)應(yīng)答一個(gè) “0”?該應(yīng)答位在主器件寫完操作碼的最后一位時(shí)給出?在本文中,主器件速度較慢,可以不考慮等待該位?Microware接口的通用子程序有:?jiǎn)?dòng)子程序,讀N字節(jié)子程序?寫N字節(jié)子程序?不同的Microware器件支持的起始位?操作碼有所不同,但可人為組成合適的字節(jié)?

2.4 One-wire總線

One-wire總線是DALLAS公司研制開發(fā)的一種協(xié)議?它由一個(gè)總線主節(jié)點(diǎn)?一個(gè)或多個(gè)從節(jié)點(diǎn)組成系統(tǒng),通過一根信號(hào)線對(duì)從芯片進(jìn)行數(shù)據(jù)的讀取?每一個(gè)符合One-wire協(xié)議的從芯片都有一個(gè)唯一的地址,包括48位的序列號(hào)?8位的家族代碼和8位的CRC代碼?主芯片對(duì)各個(gè)從芯片的尋址依據(jù)這64位的不同來進(jìn)行? One-wire總線利用一根線實(shí)現(xiàn)雙向通信?因此其協(xié)議對(duì)時(shí)序的要求較嚴(yán)格,如應(yīng)答等時(shí)序都有明確的時(shí)間要求?基本的時(shí)序包括復(fù)位及應(yīng)答時(shí)序?寫一位時(shí)序?讀一位時(shí)序,如圖5和圖6所示?在復(fù)位及應(yīng)答時(shí)序中,主器件發(fā)出復(fù)位信號(hào)后,要求從器件在規(guī)定的時(shí)間內(nèi)送回應(yīng)答信號(hào);在位讀和位寫時(shí)序中,主器件要在規(guī)定的時(shí)間內(nèi)讀回或?qū)懗鰯?shù)據(jù)?為了與其它模擬接口的子程序在結(jié)構(gòu)形式上盡量一致,在One-wire模擬時(shí)序程序中把位讀和位寫時(shí)序拓延,形成低位在前的字節(jié)讀寫時(shí)序,寫一個(gè)字節(jié)的時(shí)序如圖7所示?最終形成三個(gè)子程序:復(fù)位及應(yīng)答子程序?寫N個(gè)字節(jié)子程序和讀N個(gè)字節(jié)子程序?

2.5 下位機(jī)軟件

從功能上來說,下位機(jī)軟件的作用是接收上位機(jī)發(fā)出的命令,分析命令,根據(jù)命令對(duì)各時(shí)序子程序進(jìn)行組合和調(diào)用,形成正確的訪問時(shí)序邏輯;如果有返回?cái)?shù)據(jù),還要將返回?cái)?shù)據(jù)回送上位機(jī)顯示?前面已經(jīng)對(duì)四種串行接口的模擬時(shí)序子程序進(jìn)行了簡(jiǎn)要介紹,由于篇幅所限,無法對(duì)每個(gè)子程序進(jìn)行詳細(xì)的說明,進(jìn)一步的時(shí)序說明,可以查閱有關(guān)的參考文獻(xiàn)和相關(guān)手冊(cè)?這里只給出下位機(jī)軟件總體流程,如圖8所示?有關(guān)上位的命令在上位機(jī)與其通信的協(xié)議中介紹?

3 上位機(jī)通信軟件的實(shí)現(xiàn)

上位PC機(jī)作為人機(jī)交互界面,負(fù)責(zé)向下位機(jī)發(fā)送經(jīng)過人工分析的數(shù)據(jù)字節(jié),這為開發(fā)者提供了對(duì)芯片的透明操作?即在對(duì)某一類芯片進(jìn)行操作時(shí)并不關(guān)心中間具體的過程,只須分析數(shù)據(jù),形成相應(yīng)的數(shù)據(jù)幀,發(fā)送給下位機(jī),即可完成對(duì)芯片的操作?上位機(jī)將操作的芯片分成四類(I2C?SPI?Microware?One-wire),用一個(gè)字節(jié)進(jìn)行標(biāo)識(shí)(0?1?2?3)?如果只進(jìn)行寫操作,則上位機(jī)發(fā)送完寫入字節(jié)后,不操作;如果進(jìn)行讀操作,需重新設(shè)定發(fā)送的字節(jié)并等待下位機(jī)返回的數(shù)據(jù)字節(jié)?在Microware和One-wire協(xié)議中須發(fā)送起始位或復(fù)位信號(hào)的地方可以用特殊字節(jié)標(biāo)識(shí)?上位機(jī)向下位機(jī)發(fā)送的數(shù)據(jù)幀由起始字節(jié)?通信選定字節(jié)?讀/寫命令字節(jié)?字節(jié)數(shù)和數(shù)據(jù)字節(jié)組成?圖9給出了在讀和寫兩種情況下,上位機(jī)發(fā)送的數(shù)據(jù)幀和下位機(jī)返回?cái)?shù)據(jù)幀的組成?

結(jié)束語

本文討論的芯片級(jí)串行總線擴(kuò)展應(yīng)用研發(fā)平臺(tái)在實(shí)際應(yīng)用中取得了良好的效果,縮短了新器件功能測(cè)試的時(shí)間,縮短了新產(chǎn)品的開發(fā)周期,并可根據(jù)需要增加串行接口種類?另外,這一平臺(tái)也為初學(xué)者全面了解串行擴(kuò)展技術(shù)提供了良好的途徑?

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    450

    文章

    49636

    瀏覽量

    417170
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6023

    文章

    44376

    瀏覽量

    628402
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2817

    瀏覽量

    87710
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AT89C51系列單片機(jī)燒寫器的設(shè)計(jì)與實(shí)現(xiàn)

    〔摘要〕本文以AT89C51單片機(jī)為例,介紹其電路和工作原理?!碴P(guān)鍵詞〕單片機(jī);串行通信;MAX232
    發(fā)表于 09-11 10:05 ?190次下載

    如何實(shí)現(xiàn)(電腦)PC機(jī)單片機(jī)AT89C51串行通信

    如何實(shí)現(xiàn)(電腦)PC機(jī)單片機(jī)AT89C51串行通信 在Windows95下使用串口API函數(shù)實(shí)現(xiàn)
    發(fā)表于 04-07 09:45 ?4621次閱讀

    基于AT89C51應(yīng)用系統(tǒng)的串行通信設(shè)計(jì)

    基于AT89C51應(yīng)用系統(tǒng)的串行通信設(shè)計(jì) 在紅外成像技術(shù)的電力設(shè)備狀態(tài)檢測(cè)系統(tǒng)中,基于AT89C51單片機(jī)的應(yīng)用系統(tǒng),采用美國(guó)雷態(tài)公司的型號(hào)為3iLRL3的非
    發(fā)表于 09-13 16:33 ?2018次閱讀
    基于<b class='flag-5'>AT89C51</b>應(yīng)用系統(tǒng)的<b class='flag-5'>串行</b>通信設(shè)計(jì)

    AT89C51單片機(jī)實(shí)現(xiàn)頻率測(cè)量

    AT89C51單片機(jī)實(shí)現(xiàn)頻率測(cè)量,參考資料。
    發(fā)表于 05-06 10:25 ?0次下載

    基于AT89C51單片機(jī)的電子表設(shè)計(jì)

    AT89C51 單片機(jī)的電子表設(shè)計(jì)
    發(fā)表于 06-21 09:13 ?57次下載

    AT89C51單片機(jī)實(shí)驗(yàn)開發(fā)板下載

    AT89C51單片機(jī)實(shí)驗(yàn)開發(fā)板
    發(fā)表于 09-01 17:27 ?89次下載
    <b class='flag-5'>AT89C51</b><b class='flag-5'>單片機(jī)</b><b class='flag-5'>實(shí)驗(yàn)</b>開發(fā)板下載

    關(guān)于51單片機(jī)AT89C51對(duì)直流電動(dòng)機(jī)的驅(qū)動(dòng)競(jìng)賽實(shí)驗(yàn)

    關(guān)于51單片機(jī)AT89C51對(duì)直流電動(dòng)機(jī)的驅(qū)動(dòng)競(jìng)賽實(shí)驗(yàn)(現(xiàn)代電源技術(shù)的發(fā)展概況)-關(guān)于51單片機(jī)
    發(fā)表于 09-16 15:03 ?10次下載
    關(guān)于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>AT89C51</b>對(duì)直流電動(dòng)機(jī)的驅(qū)動(dòng)競(jìng)賽<b class='flag-5'>實(shí)驗(yàn)</b>

    單片機(jī)AT89C51)定時(shí)/計(jì)數(shù)器實(shí)驗(yàn)案例

    繼上篇的《單片機(jī)AT89C51)定時(shí)/計(jì)數(shù)器詳解及其實(shí)驗(yàn)案例》由于各種原因里面沒有實(shí)驗(yàn)案例現(xiàn)在在此補(bǔ)上。單片機(jī)
    發(fā)表于 11-11 15:06 ?16次下載
    <b class='flag-5'>單片機(jī)</b>(<b class='flag-5'>AT89C51</b>)定時(shí)/計(jì)數(shù)器<b class='flag-5'>實(shí)驗(yàn)</b>案例

    AT89C51單片機(jī)

    AT89C51單片機(jī)學(xué)習(xí)一、AT89S51單片機(jī)的I/O端口二、AT89S51單片機(jī)的中斷系統(tǒng)?
    發(fā)表于 11-12 12:21 ?65次下載
    <b class='flag-5'>AT89C51</b><b class='flag-5'>單片機(jī)</b>

    單片機(jī)AT89C51)的串行通信實(shí)驗(yàn)

    單片機(jī)AT89C51)的串行通信實(shí)驗(yàn)
    發(fā)表于 11-17 11:51 ?17次下載
    <b class='flag-5'>單片機(jī)</b>(<b class='flag-5'>AT89C51</b>)的<b class='flag-5'>串行</b>通信<b class='flag-5'>實(shí)驗(yàn)</b>

    基于AT89C51單片機(jī)串行字符液晶演示Proteus仿真及程序

    基于AT89C51單片機(jī)2×20串行字符液晶演示Proteus仿真及程序
    發(fā)表于 05-04 14:57 ?1次下載

    基于AT89C51單片機(jī)ADC0808 PWM實(shí)驗(yàn)

    基于AT89C51單片機(jī)ADC0808 PWM實(shí)驗(yàn)Proteus仿真及程序
    發(fā)表于 05-04 16:03 ?6次下載

    基于AT89C51單片機(jī)PCF8591模數(shù)與數(shù)模轉(zhuǎn)換實(shí)驗(yàn)

    基于AT89C51單片機(jī)PCF8591模數(shù)與數(shù)模轉(zhuǎn)換實(shí)驗(yàn)Proteus仿真及程序
    發(fā)表于 05-04 14:42 ?32次下載

    基于AT89C51單片機(jī)開關(guān)控制12864LCD串行模式顯示

    基于AT89C51單片機(jī)開關(guān)控制12864LCD串行模式顯示Proteus仿真及程序
    發(fā)表于 05-04 15:09 ?3次下載

    基于AT89C51單片機(jī)用8255實(shí)現(xiàn)接口擴(kuò)展Proteus仿真及程序

    基于AT89C51單片機(jī)用8255實(shí)現(xiàn)接口擴(kuò)展Proteus仿真及程序
    發(fā)表于 05-05 09:57 ?12次下載