在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用高速微型的串行端口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-21 10:17 ? 次閱讀

Maxim DS80C320和其他高速微控制器具有兩個相同的串行端口。本應用筆記向用戶介紹微控制器中使用的通用同步/異步接收器/發送器(USART)。應用筆記討論了波特時鐘源、輪詢和中斷模式、波特率生成、異步10位操作和雙串行端口操作。代碼示例用于突出顯示用作波特率生成器的計時器的使用。

介紹

高速微控制器的串行接口在功能上與其他性能較低的8051處理器上的接口相同。它們基于通用同步/異步接收器/發射器 (USART) 實現。顧名思義,USART 將并行數據與同步或異步串行位流相互轉換。器件的并行數據側與處理器的內部數據總線接口,串行端與外界接口。本應用筆記描述了該接口最常見的工作模式的設置和操作。

由于其普遍適用性,高速微型串行通道最常用的配置是其10位異步模式。在本應用筆記中,將詳細描述此配置。將提供港口操作的一般概述,并提供詳細的軟件示例。還將介紹說明使用雙串行端口和11位地址識別功能的示例。通過這三個示例,將討論串口操作的不同方面。

最常見的串行通信模式是基于異步數據傳輸。在這種傳輸模式下,沒有單獨的時鐘信號。圖1所示的經典串行異步數據通信格式無需時鐘信號即可提供必要的同步。在這種格式中,8或9個數據位伴隨著一個起始位和一個或兩個停止位。第 9 個數據位經常用作奇偶校驗位。開始位和停止位提供必要的同步信息。此模式下的串行比特流內容與流行的RS-232協議兼容。但是,信號電平不是。為了兼容信號電平,必須使用DS232A等電平轉換器將TTL/CMOS電平轉換為RS-232電平。

poYBAGP0K-eASp8tAAAwmTMXADc704.png

圖1.異步數據格式。

請注意,高速微控制器系列的許多成員具有兩個功能相同的串行端口。隨著新成員添加到處理器家族中,有些成員可能沒有兩個串行端口。有關具體功能,請參閱各個器件的數據手冊。本應用筆記將重點介紹單個串行端口(端口0)的使用,但在示例中,所介紹的想法同樣適用于兩個端口。一個示例程序演示了這兩個串行端口的使用。

波特鐘源

雖然本文檔的目的不是討論高速微型內部定時器的細節,但必須對它們進行一些討論,因為它們經常被用作波特率時鐘的來源。高速微型包含三個內部定時器,其中兩個可用作波特率發生器。以下各節簡要介紹這些定時器及其最常用于波特率的模式 代。

有關定時器設置的詳細信息將通過下面的軟件示例進行說明。

在這兩個定時器上,自動重新加載模式經常用于波特率生成,因為它不需要處理器的干預。初始化后,定時器自動運行,根據加載到定時器重加載寄存器中的值生成波特率時鐘。在此模式下,計時器 1 使用 SFR 寄存器 TL1 進行計數,使用 TH1 存儲重新加載值。軟件必須使用所需的重新加載值初始化 TH1,如果第一個時間間隔是正確的,TL1 也必須使用相同的值加載。定時器2使用寄存器TL2和TH2進行計數,并寄存器RCAP2L和RCAP2H用于保存重新加載值。同樣,這些寄存器必須由軟件初始化。啟用后,計時器將根據所選時鐘源開始計數。定時器1的時鐘是振蕩器/12或振蕩器/4。對于定時器2,振蕩器/2是波特時鐘生成模式下的唯一可能性。當計數寄存器從其最大計數滾動到 0 時,它們將自動重新加載,并帶有重新加載寄存器中的值。除非由軟件修改,否則重新加載值保持不變。每次發生翻轉時,都會產生一個時鐘脈沖。該時鐘脈沖被串行端口用作波特率時鐘。通過改變重載值,可以實現多種波特率。

輪詢模式與中斷驅動模式

高速微型的串行通道在SFR地址空間中具有指示通道狀態的標志位。對于每個串行通道,都有一個指示何時接收字符的標志 (RI) 和一個指示何時傳輸字符的標志 (TI)。無論是否啟用關聯的中斷,都會設置這些標志,因此可以在輪詢操作模式下使用?;蛘撸绻麊⒂昧酥袛?,則這些標志中的任何一個的設置都將導致跳轉到串行通道的關聯中斷向量。

由于串行中斷是異步的,基于與外部設備的串行通信,大多數應用將受益于使用中斷驅動的通信方案。這樣,處理器可以在等待接收中斷時完成其他任務。如果使用輪詢方法,則會花費時間不斷檢查標志位以查看是否已設置。本應用筆記的示例說明了這兩種方法。第一個示例演示了典型的中斷驅動操作模式。第二個示例執行一組非常結構化的事件,因此它非常適合輪詢操作。

插入中斷字符

中斷字符是通信流中很長的 null。確切的長度因所使用的通信格式而異。軟件可以通過將邏輯 0 寫入相應串行端口的 RX 引腳的端口鎖存位來輕松創建空值。請注意,將 00h 寫入 SBUF0 或 SBUF1 不會達到預期效果,因為數據流中使用的開始位和停止位是邏輯 1。在斷字符結束時,軟件只需要將邏輯1寫入相應串行端口的RX引腳的端口鎖存位。

異步 10 位模式示例

異步 10 位工作模式可以說是 8051 系列中最常用的串行通信方法。這是因為此模式與熟悉的RS-232協議兼容。雖然信號電平不同,但使用簡單的電平轉換器將允許與任何個人計算機的標準串行端口進行通信。事實上,本應用筆記中的所有軟件都使用PC與DS80C320測試板接口進行測試。

此特定串行模式可以使用定時器 1 為串行端口 1 生成波特率,或為串行端口 1 生成定時器 2 或 0。在本例中,定時器2在自動重新加載模式下運行,以生成串行端口0的波特率。

建立定時器的工作模式后,重新加載值必須存儲在重新加載寄存器中。重載寄存器的內容可以使用以下公式計算所需的波特率和振蕩器頻率:

poYBAGP0Kc2ATUE4AAAKo0LDMbg875.gif?imgver=1

使用該公式,可以計算出任何所需波特率和振蕩器頻率的重載值。對于本軟件示例,假設振蕩器頻率為 11.0592 MHz。下表顯示了基于該晶體頻率的幾種常見波特率的重載值。應該注意的是,并非每個晶體值都會產生可接受的波特率。如果需要特定的波特率,則在為系統選擇晶體之前,可能需要對上述方程進行一些評估。

波特率 RCAP2H RCAP2L
57600 0FFh 0FAh
9600 0FFh 0直流小時
2400 0FFh 070小時
1200 0飛揚 0E0h

一旦確定了重載值,就必須將其加載到定時器的重載寄存器中,以建立定時器的輸出時鐘頻率。

初始化定時器后,可以根據需要設置串行端口。要為串行端口 0 建立正確的操作模式,必須正確設置 SCON 寄存器的 SM0 和 SM1 位(地址 098h)。下表顯示了這些位的可能設置和生成的模式。如圖所示,對于 0 位異步操作,SM1 和 SM0(SCON1.0 和 SCON0.0)必須分別設置為 1 和 10。

VMU VMU 模式 功能 長度 時期
0 0 0 同步 8 位 4/12 噸時鐘
0 1 1 異步 10 位 定時器 1 或 2*
1 0 2 異步 11 位 64/32 噸時鐘
1 1 3 異步 11 位 定時器 1 或 2*
*定時器2僅適用于串行端口0上的波特率生成。

由于串行端口將在中斷驅動模式下運行,因此必須正確設置中斷使能。通過將 ES0(地址 0ACh)和 EA(地址 0AFh)位設置為 1,串行端口 0 將在傳輸字符或接收字符時生成中斷。

作為初始化的最后一步,通過設置位 TR2(地址 0CAh)來啟動計時器。此時,串行通信可能開始。為了傳輸字符,將字符寫入 SBUF(字節地址 099h),并執行其他任務,直到收到中斷(在本例中為緊密循環)。在接收字符時,在發生中斷之前不需要執行任何操作。由于發送或接收都可能導致跳轉到同一中斷向量,因此中斷服務例程 (ISR) 必須確定哪個是原因。這是通過讀取SCON寄存器的TI(位地址099h)和RI(位地址098h)狀態位來完成的。如果設置了 TI,則“傳輸完成”會導致中斷。如果設置了 RI,則“接收”會導致中斷。如果傳輸導致中斷,則 TI 位可能被清除并退出 ISR。如果接收導致中斷,則必須清除 RI 位,并且必須從 SBUF 讀取接收的字符。

下面示例 1 的軟件列表說明了實現此串行操作模式的詳細信息。

雙串行端口示例

本例演示DS80C320上兩個串行端口的用法。該示例的主要目的是說明如何初始化和使用第二個端口。如前所述,有關串行端口 0 的許多信息同樣適用于串行端口 1。但是,此示例將有助于澄清有關使用此資源的任何混淆。

在此示例中,端口 1 (TXD1) 的輸出以“環回”配置連接到其輸入 (RXD1)。編寫該軟件以創建以端口 0 作為輸入和輸出的閉合串行環。運行終端仿真器的終端或 PC 連接到端口 0 的輸入 (RXD0) 和輸出 (TXD0)。最初,軟件通過端口0向終端輸出三行消息,DS80C320等待輸入。當終端向DS80C320發送字符時,設置RI位。當軟件識別出此位已設置時,它會讀取接收到的字符并將其傳輸到端口 1 的傳輸緩沖區。出于說明目的,字符在傳輸之前將轉換為大寫(如果尚未轉換為大寫)。由于端口 1 的輸出與其輸入相關聯,因此傳輸的字符會自動進入接收緩沖區。然后,軟件將此字符復制到端口 0 的傳輸緩沖區,從而使其從處理器傳輸出去。最后,字符作為大寫字符到達終端,從而完成循環。

在此軟件示例中,兩個串行端口都設置為從定時器1生成的波特時鐘運行。定時器設置為自動重新加載模式,計數和重新加載寄存器加載適當的值。定時器 1 用于計算重載值的公式與定時器 2 的公式不同,如下所示:

pYYBAGP0Kc-ANqM9AAAJqjvc_bA769.gif?imgver=1

使用上述公式,可以計算所需波特率和振蕩器頻率的重載值。可以看出,重載值是 2 提高到 SMOD 的冪的函數。由于 SMOD 可以是 0 或 1,因此該項可以是 1 或 2 (20= 1, 21= 2)。因此,將 SMOD 設置為 1 具有使波特率加倍的效果。同樣,對于本軟件示例,假設振蕩器頻率為11.0592 MHz。下表3顯示了基于該晶體頻率為幾種常見波特率計算的重載值。

波特率 斯莫德 重新加載
57600 1 FF
19200 1 FD
9600 0 FD
2400 0 F4
1200 0 E8

如上式所示,重載值是根據 SMOD 波特率倍增器位的設置計算的。如果該位對于所需的波特率為 0,則無需在初始化軟件中清除它 因為這是它的重置默認設置。但是,為清楚起見,示例中包含了清除兩個端口的此位的說明。由于SMOD位不是“位可尋址”的,因此必須寫入整個PCON寄存器。示例代碼顯示了使用單個邏輯指令清除和設置 SMOD 位的指令。程序中未使用的指令被注釋掉。

在該示例中,初始化定時器模式,加載計數和重新加載寄存器,清除兩個SMOD位,并禁用定時器中斷。這完全配置了波特時鐘生成。將兩個串行控制寄存器設置為所需模式后,定時器啟動,串行通信開始。

此示例處理串行通信的方式與前面的示例所示不同。此示例使用輪詢模式來監視串行狀態。由于此示例的操作更加結構化,因此這種輪詢方法是合適的。傳輸字符的基本函數是 GETCH 和 PUTCH。這兩個函數都執行一個緊密循環,等待設置適當的標志。當它出現時,程序將繼續。這通常被認為是浪費時間,但在此應用程序和其他類似應用程序中,輪詢操作是有意義的。

地址識別示例

本例演示了高速微型串行通道的地址識別功能。此外,它還說明了一種不涉及使用定時器(即 串行模式 2)。

高速微型的地址識別功能經常用于多處理器通信??偩€上的每個處理器都可以分配一個唯一的地址。配置后,處理器將無法識別任何串行通信,除非其地址匹配。有關此工作模式的完整詳細信息,請參閱《高速微控制器用戶指南》。

在此示例中,地址設置為識別控件 C 字符 (03h)。在控件 C 之前接收的任何字符都將被忽略。但是,當收到控件 C 時,會立即打印一個字符串, 在 RXD0 上收到的后續字符將回顯到 TXD0。

如前所述,圖示的產生波特率的模式不涉及定時器(即串行模式2)。波特率可選,如下式所示:

poYBAGP0KdCAD-H9AAAIijKQ384308.gif?imgver=1

從等式中可以看出,如果需要特定的波特率,則這種串行模式的晶體頻率選擇比其他模式受到更多的限制。事實上,產生標準波特率的晶體頻率相對較少。在本例中,假設振蕩器頻率為 7.372 MHz,這將導致速率為 115,200 波特,SMOD 清除為 0。看到 12.0 MHz 的振蕩器將產生 187,500 波特的速率,SMOD 清除為 0 是很常見的。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7552

    瀏覽量

    151423
  • 處理器
    +關注

    關注

    68

    文章

    19286

    瀏覽量

    229841
  • 總線
    +關注

    關注

    10

    文章

    2881

    瀏覽量

    88085
收藏 人收藏

    評論

    相關推薦

    利用高速Micro的串行端口

    本應用指南描述了Dallas半導體公司高速微控制器系列串行接口的常見運行模式的設置和操作。
    發表于 09-23 13:47

    串行端口工作原理

    串行端口工作原理 串行端口工作原理 9針連
    發表于 07-24 00:21 ?1883次閱讀

    USB 2.0高速端口的ESD保護設計方案

    USB 2.0高速端口的ESD保護設計方案 通用串行總線(USB)高速數據應用也十分普遍,用戶在熱插撥任何USB外設時可能會導致ESD事件。此外
    發表于 04-12 09:19 ?1.3w次閱讀
    USB 2.0<b class='flag-5'>高速</b><b class='flag-5'>端口</b>的ESD保護設計方案

    4端口串行接口資料

    4端口串行接口PDF+源程序,感興趣的小伙伴們可以瞧一瞧。
    發表于 11-22 11:21 ?0次下載

    使用mxtni的串行端口

    外部串行端口 在使用外部串行端口之前,必須添加必要的硬件。外部串行端口包括五個模塊:DUART、
    發表于 04-12 11:08 ?6次下載
    使用mxtni的<b class='flag-5'>串行</b><b class='flag-5'>端口</b>

    串行端口完成COM端口和USB虛擬及嵌入式系統端口的應用第二版應用指南

    當通用串行總線(USB)在20世紀90年代末開始使用時,許多人預測串行端口很快就會過時。許多以前使用串行端口的外圍設備都已切換到USB。但是
    發表于 01-04 15:34 ?0次下載
    <b class='flag-5'>串行</b><b class='flag-5'>端口</b>完成COM<b class='flag-5'>端口</b>和USB虛擬及嵌入式系統<b class='flag-5'>端口</b>的應用第二版應用指南

    并行端口串行端口的區別在哪里?求解

    串行端口稱為串口,也稱為串行通信接口,即COM端口。
    的頭像 發表于 06-09 15:34 ?4808次閱讀

    使用MAXQ610微控制器上的串行端口

    MAXQ610微控制器提供兩個標準的USART串行端口。異步模式1是MAXQ610串行端口支持的模式之一,可用于與PC COM端口和許多其他
    的頭像 發表于 02-20 13:42 ?981次閱讀

    使用雙數據指針實現串行端口FIFO

    Dallas Semiconductor高速微控制器系列允許系統設計人員通過內部UART優化串行通信。本應用筆記演示了如何利用這些增強型8051微控制器中的雙數據指針使用循環緩沖器。提供的示例匯編代碼用于顯示簡單的 256 字節串行
    的頭像 發表于 02-21 16:06 ?883次閱讀
    使用雙數據指針實現<b class='flag-5'>串行</b><b class='flag-5'>端口</b>FIFO

    使用MxTNI的串行端口

    許多設備使用串行端口作為與其他電子設備通信的手段 - 從個人計算機和調制解調器等非常著名的示例到制造和工業自動化設備。事實上,對于許多人來說,串行端口提供了與外界通信的唯一機制。這些設
    的頭像 發表于 03-01 16:41 ?806次閱讀
    使用MxTNI的<b class='flag-5'>串行</b><b class='flag-5'>端口</b>

    使用高速微型串行端口

    模擬DS80C320和其他高速微控制器具有兩個相同的串行端口。本應用筆記向用戶介紹微控制器中使用的通用同步/異步接收器/發送器(USART)。應用筆記討論了波特時鐘源、輪詢和中斷模式、波特率生成、異步10位操作和雙
    的頭像 發表于 06-13 14:52 ?519次閱讀
    使用<b class='flag-5'>高速</b><b class='flag-5'>微型</b>的<b class='flag-5'>串行</b><b class='flag-5'>端口</b>

    在設計中擴展串行端口的入門知識

    ? ? 即使USB出現,串行端口也不會消亡。對于術語“串行端口”,我們通常指的是或多或少符合RS-232 標準或相應的TTL 信號的硬件。 ? ?? 串口 在軟硬件集成初期易于調試。即
    的頭像 發表于 08-18 17:25 ?590次閱讀

    在設計中擴展串行端口的入門知識分享

    即使USB出現,串行端口也不會消亡。對于術語“串行端口”,我們通常指的是或多或少符合RS-232 標準或相應的TTL 信號的硬件。
    的頭像 發表于 08-18 17:24 ?1476次閱讀
    在設計中擴展<b class='flag-5'>串行</b><b class='flag-5'>端口</b>的入門知識分享

    什么是串行端口?有哪幾種分類?

    什么是串行端口?有哪幾種分類? 串行端口是計算機中用于進行數據傳輸的一種接口類型,通過單一的數據線逐位地傳輸數據。與串行
    的頭像 發表于 02-02 15:40 ?2109次閱讀

    在嵌入式設計中擴展串行端口的入門知識

    大多數嵌入式系統都至少提供兩個串口。然而,有些系統需要更多。因此,這需要以某種方式擴展串行端口的數量。設計人員可用的一些選擇包括 USB 到串行端口、I2C 到
    發表于 05-03 09:30 ?256次閱讀
    在嵌入式設計中擴展<b class='flag-5'>串行</b><b class='flag-5'>端口</b>的入門知識
    主站蜘蛛池模板: 久碰香蕉精品视频在线观看| aa看片| 日本国产黄色片| 婷婷激情小说网| 国产一级鲁丝片| 天天干夜夜叭| 五月婷婷爱| 四虎884tt紧急大通知| 五月天婷婷免费观看视频在线| 国产精品免费久久久久影院| 久热操| 福利社看片| 亚洲一区二区三区在线播放| 1515hh四虎免费观38com| 色黄视频| 亚洲伊人tv综合网色| h版欧美一区二区三区四区| 国色天香精品亚洲精品| 一级特黄aa毛片免费观看| 五月婷婷六月婷婷| 欧美成人精品一区二区 | 91操碰| abc119影院成人免费看| 午夜视频在线网站| 亚洲成年人网| 欧美成人久久| 手机看片自拍自自拍日韩免费| 午夜男人视频| 国模久久| 天天看天天爽天天摸天天添| 男人午夜免费视频| 天堂电影在线观看免费入口| 免费色视频网站| 五月天综合婷婷| avtt亚洲一区中文字幕| 国产va精品免费观看| 天堂中文www在线| 五月婷六月丁香| 日韩加勒比在线| 国产精品色婷婷在线观看| 日本三级日产三级国产三级|