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

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

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

將基于8051的微控制器連接到SCI端口

星星科技指導(dǎo)員 ? 來(lái)源:ADI ? 作者:ADI ? 2023-06-13 15:48 ? 次閱讀

本應(yīng)用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的設(shè)備通信。它首先簡(jiǎn)要討論了SCI和UART模塊之間的差異,并以一個(gè)實(shí)際示例結(jié)束,說(shuō)明如何配置基于8051的達(dá)拉斯半導(dǎo)體微控制器UART以與SCI模塊通信。

介紹

串行通信接口 (SCI) 是一種高速串行 I/O 端口,允許設(shè)備之間的同步或異步通信。它允許微控制器連接到各種類似功能的外設(shè),以及標(biāo)準(zhǔn)RS-232接口。SCI 的確切實(shí)現(xiàn)因設(shè)備制造商而異;許多器件都支持異步模式下的全雙工通信、奇偶校驗(yàn)、錯(cuò)誤檢測(cè)以及 <> 到 <> 位的可編程字符長(zhǎng)度等功能。

所有基于 8051 的達(dá)拉斯半導(dǎo)體微控制器都能夠與支持 SCI 的設(shè)備進(jìn)行通信,即使 SCI 功能未明確列在微控制器的功能列表中。我們所有的微控制器都包含一到三個(gè)8051型UART,可以配置為在大多數(shù)常見(jiàn)的SCI模式下運(yùn)行。

本應(yīng)用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的器件通信。它首先簡(jiǎn)要討論了SCI和UART模塊之間的差異,并以一個(gè)實(shí)際示例結(jié)束,說(shuō)明如何配置基于8051的達(dá)拉斯半導(dǎo)體微控制器UART以與SCI模塊通信。提供了一個(gè)代碼示例,演示如何初始化微控制器并執(zhí)行簡(jiǎn)單的測(cè)試以確保設(shè)備正確通信。

SCI的特點(diǎn)

如上所述,SCI是一種高速串行接口。它與基于達(dá)拉斯半導(dǎo)體8051的微控制器上的8051式UART有許多相似之處。以下是 UART 中的 SCI 功能及其對(duì)應(yīng)項(xiàng)的列表。用戶應(yīng)注意,并非所有 SCI 模塊都支持列出的所有功能,因此用戶應(yīng)仔細(xì)閱讀支持 SCI 的器件的數(shù)據(jù)手冊(cè),以了解其使用方式。

特征 SCI 達(dá)拉斯半導(dǎo)體UART
異步模式 適用于大多數(shù)實(shí)現(xiàn) 串行模式 1、2、3
同步模式 在某些實(shí)現(xiàn)上可用 僅串行模式 0
字符長(zhǎng)度 1 到 9(如果支持可選字符長(zhǎng)度) 8 或 9
平價(jià) 在某些實(shí)現(xiàn)上可用 受 9 位模式下的軟件支持
成幀錯(cuò)誤 是的 是的
空閑字符 檢測(cè)空閑字符以喚醒設(shè)備。 UART不能檢測(cè)空閑字符,但UART微處理器通信模式可用于向UART發(fā)出信號(hào),將下一個(gè)字節(jié)視為地址/標(biāo)識(shí)符。
中斷字符 SCI 可以發(fā)送和接收中斷字符 (00h)。 可以通過(guò)將串口RX引腳轉(zhuǎn)換為邏輯0來(lái)傳輸中斷字符。收到中斷字符可能會(huì)導(dǎo)致成幀錯(cuò)誤,具體取決于所選字符長(zhǎng)度。

大多數(shù) SCI 模塊都支持異步通信格式,其中許多是獨(dú)占的。此處的示例演示如何將基于 Dallas Semiconductor 8051 的微控制器配置為與支持 SCI 的設(shè)備進(jìn)行異步通信。在這種情況下,我們將微控制器配置為與配置了以下特征的目標(biāo) SCI 通信:

10位異步模式;1 個(gè)啟動(dòng),8 個(gè)數(shù)據(jù),1 個(gè)停止位

波特率:19200 bps

為了與此設(shè)備通信,我們將做出以下決定來(lái)設(shè)置達(dá)拉斯半導(dǎo)體微控制器:

使用串行端口 0 進(jìn)行通信

外部時(shí)鐘源為 22.1184MHz

串口將配置為10位異步模式;1 個(gè)啟動(dòng),8 個(gè)數(shù)據(jù),1 個(gè)停止位(這是串口模式 1。

波特率發(fā)生器時(shí)鐘源將是自動(dòng)重新加載模式下的定時(shí)器1(定時(shí)器模式2)。

由于所有基于 Dallas Semiconductor 8051 的微控制器定時(shí)器默認(rèn)為原始的 12 分頻工作模式,因此此示例的優(yōu)點(diǎn)是適用于所有達(dá)拉斯半導(dǎo)體器件,無(wú)論內(nèi)核的時(shí)鐘除數(shù)如何。這是因?yàn)镈S5000FP (被12分頻)、DS80C320 (被四分頻)和DS89C450 (被1分頻)都使用相同的串行端口時(shí)序,如果未選擇定時(shí)器的更高速度選項(xiàng)。 有關(guān)UART操作的詳細(xì)信息,請(qǐng)參閱相應(yīng)用戶指南的串行I/O部分。

由于SCI決定了數(shù)據(jù)的格式,因此接下來(lái)必須將達(dá)拉斯半導(dǎo)體微控制器初始化為正確的波特率。8位自動(dòng)重載模式(定時(shí)器模式2)通過(guò)由外部時(shí)鐘源驅(qū)動(dòng)的用戶可選定時(shí)器溢出產(chǎn)生波特率。這為設(shè)計(jì)增加了相當(dāng)大的靈活性并簡(jiǎn)化了開(kāi)發(fā),因?yàn)椴ㄌ芈士梢栽谲浖休p松選擇,允許來(lái)自同一時(shí)鐘源的多個(gè)波特率。確定波特率的公式如下所示:

wKgZomSIH0CAOZa_AAAF_ypo7G8967.gif

其中osc_frequency是外部時(shí)鐘源的頻率,單位為MHz,TH1是放置在定時(shí)器8 MSB SFR中的1位重載值,SMOD_0(PCON.7)是串行端口0倍增器使能位?;蛘?,如果波特率和振蕩器頻率已知,則可以使用以下公式求解8位重載數(shù)TH1的值:

wKgaomSIH0KAN9KgAAAFxMtvzas477.gif

假設(shè)外部時(shí)鐘源為22.1184MHz,TH1值為FDh將產(chǎn)生19200的目標(biāo)波特率,并清除倍頻位。有關(guān)波特率選擇的更多信息,請(qǐng)參閱相應(yīng)用戶指南的串行 I/O 部分。

以下簡(jiǎn)短的匯編代碼示例演示如何初始化串行端口 0 以與配置為 10 位異步模式的 SCI 模塊通信,速率為 19200 bps。成功操作后,它將回顯任何收到的字符??梢暂p松刪除此功能,使其成為任何用戶所需的 SCI 通信應(yīng)用程序的通用 shell。

;SCI emulation example
; Simple transmit test to demonstrate how to configure 8051 UART to
; emulate an SCI module. Test code embedded in this example echoes back
; received characters.

org 0h            ;Reset vector.
ljmp start

org 23h           ;Serial port 0 vector.
ljmp SP0_ISR


org 100h          ;Start of code.
start:            ;Initialize Serial Port 0 for mode 1, 19200 baud
MOV TMOD,  #020h  ;Set timer 1 for mode 2 (8-bit auto reload)
MOV SCON0, #050h  ;SP0  10-bit asynchronous mode with receive enabled

;Now select the reload value based on baud rate and xtal frequency.
MOV TH1,   #0FDh ;19200 baud at 22.11 MHz
;MOV TH1,   #0FDh ;9600 baud at 11.059 MHz
;MOV TH1,   #0FAh ;9600 baud at 22.11  MHz

SETB TR1          ;Serial port is initialized, now start timer

;Enable Interrupts
MOV IE, #90h      ;This example supports interrupt-driven communications, so
                  ; enable global and serial port 0 interrupts.


;Test code in receive interrupt routine echoes back any received characters
; when combined with the loop here.
loop: sjmp loop


SP0_ISR:          ;Serial port 0 Interrupt Service Routine
jb  RI0, RIO_INT  ;Determine if receiver/transmitter was cause of interrupt.

TIO_INT:          ;Interrupt was caused by transmission.
;
;                  Placeholder for transmitter routine
;
CLR TI0
RETI

RIO_INT:          ;Interrupt was caused by reception
;
;                  Placeholder for receiver routine
;

MOV A, SBUF0      ;Test code that echoes back received character
MOV SBUF0, A      ; Remove for real code.

CLR RI0
RETI

總結(jié)

達(dá)拉斯半導(dǎo)體基于8051的微控制器中的UART可以很容易地配置為與許多設(shè)備中的SCI模塊接口。這種流行的串行接口可以在多種模式下工作,但最常見(jiàn)的是RS-10通信中使用的11/232位異步模式。允許達(dá)拉斯半導(dǎo)體微控制器連接到SCI模塊可提高整體系統(tǒng)的靈活性,因?yàn)樗鼈兛梢赃B接到更廣泛的嵌入式系統(tǒng)。

雖然此示例側(cè)重于異步工作模式,但達(dá)拉斯半導(dǎo)體微控制器也可以配置為與在同步模式下運(yùn)行的 SCI 接口。SCI 模塊與 8051 UART 的相似性使得該接口能夠以最小的努力完成。有關(guān)同步模式(串行端口模式 0)的詳細(xì)信息,請(qǐng)參閱相應(yīng)用戶指南的串行 I/O 部分。

審核編輯:郭婷

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

    關(guān)注

    48

    文章

    7555

    瀏覽量

    151429
  • 半導(dǎo)體
    +關(guān)注

    關(guān)注

    334

    文章

    27367

    瀏覽量

    218821
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1235

    瀏覽量

    101404
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    8051微控制器架構(gòu)的簡(jiǎn)要說(shuō)明

    此前已經(jīng)介紹了關(guān)于8051微控制器基礎(chǔ)知識(shí)和引腳圖說(shuō)明等相關(guān)知識(shí),而在本文中,重點(diǎn)介紹8051微控制器的硬件方面內(nèi)容,如 I/O
    發(fā)表于 08-23 14:45 ?2919次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>架構(gòu)的簡(jiǎn)要說(shuō)明

    8051微控制器的基礎(chǔ)知識(shí)

    8051微控制器是嵌入式系統(tǒng)、消費(fèi)電子、汽車等各個(gè)領(lǐng)域中最流行和最常用的微控制器之一,技術(shù)上稱為Intel MCS-51架構(gòu)。8051微控制器
    發(fā)表于 09-12 17:32 ?3448次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的基礎(chǔ)知識(shí)

    怎么Fieldfox連接到微控制器

    我正在構(gòu)建一個(gè)微控制器控制的轉(zhuǎn)盤(pán),用于測(cè)量天線輻射模式。階段1簡(jiǎn)單地平臺(tái)定位在0到360度的任何位置。我最不想做的是使用我的Fieldfox頻譜分析儀以單一頻率讀取信號(hào)電平。有了這
    發(fā)表于 02-12 12:35

    如何8051微控制器引到FPGA中去?

    請(qǐng)問(wèn)如何8051微控制器引到FPGA中去?
    發(fā)表于 04-28 06:41

    如何EVAL6498L連接到微控制器

    您好,我是柵極驅(qū)動(dòng)評(píng)估板 EVAL6498L 的第一次用戶,我正在嘗試了解如何將它連接到控制器和 MOSFET,我正在使用此文檔。假設(shè)我從微控制器 PWM1 和 PWM2 發(fā)送 2
    發(fā)表于 01-06 06:24

    如何ESP連接到微控制器?

    你好! 我有一個(gè)問(wèn)題:這是 ESP 的最小電路。 我想用微控制器驅(qū)動(dòng)它。我的問(wèn)題是: 1) RST 和 EN 引腳通過(guò)電阻連接到 Vcc。如果我想將它連接到 STM32(連接到 STM
    發(fā)表于 05-15 08:30

    如何PC鍵盤(pán)連接到8051微控制器

    在這里,我們已將一個(gè)LCD以4位模式連接到8051端口2?,F(xiàn)在,我們已通過(guò)USB至UART轉(zhuǎn)換開(kāi)發(fā)板
    的頭像 發(fā)表于 10-31 09:55 ?2193次閱讀

    8051微控制器引腳說(shuō)明與基本電路

    此前已經(jīng)介紹過(guò)8051微控制器的基礎(chǔ)知識(shí),包括它的歷史、特性、封裝和一些實(shí)際應(yīng)用。在本文中,小編將將繼續(xù)介紹關(guān)于8051微控制器引腳圖、引腳說(shuō)明以及其他一些細(xì)節(jié)內(nèi)容,包括
    發(fā)表于 08-23 15:53 ?8430次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>引腳說(shuō)明與基本電路

    如何實(shí)現(xiàn)SDRAM存儲(chǔ)并通過(guò)接口連接到高性能微控制器

    電子發(fā)燒友網(wǎng)站提供《如何實(shí)現(xiàn)SDRAM存儲(chǔ)并通過(guò)接口連接到高性能微控制器.zip》資料免費(fèi)下載
    發(fā)表于 09-07 09:31 ?1次下載
    如何實(shí)現(xiàn)SDRAM存儲(chǔ)<b class='flag-5'>器</b>并通過(guò)接口<b class='flag-5'>連接到</b>高性能<b class='flag-5'>微控制器</b>

    如何使用觸摸傳感8051微控制器控制LED燈

    在這個(gè)項(xiàng)目中,我們觸摸傳感8051 微控制器 AT89S52 連接。如果您是 8051
    的頭像 發(fā)表于 09-07 15:13 ?3137次閱讀
    如何使用觸摸傳感<b class='flag-5'>器</b>和<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b><b class='flag-5'>控制</b>LED燈

    如何微控制器和adafruit.io儀表板連接到外部應(yīng)用程序

    電子發(fā)燒友網(wǎng)站提供《如何微控制器和adafruit.io儀表板連接到外部應(yīng)用程序.zip》資料免費(fèi)下載
    發(fā)表于 10-28 14:22 ?0次下載
    如何<b class='flag-5'>將</b><b class='flag-5'>微控制器</b>和adafruit.io儀表板<b class='flag-5'>連接到</b>外部應(yīng)用程序

    用于8051兼容微控制器的高效位敲擊SPI端口

    快速 SPI 端口可通過(guò) GPIO 引腳進(jìn)行位沖擊,并作為具有 SPI 端口8051 兼容微控制器的低成本替代方案。本應(yīng)用筆記所示的代碼利用80
    的頭像 發(fā)表于 01-12 16:18 ?953次閱讀
    用于<b class='flag-5'>8051</b>兼容<b class='flag-5'>微控制器</b>的高效位敲擊SPI<b class='flag-5'>端口</b>

    I2C接口小型閃存卡連接到微控制器

    本應(yīng)用筆記說(shuō)明如何使用I2C I/O擴(kuò)展CF卡連接到微控制器的I2C接口。解釋了用于讀取和寫(xiě)入數(shù)據(jù)的軟件命令。MAX7311 I/O端口
    的頭像 發(fā)表于 02-14 10:19 ?943次閱讀
    I2C接口<b class='flag-5'>將</b>小型閃存卡<b class='flag-5'>連接到</b><b class='flag-5'>微控制器</b>

    DS1307與兼容8051微控制器接口

    DS1307串行實(shí)時(shí)時(shí)鐘集成了2線串行接口,可使用兼容8051微控制器進(jìn)行控制。本例中的DS1307直接連接到DS5000微控制器上的兩個(gè)
    的頭像 發(fā)表于 03-01 13:52 ?1443次閱讀
    DS1307與兼容<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b>接口

    LCD控制器連接到DM642視頻端口

    電子發(fā)燒友網(wǎng)站提供《LCD控制器連接到DM642視頻端口.pdf》資料免費(fèi)下載
    發(fā)表于 10-17 10:42 ?0次下載
    <b class='flag-5'>將</b>LCD<b class='flag-5'>控制器</b><b class='flag-5'>連接到</b>DM642視頻<b class='flag-5'>端口</b>