本應(yīng)用筆記介紹了達(dá)拉斯半導(dǎo)體DS89C430和DS89C450超高速微控制器的全新串行端口特性。增加時(shí)鐘倍頻器允許用戶選擇原始頻率四分之一的晶體,以產(chǎn)生相同的波特率并降低EMI。
概述
與每個(gè)指令周期至少需要8051個(gè)時(shí)鐘的原始12架構(gòu)相比,超高速微控制器具有先進(jìn)的8051內(nèi)核架構(gòu),能夠在短短一個(gè)時(shí)鐘周期內(nèi)執(zhí)行指令。為了補(bǔ)充高性能內(nèi)核,標(biāo)準(zhǔn)8051片上外設(shè)中集成了新的硬件功能。其中兩個(gè)新功能,時(shí)鐘乘法器和可選的高速時(shí)鐘到定時(shí)器,可以直接影響串行端口的波特率生成。本文檔的目的是解釋這兩個(gè)新功能與串行端口波特率生成之間的交互。
串行端口模式
DS89C430串行端口提供四種基本工作模式。模式 0 允許使用源自系統(tǒng)時(shí)鐘的波特時(shí)鐘對(duì) 8 位數(shù)據(jù)進(jìn)行半雙工同步通信。模式 1 允許 8 位數(shù)據(jù)與源自定時(shí)器 1 或定時(shí)器 2 的波特時(shí)鐘進(jìn)行全雙工異步通信。模式 3 與模式 1 的不同之處在于支持 9 位數(shù)據(jù)傳輸和接收。模式2同樣提供9位數(shù)據(jù)通信,但其波特時(shí)鐘直接來自振蕩器頻率。為了支持模式 1、2 和 3 異步通信,起始位始終位于數(shù)據(jù)之前,停止位始終位于數(shù)據(jù)之后。每種串行端口模式的完整詳細(xì)信息可在超高速微控制器用戶指南中找到。
時(shí)鐘乘法器
超高速微控制器集成了片上時(shí)鐘倍頻器,可在降低外部晶體時(shí)鐘頻率的情況下提供更高的性能。乘法器可以配置為生成雙倍 (2X) 或四倍 (4X) 的內(nèi)部系統(tǒng)時(shí)鐘,由 2X/4X 特殊功能寄存器位 (PMR.3) 控制。請(qǐng)注意,由此產(chǎn)生的2倍或4倍乘法系統(tǒng)時(shí)鐘仍不能超過數(shù)據(jù)手冊(cè)中規(guī)定的最大工作頻率。有關(guān)乘法器的完整詳細(xì)信息,請(qǐng)參閱超高速微控制器用戶指南。
一旦時(shí)鐘乘法器輸出被選為內(nèi)部系統(tǒng)時(shí)鐘(CD1:0 = 00b),從系統(tǒng)時(shí)鐘派生的某些串行端口波特率時(shí)鐘(不再等于外部振蕩器頻率)將發(fā)生變化。圖 1 突出顯示了使用 2X 或 4X 乘法系統(tǒng)時(shí)鐘時(shí)可能受影響的串行端口時(shí)鐘。串行模式 0 波特率始終不同,串行模式 2 波特率永遠(yuǎn)不會(huì)不同,串行模式 1、3 波特率可能不同,具體取決于所使用的定時(shí)器和/或定時(shí)器輸入時(shí)鐘選擇。如圖1所示,表1表示哪些串行端口模式受時(shí)鐘乘法器的影響。附錄 A 包含使用 2X 或 4X 時(shí)鐘乘法器模式時(shí)執(zhí)行波特率計(jì)算的詳細(xì)公式。
圖1.串行端口時(shí)鐘受時(shí)鐘乘法器輸出選擇的影響 (CD1:0 = 00b)。
串口模式 | 波特時(shí)鐘源 |
波特時(shí)鐘取決于 內(nèi)部系統(tǒng)時(shí)鐘(時(shí)鐘 倍頻器選擇) |
模式 0 (同步 - 8 位) |
系統(tǒng)時(shí)鐘/4 系統(tǒng)時(shí)鐘/12 |
是的 |
模式 1 (異步 - 10 位) |
小時(shí) 1 小時(shí) 2 |
是1 否2 |
模式 2 (異步 - 11 位) |
振蕩器時(shí)鐘/32 振蕩器時(shí)鐘/64 |
不 |
模式 3 (異步 - 11 位) |
小時(shí) 1 小時(shí) 2 |
是1 否2 |
1 僅當(dāng)啟用 4 分頻或 1 分頻定時(shí)器 1 輸入時(shí)鐘時(shí)(T1M = 1 或 T1MH = 1)。為了與原始 8051 兼容,默認(rèn)定時(shí)器 1 輸入時(shí)鐘 (T1MH, T1M = 00b) 固定為振蕩器時(shí)鐘除以 12。 2 僅適用于串行端口 0 上的波特率生成。 |
優(yōu)點(diǎn):更快的波特率,更低的EMI
使用時(shí)鐘乘法器時(shí),應(yīng)用優(yōu)勢(shì)可能很大。一個(gè)原始頻率四分之一的外部晶體時(shí)鐘可用于產(chǎn)生與以前相同的串行模式 0 和(定時(shí)器 1 生成)模式 1、3 波特率,但 EMI 大大降低?;蛘?,當(dāng)內(nèi)部乘以 2 倍或 4 倍時(shí),相同的外部晶體現(xiàn)在可以生成高達(dá)四倍的波特率!
高速輸入時(shí)鐘至定時(shí)器
為了使片上定時(shí)器對(duì)應(yīng)用最有用,每個(gè)定時(shí)器都應(yīng)能夠以相當(dāng)于最小指令周期的速率跟蹤時(shí)間。對(duì)于以 8051 個(gè)振蕩器時(shí)鐘執(zhí)行指令的原始 12 架構(gòu),定時(shí)器以振蕩器頻率除以 12 速率計(jì)時(shí)。當(dāng)達(dá)拉斯半導(dǎo)體公司推出其高速微控制器時(shí),該微控制器縮短了四個(gè)振蕩器時(shí)鐘的機(jī)器周期,為每個(gè)定時(shí)器提供了一個(gè)可選擇的振蕩器頻率除以4個(gè)輸入時(shí)鐘控制。當(dāng)高速微控制器系列中添加時(shí)鐘乘法器功能時(shí),可選擇的4分頻被修改為系統(tǒng)時(shí)鐘的函數(shù),而不是振蕩器時(shí)鐘?,F(xiàn)在,超高速微控制器具有單時(shí)鐘周期指令執(zhí)行功能。同樣,每個(gè)片上定時(shí)器都進(jìn)行了升級(jí),集成了可選系統(tǒng)時(shí)鐘除以1個(gè)輸入。
CKMOD (0h) SFR 中包含的 T1MH、T2MH 和 T96MH 位分別使系統(tǒng)時(shí)鐘除以 1 個(gè)輸入到定時(shí)器 0、定時(shí)器 1 和定時(shí)器 2。啟用定時(shí)器的高速系統(tǒng)時(shí)鐘輸入 (TxMH = 1) 將自動(dòng)覆蓋系統(tǒng)時(shí)鐘除以 4 個(gè)輸入 (TxM = 1) 設(shè)置。新的系統(tǒng)時(shí)鐘除以 1 個(gè)定時(shí)器輸入,如系統(tǒng)時(shí)鐘除以 4 個(gè)輸入,在使用定時(shí)器1時(shí)會(huì)影響波特率的產(chǎn)生。圖2突出顯示了可能受選擇定時(shí)器1高速時(shí)鐘輸入影響的串行端口時(shí)鐘。
圖2.串行端口時(shí)鐘受高速定時(shí)器1輸入(T1MH = 1)選擇的影響。
優(yōu)點(diǎn):波特率更快,波特率分辨率更高
相對(duì)于串行端口操作,除以1個(gè)輸入時(shí)鐘功能可轉(zhuǎn)化為兩個(gè)用戶優(yōu)勢(shì)。首先,在系統(tǒng)時(shí)鐘頻率相同的情況下,使用定時(shí)器1時(shí),現(xiàn)在可以為串行模式3和1生成四倍的波特率。其次,時(shí)鐘定時(shí)器1的速度更快,可實(shí)現(xiàn)更高的波特率分辨率,從而可能減少與應(yīng)用已使用的波特率相關(guān)的誤差,或者使新的波特率在應(yīng)用使用的可接受誤差范圍內(nèi)。
例如,假設(shè)用戶當(dāng)前有一個(gè)以 20MHz 系統(tǒng)時(shí)鐘頻率運(yùn)行的達(dá)拉斯高速微控制器應(yīng)用程序。該應(yīng)用程序使用其中一個(gè)串行端口與PC進(jìn)行RS232通信,并要求兩者之間的波特率不匹配<3%。如果使用定時(shí)器1(在8位自動(dòng)重新加載模式下)生成波特率,下面的表2給出了Dallas高速微控制器與新型超高速微控制器的“良好”波特率樣本。不可接受的波特率(不匹配> 3%)已用灰色陰影顯示。表3對(duì)25MHz的系統(tǒng)時(shí)鐘頻率進(jìn)行了相同的“良好”波特率比較??梢郧宄乜吹剑瑔⒂酶咚俣〞r(shí)器1輸入時(shí)鐘可提供更精細(xì)的波特率分辨率。附錄 A 包含利用定時(shí)器1 (T1MH = 1) 的系統(tǒng)時(shí)鐘輸入時(shí)執(zhí)行波特率計(jì)算的詳細(xì)公式。
電腦 UART (8250/16450) | 高速微控制器(T1M = 1 的定時(shí)器 1 用于波特率生成,SMOD_x = 1) | 超高速微控制器(T1MH = 1 的定時(shí)器 1 用于波特率生成,SMOD_x = 1) | ||||
重新加載 | 波特率 | 波特率 (TH1) | % 誤差 | 波特率 (TH1) | 錯(cuò)誤 | |
1 | 115200 | 104166 (FD) | -9.6 | 113636 (F5) | -1.4 | |
2 | 57600 | 62500 (FB) | 8.5 | 56818 (EA) | -1.4 | |
3 | 38400 | 39062 (F8) | 1.7 | 37879 (DF) | -1.4 | |
4 | 28800 | 28409 (F5) | -1.4 | 29070 (D5) | 0.9 | |
5 | 23040 | 22321 (F2) | -3.1 | 23148 (加利福尼亞州) | 0.5 | |
6 | 19200 | 19531 (F0) | 1.7 | 19231 (BF) | 0.2 | |
7 | 16457 | 16447 (ED) | -0.1 | 16447 (B4) | -0.1 | |
8 | 14400 | 14204 (EA) | -1.4 | 14368 (A9) | -0.2 | |
9 | 12800 | 13020 (E8) | 1.7 | (12755) (9E) | -0.4 | |
10 | 11520 | 11574 (E5) | 0.5 | 11574 (94) | 0.5 | |
11 | 10472 | 10417 (E2) | -0.5 | 10417 (88) | -0.5 | |
12 | 9600 | 9469 (DF) | -1.4 | (9615) (7E) | 0.2 |
電腦 UART (8250/16450) |
高速 微控制器 (T1M = 1 的定時(shí)器 1 用于波特 率生成,SMOD_x = 1) |
超高速 微控制器 (T1MH = 1 的定時(shí)器 1 用于波特 率生成,SMOD_x = 1) |
|||
重新加載 | 波特率 | 波特率 (TH1) | % 誤差 | 波特率 (TH1) | 錯(cuò)誤 |
1 | 115200 | 130208 (FD) | 13.0 | 111607 (F2) | -3.1 |
2 | 57600 | 55803 (F9) | -3.1 | 57870 (E5) | 0.4 |
3 | 38400 | 39062 (F6) | 1.7 | 38110 (D7) | -0.8 |
4 | 28800 | 27901 (F2) | -3.1 | 28935 (加利福尼亞州) | 0.5 |
5 | 23040 | 22978 (EF) | -0.3 | 22978年(公元前) | -0.3 |
6 | 19200 | 19531 (歐共體) | 1.7 | 19290 (AF) | 0.5 |
7 | 16457 | 16276 (E8) | -1.1 | 16447 (A1) | -0.1 |
8 | 14400 | 14467 (E5) | 0.5 | 14335 (93) | -0.5 |
9 | 12800 | 12600 (E1) | -1.6 | 12807 (86) | 0.1 |
10 | 11520 | 11489 (德語) | -0.3 | 11489 (78) | -0.3 |
11 | 10472 | 10557 (分貝) | 0.8 | 10487 (6B) | 0.1 |
12 | 9600 | 9527 (D7) | -0.8 | 9586(5D) | -0.1 |
應(yīng)用示例 #1
SPI 模式 (1,1) 接口,使用同步串行模式 0
雖然可以通過“位敲擊”端口引腳與SPI?器件接口,但使用同步串行模式0可減少軟件開銷并實(shí)現(xiàn)更快的通信速度。同步串行工作模式在 TXD 引腳上提供移位時(shí)鐘,并在移位時(shí)鐘 (TXD) 的每個(gè)上升沿處在 RXD 引腳上寫入/讀取串行數(shù)據(jù)。由于 TXD 處于高電平狀態(tài),因此同步串行模式與 CPOL = 1、CPHA = 1 SPI 模式緊密對(duì)齊。由于同步串行模式不需要每個(gè)位的 3 樣本多數(shù)投票方案(如異步串行模式),因此它能夠比任何其他串行模式更快地實(shí)現(xiàn)波特率。下圖顯示了DS89C430微控制器與SPI模式(1,1)兼容EEPROM器件之間的接口。
圖3.SPI兼容外設(shè)的串行端口接口示例。
串行端口 0 首先置于模式 0,并配置為產(chǎn)生系統(tǒng)時(shí)鐘除以 4 波特時(shí)鐘。根據(jù)所連接的SPI外設(shè)的時(shí)序限制,可能需要選擇降低的系統(tǒng)時(shí)鐘或系統(tǒng)時(shí)鐘除以12波特時(shí)鐘。在外部,TXD引腳(P3.1)提供串行時(shí)鐘并連接到EEPROM的SCK輸入。RXD 引腳 (P3.0) 通過連接到 EEPROM 的 SI 輸入和 SO 輸出來處理所有 SPI 數(shù)據(jù)事務(wù)。使用共享 SI/SO 配置的能力將取決于連接的 SPI 外設(shè)的 I/O 時(shí)序。第三個(gè)微控制器端口引腳未鏈接到片上串行端口硬件,用作SPI外設(shè)芯片選擇輸入。在本例中,端口引腳P3.2將連接到EEPROM/CS輸入,并由軟件手動(dòng)置位和取消置位。由于串行端口首先通信LSB,而SPI外設(shè)希望首先通信MSB,因此在大多數(shù)情況下使用查找表進(jìn)行字節(jié)轉(zhuǎn)換。
已經(jīng)創(chuàng)建了兩個(gè)例程,XRAM_store 和 XRAM_recall,并且完全按照它們的名字簡單地執(zhí)行。XRAM_store例程將內(nèi)部1kB SRAM的電流內(nèi)容寫入指定的1kB范圍的EEPROM,而XRAM_recall將指定的1kB范圍的EEPROM讀取到DS89C430片內(nèi)SRAM中。此代碼僅用作示例,可輕松調(diào)整為訪問微控制器或EEPROM存儲(chǔ)器的不同地址范圍,以較小或較大的塊。
應(yīng)用示例 #2
使用異步串行模式 485 的 RS-3 網(wǎng)絡(luò)
異步串行端口模式以與普遍接受的RS-232協(xié)議兼容的格式發(fā)送和接收數(shù)據(jù)。超高速微控制器以其最大系統(tǒng)時(shí)鐘頻率(33MHz)運(yùn)行時(shí),并使用系統(tǒng)時(shí)鐘定時(shí)器輸入(T1MH = 1),可以實(shí)現(xiàn)超過2Mbaud的異步波特率。(超高速微控制器包含一個(gè)表格,顯示每種串行模式的最特率)。遺憾的是,為了符合RS-232標(biāo)準(zhǔn)的物理要求,RS-232發(fā)送器必須提供±5V的最小輸出電壓擺幅,但不能超過30V/μs的壓擺率。這些限制通常將RS-232兼容通信限制在較慢的波特率和較短的線路長度下。但是,當(dāng)需要更高的傳輸速率時(shí),與RS-232標(biāo)準(zhǔn)相關(guān)的限制不應(yīng)妨礙異步串行模式的使用。首先,ADI公司目前提供RS-232“兼容”(不兼容)收發(fā)器,能夠進(jìn)行兆波特?操作。有關(guān)MegaBaud RS-232兼容收發(fā)器的詳細(xì)信息,請(qǐng)?jiān)L問ADI公司網(wǎng)站(www.analog.com)。其次,多個(gè)微控制器和/或其他異步串行設(shè)備之間的點(diǎn)對(duì)點(diǎn)連接允許創(chuàng)建能夠以更快的波特率進(jìn)行通信的用戶定義網(wǎng)絡(luò)。此外,還有物理層協(xié)議(例如RS-422和RS-485)支持更遠(yuǎn)距離的高速異步串行通信。
圖4.使用硬件串行端口接口的RS-485網(wǎng)絡(luò)示例。
上圖顯示了(485)個(gè)DS3C89微控制器之間的RS-430網(wǎng)絡(luò)接口。異步串行模式使用 TXD 引腳進(jìn)行傳輸,使用 RXD 引腳進(jìn)行接收。這些引腳直接連接到RS-485收發(fā)器的DI(數(shù)據(jù)輸入)和RO(接收輸出)引腳。第三個(gè)微控制器端口引腳P1.4連接到DE(數(shù)據(jù)使能)和/RE(接收使能),并將用作半雙工收發(fā)器的方向控制。網(wǎng)絡(luò)使用主/從架構(gòu)(1個(gè)主站,2個(gè)從站),其中每個(gè)從設(shè)備都有自己唯一的地址,在總線上傳輸之前必須首先由主設(shè)備尋址。所有器件均以 22.1184MHz 系統(tǒng)時(shí)鐘頻率運(yùn)行,并使用定時(shí)器 1 產(chǎn)生 1.38M 波特率。生成此波特率所需的設(shè)置可在圖后的表4中找到。
系統(tǒng)時(shí)鐘(兆赫) | 外部晶體或時(shí)鐘頻率 (MHz) | 時(shí)鐘乘法器模式2 | 計(jì)時(shí)器 1 重新加載值 | ||||
FB | 足球俱樂部 | FD | 鐵 | FF | |||
7.3728 | 7.3728 | - | 92,160 | 115,200 | 153,600 | 230,400 | 460,800 |
10.0000 | 10.0000 | - | 125,000 | 156,250 | 208,333 | 312,250 | 625,000 |
11.0592 | 11.0592 | - | 138,240 | 172,800 | 230,400 | 345,600 | 691,200 |
14.7456 | 7.3728 | 2 倍 | 184,320 | 230,400 | 307,200 | 460,800 | 921,600 |
16.0000 | 16.0000 | - | 200,000 | 250,000 | 333,333 | 500,000 | 1,000,000 |
18.4320 | 18.4320 | - | 230,400 | 288,000 | 384,000 | 576,000 | 1,152,000 |
20.0000 | 10.0000 | 2 倍 | 250,000 | 312,250 | 416,667 | 625,000 | 1,250,000 |
22.1184 | 11.0592 | 2 倍 | 276,480 | 345,600 | 460,800 | 691,200 | 1,382,4001 |
25.0000 | 25.0000 | - | 312,500 | 390,625 | 520,833 | 781,250 | 1,562,500 |
29.4912 | 7.3728 | 4 倍 | 368,640 | 460,800 | 614,400 | 921,600 | 1,843,200 |
32.0000 | 16.0000 | 2 倍 | 400,000 | 500,000 | 666,667 | 1,000,000 | 2,000,000 |
33.0000 | 33.0000 | - | 412,500 | 515,625 | 687,500 | 1,031,250 | 2,062,500 |
1 應(yīng)用示例 #2 中使用的波特率。 2 時(shí)鐘乘法器用于說明,不需要生成這些系統(tǒng)時(shí)鐘頻率。 |
代碼示例:主代碼
主器件初始化為發(fā)送器,并驅(qū)動(dòng)其收發(fā)器的DE(/RE引腳)至邏輯高電平。發(fā)送從地址后,主機(jī)將收發(fā)器置于接收模式。從機(jī)接收到兩個(gè)數(shù)據(jù)字節(jié)后,主機(jī)將收發(fā)器返回到其發(fā)送模式。如果在一定時(shí)間內(nèi)未從尋址從站接收到兩個(gè)數(shù)據(jù)字節(jié),則主站使用 13 位定時(shí)器0 超時(shí)。在對(duì)另一個(gè)從站尋址之前,主站將從地址和接收的數(shù)據(jù)字節(jié)(或指示未收到響應(yīng))發(fā)送到串行端口0。
代碼示例(續(xù)):從站#1,#2代碼
從器件最初配置為接收器,驅(qū)動(dòng)其各自收發(fā)器的DE、低電平RE引腳至邏輯低電平。兩個(gè)從屬微控制器都使用多處理器通信模式,以便將網(wǎng)絡(luò)上的地址傳輸與數(shù)據(jù)傳輸區(qū)分開來。尋址時(shí),從設(shè)備成為發(fā)射器,并通過發(fā)送兩個(gè)數(shù)據(jù)字節(jié)來響應(yīng)主設(shè)備。發(fā)送這些字節(jié)后,從站將收發(fā)器返回到接收模式,并開始監(jiān)控網(wǎng)絡(luò)的地址。
審核編輯:郭婷
-
微控制器
+關(guān)注
關(guān)注
48文章
7454瀏覽量
150853 -
emi
+關(guān)注
關(guān)注
53文章
3571瀏覽量
127229 -
串行端口
+關(guān)注
關(guān)注
0文章
31瀏覽量
11640
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論