chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

LPC800前生今世 第六章-開(kāi)關(guān)矩陣(SWM: Switch Matrix)

恩智浦MCU加油站 ? 來(lái)源:未知 ? 2023-10-26 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

總體概述

開(kāi)關(guān)矩陣顧名思義就是一個(gè)由多個(gè),甚至多組開(kāi)關(guān)組成的陣列,這個(gè)陣列的目的就是把片內(nèi)外設(shè)的輸入輸出信號(hào)線,按照用戶(hù)的意向,通過(guò)編程連接到特定的外部引腳上。

開(kāi)關(guān)矩陣可以為LPC800的使用者帶來(lái)很多方便和實(shí)用的特性:
  • 很多用戶(hù)都碰到過(guò),設(shè)計(jì)PCB時(shí)芯片引腳的順序與板上的器件不匹配,走線繞來(lái)繞去;有了這個(gè)開(kāi)關(guān)矩陣,用戶(hù)可以按照最佳布線要求,安排MCU的功能引出腳。

  • 有些工程師在設(shè)計(jì)PCB時(shí),由于疏忽或?qū)ζ骷睦斫庥姓`,可能會(huì)造成連線錯(cuò)誤,例如把I2CSDA和SCL搞反了,把UART的TX和RX搞反了等。遇到這種情況,不必割線、飛線、重新設(shè)計(jì)PCB,只需要在配置開(kāi)關(guān)矩陣時(shí),在代碼中按照實(shí)際的連線編程配置即可,完全不必改動(dòng)硬件。

  • 用戶(hù)經(jīng)常會(huì)因?yàn)楫a(chǎn)品升級(jí)換代,需要重新設(shè)計(jì)PCB,但只是做少量的修改或擴(kuò)充,或者僅僅是更換一個(gè)功能更強(qiáng)的MCU,而希望盡可能地保持原有的布局和布線走向不變;開(kāi)關(guān)矩陣同樣能滿(mǎn)足用戶(hù)的這個(gè)需要。

  • 通常一款MCU都會(huì)內(nèi)置多個(gè)及多種外設(shè),例如LPC824的串行通信外設(shè)就包含3個(gè)USART、4個(gè)I2C和2個(gè)SPI,即使不計(jì)算其它外設(shè)(例如SCT、GPIO等)的引出腳,所有這些串行通信外設(shè)的引出腳數(shù)目,就已經(jīng)超過(guò)芯片總的引腳數(shù)目。有了開(kāi)關(guān)矩陣,用戶(hù)可以按照自己的意愿引出需要的功能,在引腳總數(shù)允許的情況下,可以進(jìn)行隨意的功能組合。

開(kāi)關(guān)矩陣也有其局限性,模擬功能和電源/地線引腳不能通過(guò)開(kāi)關(guān)矩陣重新分配引出腳;模擬功能具有固定的不能被重新分配的引出腳,但用戶(hù)可以按照需要關(guān)閉引出腳對(duì)應(yīng)的模擬功能,從而騰出該引出腳用于其它數(shù)字功能。

1.1 SWM模型特性LPC800全系列的每個(gè)型號(hào)都標(biāo)配SWM開(kāi)關(guān)矩陣。

開(kāi)關(guān)矩陣的功能有兩個(gè):

  • 把數(shù)字外設(shè)的輸入輸出功能自由地分配到指定的外部引腳。能夠自由分配外部引腳的功能稱(chēng)為可移動(dòng)功能。

  • 使能或關(guān)閉模擬功能或需要特定電氣特性的功能,例如ADC和/或模擬比較器的輸入功能,晶體振蕩器的輸入輸出引腳,具有超快速模式的I2C0功能等。對(duì)于這些不能自由分配外部引腳的功能,稱(chēng)為固定功能。

下面兩張表分別列出了所有可移動(dòng)功能和固定功能,以及它們?cè)诟鱾€(gè)系列中的配置情況。* 括號(hào)中為L(zhǎng)PC81x的信號(hào)名稱(chēng)。

wKgaomU5wAOAeHQ2AAL1q6-qZPg167.png表1 可移動(dòng)功能一覽表

上表中列出了所有目前LPC800產(chǎn)品系列的可移動(dòng)功能信號(hào),可以看出這些信號(hào)全部是數(shù)字信號(hào)。右邊四列分別是各個(gè)系列的配置情況,數(shù)字代表所在行的信號(hào)在對(duì)應(yīng)的系列中是可移動(dòng)功能,編號(hào)的意義將在1.3節(jié)的應(yīng)用例程中介紹;格中“-”表示對(duì)應(yīng)的系列沒(méi)有這個(gè)信號(hào)。

I2C0_SDA和I2C0_SCL這兩個(gè)信號(hào)只在LPC81x中是可移動(dòng)功能,在其它系列中都是不可移動(dòng)的。LPC82x和LPC84x的其它I2C模塊,I2C1~3的信號(hào)是可移動(dòng)功能信號(hào)。

這里需要注意的是,在LPC81x系列中,I2C0_SDA和I2C0_SCL這兩個(gè)信號(hào)是可移動(dòng)的,但只有把它們安排在PIO0_10和PIO0_11引腳時(shí),才能達(dá)到超高速(1Mbit/s),移動(dòng)到其它的引腳時(shí)只能實(shí)現(xiàn)最高400 kbit/s的速率。

固定功能信號(hào)分兩類(lèi):數(shù)字信號(hào)和模擬信號(hào);這樣的區(qū)分將涉及到信號(hào)間互聯(lián)的策略,本章后面的段落將討論這個(gè)策略。* 對(duì)應(yīng)的信號(hào)與其它信號(hào)復(fù)用相同引腳。

wKgaomU5wAOAO3J6AAID1SDlpyM335.png表2固定功能一覽表

表2中右邊四列分別是各個(gè)系列的配置情況,數(shù)字代表所在行的信號(hào)在對(duì)應(yīng)的系列中是否有該功能,編號(hào)的意義將在1.3節(jié)的應(yīng)用例程中介紹;格中“-”表示對(duì)應(yīng)的系列沒(méi)有這個(gè)信號(hào)。

每一個(gè)可移動(dòng)功能,可以被分配使用任意一個(gè)引腳。而固定功能只能使用芯片指定的引腳。GPIO的輸出端口也只能使用芯片指定的引腳。

下面是LPC80x的可移動(dòng)功能和固定功能列表,這個(gè)新的子系列的SWM寄存器排列與其它系列略有不同,但不會(huì)影響用戶(hù)的使用。

wKgaomU5wAOAOStnAAJBvvcgBiI986.png表3LPC80x可移動(dòng)功能一覽表

* 對(duì)應(yīng)的信號(hào)與其它信號(hào)復(fù)用相同引腳wKgaomU5wAOABDV4AAFDP8TQN4Q257.png? ??4LPC80x固定功能一覽表

另外,在LPC804中的PLU模塊共有6個(gè)輸入端和8個(gè)輸出端,它們也是可移動(dòng)功能,但不能向其它可移動(dòng)功能那樣可以被任意地分配到任一個(gè)引腳,每個(gè)PLU的輸入/輸出端分別只能在PINASSIGNFIXED0寄存器中被分配到3個(gè)引腳,如下表:

wKgaomU5wASAJRqpAABBDehciZk970.png

每個(gè)PLU的信號(hào)在PINASSIGNFIXED0寄存器中占據(jù)2個(gè)二進(jìn)制控制位,具體配置方法請(qǐng)參考用戶(hù)手冊(cè)。

1.2 SWM模塊的內(nèi)部構(gòu)成1.2.1 模塊框圖

下面這個(gè)框圖來(lái)自LPC800的用戶(hù)手冊(cè):

wKgaomU5wASAeY-UAAElORvVzt4320.png圖1.開(kāi)關(guān)矩陣(SWM)框圖

這個(gè)圖全面地描繪了開(kāi)關(guān)矩陣與各個(gè)內(nèi)部外設(shè)、連接外部引腳的焊盤(pán)、GPIO模塊以及引腳中斷單元之間的關(guān)系。這張圖只畫(huà)出了一個(gè)外部引腳和與之對(duì)應(yīng)的內(nèi)部結(jié)構(gòu),其它引腳及內(nèi)部結(jié)構(gòu)和這張圖基本一樣;以LPC824封裝為HVQFN33的芯片為例,它有29個(gè)GPIO引腳,則其內(nèi)部就有29套上圖這樣的電路。

對(duì)于某些不具備模擬功能的引腳,它們的片內(nèi)結(jié)構(gòu)將不包含上圖中的模擬部分(黃色區(qū)域)。

wKgaomU5wASAcVuyAABN9DJ1uoE292.png

按照用戶(hù)手冊(cè)的功能描述,可以把LPC824的最大引腳封裝的開(kāi)關(guān)矩陣,用圖2示意性地展現(xiàn)出來(lái)。這張圖清晰地展示了一個(gè)完整的開(kāi)關(guān)陣列(矩陣)的結(jié)構(gòu);此圖只是一個(gè)幫助理解和記憶的示意圖,并不代表芯片內(nèi)部的真實(shí)電路。圖中左邊一列的PIO0_0~PIO0_28表示外部引腳,而右邊一列的PIO0_0~PIO0_28表示GPIO模塊的內(nèi)部輸出端。

wKgaomU5wASAZaEWAAYACWlOpAI966.png圖2.LPC824的HVQFN33封裝內(nèi)部開(kāi)關(guān)矩陣完整示意圖

下面把SWM的功能分成三個(gè)組,分別進(jìn)行介紹。(注:這里的分組只是為了方便說(shuō)明,實(shí)際在芯片手冊(cè)中并沒(méi)有此類(lèi)分組)

1.2.2 固定功能開(kāi)關(guān)組

上圖左側(cè)以黃色標(biāo)注的一組開(kāi)關(guān),可以稱(chēng)它為固定功能開(kāi)關(guān)組,每一個(gè)開(kāi)關(guān)旁邊,都用黃字標(biāo)示該開(kāi)關(guān)對(duì)應(yīng)的固定功能信號(hào)。這組開(kāi)關(guān)中,在芯片復(fù)位后,多數(shù)開(kāi)關(guān)默認(rèn)為斷開(kāi)固定功能與外部引腳的連接;但有三個(gè)信號(hào)特殊,在芯片復(fù)位后,SWDIO、SWCLK和RESETN對(duì)應(yīng)的開(kāi)關(guān)將這三個(gè)信號(hào)連接到外部引腳上。

另外PIO0_1對(duì)應(yīng)的固定功能信號(hào)有一個(gè)模擬功能(ACMP_I2)和一個(gè)數(shù)字功能(CLKIN);PIO0_6、PIO0_14和PIO0_23,分別對(duì)應(yīng)兩個(gè)固定功能模擬信號(hào);這些信號(hào)的連接示意圖如下。

wKgaomU5wASACbyMAAB4EIwi3QM843.png? ? ? 圖3.LPC824的復(fù)用固定功能模擬信號(hào)開(kāi)關(guān)示意圖

▲固定功能開(kāi)關(guān)組:決定需要把某個(gè)固定功能信號(hào)連接到對(duì)應(yīng)的外部引腳,這組開(kāi)關(guān)是一對(duì)一的;以LPC82x為例,表2列出了25個(gè)固定功能,其中有四對(duì)固定功能信號(hào)復(fù)用輸入引腳,因此共有25個(gè)固定功能開(kāi)關(guān)。(注:LPC82x中最大配置的芯片有25個(gè)固定功能,其它芯片中固定功能則少于這個(gè)數(shù)目)
模擬的固定功能信號(hào)對(duì)應(yīng)的開(kāi)關(guān)是排他性的,當(dāng)對(duì)應(yīng)的模擬信號(hào)連接到外部引腳時(shí),其它任何信號(hào)不能再連接到該引腳;數(shù)字的固定功能信號(hào)對(duì)應(yīng)的開(kāi)關(guān),用于把使能的信號(hào)連接到對(duì)應(yīng)的引腳,但不排斥其它可移動(dòng)功能也連接到這個(gè)相同的引腳。

wKgaomU5wASAe1f5AADGgzMmoOc379.png? ? ? ? ? ? ? ??圖4.固定功能開(kāi)關(guān)組(模擬信號(hào))示意圖

wKgaomU5wAWAOR0fAACMrh8W6uI883.png 圖5.固定功能開(kāi)關(guān)組(數(shù)字信號(hào))示意圖

引腳使能寄存器0(PINENABLE0)中的每一位,對(duì)應(yīng)圖4或圖5所示的一個(gè)開(kāi)關(guān)。

圖2中部蘭色陰影框起來(lái)的部分,可以稱(chēng)為可移動(dòng)功能開(kāi)關(guān)組。在這個(gè)縱橫矩陣中,每個(gè)交叉點(diǎn)都是一個(gè)開(kāi)關(guān);每列(縱向)只能有一個(gè)開(kāi)關(guān)閉合;每行(橫向)可以有多個(gè)開(kāi)關(guān)閉合;復(fù)位后所有開(kāi)關(guān)默認(rèn)為斷開(kāi)。

▲可移動(dòng)功能開(kāi)關(guān)組:該組開(kāi)關(guān)決定需要把某個(gè)可移動(dòng)功能信號(hào)連接到哪個(gè)外部引腳。表1的第一列的每一個(gè)可移動(dòng)功能,都對(duì)應(yīng)這樣的可移動(dòng)功能開(kāi)關(guān)組;表1列出了48個(gè)可移動(dòng)功能,也就是說(shuō)芯片內(nèi)部實(shí)現(xiàn)了48個(gè)這樣的開(kāi)關(guān)組。(注:最大配置的芯片有48個(gè)可移動(dòng)功能,其它芯片中可移動(dòng)功能數(shù)目可參看表1)

wKgaomU5wAWAJzhhAADP89amWx0719.png圖6.可移動(dòng)功能開(kāi)關(guān)組(共48組)示意圖A

每個(gè)引腳分配寄存器0~11(Pin assign register)都有4個(gè)字節(jié),每個(gè)字節(jié)控制上圖所示的一個(gè)可移動(dòng)功能開(kāi)關(guān)組,即每個(gè)引腳分配寄存器控制四個(gè)可移動(dòng)功能信號(hào)的引腳分配。

wKgaomU5wAWAFWUuAAE41P3xBus772.png圖7.可移動(dòng)功能開(kāi)關(guān)組(共48組)示意圖B

上圖是圖6的另一種畫(huà)法,虛線框起來(lái)的一組開(kāi)關(guān),由引腳分配寄存器的對(duì)應(yīng)字節(jié)控制,任何時(shí)候,只能有一個(gè)開(kāi)關(guān)閉合或所有開(kāi)關(guān)斷開(kāi)。

圖2右側(cè)以橘紅色標(biāo)注的一組開(kāi)關(guān),稱(chēng)為GPIO開(kāi)關(guān)組。當(dāng)其中任一開(kāi)關(guān)閉合時(shí),對(duì)應(yīng)的GPIO輸出端口已固定功能開(kāi)關(guān)的狀態(tài),將有可能連接到外部引腳。當(dāng)某個(gè)開(kāi)關(guān)K所在行中有任意一個(gè)開(kāi)關(guān)閉合時(shí),這個(gè)開(kāi)關(guān)K會(huì)自動(dòng)斷開(kāi),很顯然這樣可以避免GPIO模塊的輸出與可移動(dòng)功能信號(hào)相互沖突。

▲GPIO開(kāi)關(guān)組:該組開(kāi)關(guān)決定是否要把GPIO模塊的某個(gè)端口輸出到對(duì)應(yīng)的引腳。

wKgaomU5wAWAPObdAABYuQwVVbY218.png圖8.GPIO開(kāi)關(guān)組示意圖

將GPIO模塊的某個(gè)端口的輸出連接到外部引腳的條件有兩個(gè):一是沒(méi)有任何作為輸出的可移動(dòng)功能分配到對(duì)應(yīng)的引腳;二是沒(méi)有使能對(duì)應(yīng)的固定功能,例如:如果要輸出GPIO模塊的PIO0_6信號(hào),則應(yīng)該關(guān)閉對(duì)應(yīng)的固定功能ADC_1和VDDCMP。

從圖1可以看出,每個(gè)引腳都有兩個(gè)內(nèi)部連接點(diǎn)(焊盤(pán)),分別處理數(shù)字信號(hào)和模擬信號(hào);實(shí)際使用中,對(duì)IOCON(輸入輸出配置)模塊的設(shè)置決定數(shù)字焊盤(pán)的輸入輸出特性;而使用數(shù)字焊盤(pán)還是模擬焊盤(pán)與外部引腳相連接,則由開(kāi)關(guān)矩陣決定;當(dāng)在開(kāi)關(guān)矩陣中使能了某個(gè)端口的固定模擬功能,則該外部引腳將使用模擬焊盤(pán);其它情況下,不論引腳是分配了可移動(dòng)的功能信號(hào),還是固定功能的數(shù)字信號(hào),或是GPIO的輸出端,該外部引腳都是對(duì)應(yīng)數(shù)字焊盤(pán)的信號(hào)。

1.2.3 開(kāi)關(guān)矩陣的使用特性

從圖2和以上的描述,可以總結(jié)出以下一些特性:

■一旦使能某個(gè)固定模擬功能時(shí),該功能將占用對(duì)應(yīng)的引腳,所有其它任何信號(hào)都不能使用該引腳。

■當(dāng)使能某個(gè)固定數(shù)字功能信號(hào)時(shí),其他的可移動(dòng)數(shù)字信號(hào),也可以被分配使用該引腳,即多個(gè)信號(hào)線在芯片內(nèi)部是互通的。例如使能了CLKIN輸入功能后,還可以分配一個(gè)或多個(gè)SCT的輸入端至相同的引腳,這樣CLKIN信號(hào)也同時(shí)輸入至SCT中。

■如果某個(gè)引腳對(duì)應(yīng)的固定功能未使能時(shí),一個(gè)或多個(gè)可移動(dòng)功能可以被分配使用該引腳;當(dāng)沒(méi)有任何可移動(dòng)功能使用該引腳時(shí),對(duì)應(yīng)的GPIO輸出端口將能夠取得該引腳的控制權(quán)。使用GPIO輸出功能時(shí),需要關(guān)閉對(duì)應(yīng)的固定功能并且沒(méi)有任何可移動(dòng)功能使用對(duì)應(yīng)的引腳。

■一個(gè)或多個(gè)可移動(dòng)功能可以被分配使用相同的引腳,但其中只能有一個(gè)可移動(dòng)輸出功能(包含雙向功能信號(hào))。多個(gè)可移動(dòng)輸入功能可以使用同一個(gè)引腳;例如多個(gè)SCT的輸入端可以使用同一個(gè)引腳,這樣可以用一個(gè)外部信號(hào)同步SCT的多組定時(shí)。

■當(dāng)可移動(dòng)輸入功能與某個(gè)可移動(dòng)輸出功能被分配到同一個(gè)引腳時(shí),這些輸入功能將接收前述輸出功能的信號(hào)。使用者可以用這個(gè)特性實(shí)現(xiàn)很多環(huán)回的操作;例如把USART的RXD和TXD信號(hào)通過(guò)此方式連接,實(shí)現(xiàn)自循環(huán)。

■不管引腳連接到哪種數(shù)字功能信號(hào)(固定數(shù)字功能、可移動(dòng)功能或GPIO模塊),GPIO模塊的輸入端都始終與它對(duì)應(yīng)的引腳連接,GPIO輸入寄存器將反映引腳的數(shù)字電平狀態(tài)。

■當(dāng)任意模擬信號(hào)被分配使用外部引腳,該引腳的模擬焊盤(pán)被使能,同時(shí)數(shù)字焊盤(pán)將被斷開(kāi)。

■當(dāng)任意數(shù)字輸出信號(hào)被分配到外部引腳,該引腳的數(shù)字焊盤(pán)被使能。

■只要引腳的數(shù)字焊盤(pán)被使能(未斷開(kāi)),對(duì)應(yīng)的引腳中斷就會(huì)有輸入信號(hào),即該引腳的輸入信號(hào)(如果被使能的話)將可能觸發(fā)引腳中斷。

下面這個(gè)簡(jiǎn)單的流程圖,以另一種方式描述了開(kāi)關(guān)矩陣的用法。wKgaomU5wAWAerDCAAOCUFgnWfg713.png圖9.開(kāi)關(guān)矩陣的使用

1.3 開(kāi)關(guān)矩陣的應(yīng)用例程下面將以?xún)蓚€(gè)例子展示如何使用開(kāi)關(guān)矩陣:

第一個(gè)例子是使用SCT在板載LED燈上實(shí)現(xiàn)一個(gè)呼吸燈(SCT的呼吸燈不是本章重點(diǎn),將不做注解),然后通過(guò)改變開(kāi)關(guān)矩陣的設(shè)置,實(shí)現(xiàn)一組LED燈的輪流顯示。

第二個(gè)例子是使用LPC824的開(kāi)關(guān)矩陣,把芯片上的兩個(gè)USART模塊進(jìn)行對(duì)接,實(shí)現(xiàn)一發(fā)一收而不需片外連線。

1.3.1 設(shè)置開(kāi)關(guān)矩陣的函數(shù)

開(kāi)關(guān)矩陣的設(shè)置是通過(guò)一組32位寄存器PINASSIGN[n],和一個(gè)32位寄存器PINENABLE0實(shí)現(xiàn)。

寄存器PINENABLE0中的每一位,是對(duì)應(yīng)的固定功能的使能位,即圖4或圖5中的一個(gè)開(kāi)關(guān);表2最右邊三列中的數(shù)字,分別是每個(gè)系列中各個(gè)固定功能信號(hào)使能位在寄存器PINENABLE0中的索引號(hào)。

對(duì)于PINASSIGN[n] 寄存器組,我們把它相像成一個(gè)字節(jié)數(shù)組,每個(gè)字節(jié)對(duì)應(yīng)圖6或圖7所示的一個(gè)可移動(dòng)功能開(kāi)關(guān)組,即每個(gè)字節(jié)對(duì)應(yīng)一個(gè)可移動(dòng)功能,這個(gè)字節(jié)中填寫(xiě)的內(nèi)容就是該功能被分配到的引腳編號(hào)。表1最右邊三列中的數(shù)字,分別是每個(gè)系列中各個(gè)可移動(dòng)功能信號(hào),在上述字節(jié)數(shù)組中的索引號(hào)。例如在LPC82x和LPC83x系列中,功能SCT_OUT0的索引號(hào)是31,由于每個(gè)PINASSIGN寄存器里有四個(gè)字節(jié),所以SCT_OUT0的配置字節(jié)是PINASSIGN[7]的第三個(gè)字節(jié),即位24~31,如下圖:wKgaomU5wAWAWamMAAA_RQorYTA826.png

讀者可以方便地使用下面這個(gè)函數(shù)設(shè)置可移動(dòng)功能信號(hào)。

wKgaomU5wAaAOf-QAABzlU3hgxw186.png代碼片段1.置可移動(dòng)功能信號(hào)引腳的函數(shù)

這個(gè)函數(shù)簡(jiǎn)化了SWM寄存器的配置,以后會(huì)經(jīng)常用到。

1.3.2 設(shè)置開(kāi)關(guān)矩陣簡(jiǎn)例

■例1:使能I2C0的兩個(gè)信號(hào)。

在LPC82x和LPC83x中,I2C0的兩個(gè)信號(hào)是固定功能,需要使用PINENABLE0使能,分別使用P0_11和P0_12兩個(gè)引腳:wKgaomU5wAaAIhwyAABOVFezh7s653.pngLPC81x中,I2C0的兩個(gè)信號(hào)是可移動(dòng)功能,可以使用上一節(jié)的函數(shù)設(shè)置引腳分配。wKgaomU5wAaAJkPAAABOxud1zoc667.png

■例2:使能CLKIN輸入功能,同時(shí)把這個(gè)信號(hào)作為所有SCT的輸入。這個(gè)例子演示了把多個(gè)可移動(dòng)功能分配至同一個(gè)引腳,同時(shí)使能這個(gè)引腳的固定功能。

wKgaomU5wAaAJpagAAC673Xrgrs714.png

引腳P0_1是固定功能CLKIN對(duì)應(yīng)的引腳,使能CLKIN后P0_1即成為它的輸入引腳,再把所有SCT的輸入端也分配使用這個(gè)輸入腳,這樣輸入信號(hào)也同時(shí)同步地導(dǎo)入至所有SCT的輸入端。

1.3.3 通過(guò)開(kāi)關(guān)矩陣實(shí)現(xiàn)呼吸燈的輪轉(zhuǎn)

在LPC824-Lite開(kāi)發(fā)板上共有八個(gè)LED燈,這部分線路圖如下:

wKgaomU5wAaAGFQyAAC1gNTTLok945.png

從上圖中可以看出,八個(gè)LED燈分別連接到MCU的P0_7、13、16、17、19、27、28、18引腳上。

本例程使用LPC824的SCT產(chǎn)生一個(gè)PWM波形,當(dāng)這個(gè)PWM信號(hào)輸出到某個(gè)LED時(shí),對(duì)應(yīng)的LED就會(huì)忽明忽暗地顯現(xiàn)呼吸燈的效果。例程中通過(guò)開(kāi)關(guān)矩陣(SWM),在不改變?nèi)魏蜸CT配置的情況下,實(shí)現(xiàn)輪流逐個(gè)點(diǎn)亮LED燈的效果。在此基礎(chǔ)上,通過(guò)變換GPIO輸出,實(shí)現(xiàn)另一個(gè)LED燈的閃爍。

本例程可以讓讀者體會(huì)到,在不改變信號(hào)源的配置的情況下,僅改變SWM的配置即可改變信號(hào)的輸出引腳;作為對(duì)比,GPIO的輸出是不能通過(guò)開(kāi)關(guān)矩陣改變輸出引腳的,LED燈的閃爍操作則必須通過(guò)改變對(duì)應(yīng)的GPIO輸出狀態(tài),才能改變輸出引腳的狀態(tài)。

下圖是SCT的PWM波形輪流輸出至八個(gè)LED燈的示意圖。

wKgaomU5wAaAPbYtAACYk17Q_lU119.png圖10.輪流輸出PWM信號(hào)至八個(gè)LED燈的示意圖

為了實(shí)現(xiàn)呼吸燈的效果,即LED燈逐漸地由暗變亮,再逐漸地由亮變暗,需要控制輸出PWM波形的占空比,從100%(全滅)逐漸減少至0%(全亮),再?gòu)?%逐漸增加到100%。

本例程使用SysTick和幾個(gè)全局變量控制PWM占空比的改變和時(shí)序。

wKgaomU5wAeATDZdAAAxENMvk-s112.png

wKgaomU5wAeATouyAAC32UCm7zo676.png代碼片段2.SysTick中斷處理函數(shù)——改變PWM占空比

SysTick的中斷處理函數(shù)的操作非常簡(jiǎn)單,每次進(jìn)入都會(huì)改變輸出占空比;改變的速度快慢是由SysTick的設(shè)置決定。

下面代碼就是主程序部分。

wKgaomU5wAeAKDiNAAEAyb1zosk541.png代碼片段3.開(kāi)關(guān)矩陣實(shí)現(xiàn)呼吸燈輪轉(zhuǎn)主程序

初始化完所有用到的資源后,在主循環(huán)中有兩個(gè)操作,其一是當(dāng)SCT輸出的占空比達(dá)到100%,轉(zhuǎn)換SCT輸出的外部引腳,實(shí)現(xiàn)呼吸燈的輪轉(zhuǎn);其二是使用GPIO輸出控制另一個(gè)LED燈的閃爍。

數(shù)組LED_Pins[8],是為了方便程序輪流操作八個(gè)LED燈;數(shù)組中存放了每個(gè)燈對(duì)應(yīng)的引腳編號(hào)。

用GPIO輸出,實(shí)現(xiàn)LED燈閃爍的實(shí)現(xiàn)代碼如下。

wKgaomU5wAeAEU6pAABxvIk35n4789.png代碼片段4. GPIO實(shí)現(xiàn)LED燈閃爍

函數(shù)Toggle_LED_Pins()的作用就是定時(shí)變換LED燈的亮或滅,實(shí)現(xiàn)閃爍的效果。該函數(shù)以呼吸燈信號(hào)的占空比為定時(shí)依據(jù),實(shí)現(xiàn)LED循環(huán)閃爍:

wKgaomU5wAeAP9YjAAArmvR9ew0776.png

上述LED_On和LED_Off是兩個(gè)宏定義,直接控制GPIO輸出端口的狀態(tài):

#define LED_On(led) LPC_GPIO_PORT->CLR0 = (1<<(led))

#define LED_Off(led) LPC_GPIO_PORT->SET0 = (1<<(led))

1.3.4 兩個(gè)USART模塊對(duì)接

這個(gè)實(shí)例演示了通過(guò)開(kāi)關(guān)矩陣實(shí)現(xiàn)片內(nèi)外設(shè)模塊的互連,完成互相通信。

LPC800的每個(gè)USART模塊都可以實(shí)現(xiàn)同步的串行傳輸,即比普通的異步傳輸多一條時(shí)鐘信號(hào)線。本實(shí)例配置USART1作為發(fā)送方,配置USART2作為接收方,需要分別連接三個(gè)信號(hào)線,如下圖:

wKgaomU5wAeAN0EtAAA4v0jdHYg748.png

通過(guò)開(kāi)關(guān)矩陣的配置,上述連接可以在芯片內(nèi)部直接實(shí)現(xiàn)。如果不需要連接其它外設(shè),用戶(hù)不必再對(duì)開(kāi)發(fā)板進(jìn)行任何改動(dòng)。

下圖是開(kāi)關(guān)矩陣的配置代碼, USART1和USART2的初始化代碼和通信的測(cè)試代碼不在此說(shuō)明。wKgaomU5wAiAHTK8AACt4oNIEDs017.png 代碼片段5.為USART1和USART2配置輸入輸出引腳

讀者在運(yùn)行這個(gè)例程時(shí),可以嘗試更改上述06~11行代碼,分別把USART1和USART2的三個(gè)信號(hào)配置到不同的引腳,然后再在開(kāi)發(fā)板上把對(duì)應(yīng)的信號(hào)短接,以此體會(huì)開(kāi)關(guān)矩陣在內(nèi)部信號(hào)互連的特點(diǎn)。

在實(shí)際的項(xiàng)目開(kāi)發(fā)中,用戶(hù)可以使用開(kāi)關(guān)矩陣的這一特性,配置本項(xiàng)目中沒(méi)有用到的片內(nèi)模塊,對(duì)那些對(duì)外通信的模塊實(shí)行適當(dāng)?shù)谋O(jiān)測(cè),在不干擾正常通信并且不增加任何外部硬件的情況下,提供更多的調(diào)試跟蹤手段。

1.4注意事項(xiàng)

開(kāi)關(guān)矩陣的使用相當(dāng)簡(jiǎn)單,但有以下幾點(diǎn)需要注意的:

1. 配置開(kāi)關(guān)矩陣時(shí),必須先打開(kāi)SWM的時(shí)鐘,配置完成后,可以關(guān)閉SWM的時(shí)鐘節(jié)省功耗。

2. 不能把多于一個(gè)的輸出功能或雙向功能信號(hào),分配至同一個(gè)引腳上。

3. 只要引腳不是模擬功能,不管是輸出功能還是輸入功能,對(duì)應(yīng)的GPIO輸入端始終連接到引腳,這樣通過(guò)GPIO端口隨時(shí)可以讀出引腳的電平狀態(tài)。同時(shí),如果在SYSCON中選擇了該端口作為中斷觸發(fā)源,該引腳將可能觸發(fā)中斷,尤其當(dāng)該引腳為數(shù)字輸出功能時(shí),芯片內(nèi)部的輸出信號(hào)也會(huì)觸發(fā)中斷。

通過(guò)開(kāi)關(guān)矩陣SWM能夠?qū)崿F(xiàn)一個(gè)輸出對(duì)多個(gè)輸入信號(hào)的鏈接,這是通過(guò)把輸出信號(hào)送到引腳上,再通過(guò)引腳的輸入端口“穿回”到芯片內(nèi)部。如果選擇了模擬信號(hào),那么只有模擬信號(hào)送到引腳上,數(shù)字信號(hào)不能送到引腳上,否則就會(huì)干擾模擬信號(hào)。而且這時(shí)候數(shù)字輸入的那部分也是關(guān)閉的。如果不是最大封裝,那些沒(méi)封出來(lái)的引腳是可以用來(lái)做這種穿回,來(lái)實(shí)現(xiàn)內(nèi)部信號(hào)互聯(lián)。

END

更多恩智浦AI-IoT市場(chǎng)和產(chǎn)品信息,邀您同時(shí)關(guān)注“NXP客?!蔽⑿殴娞?hào)

wKgaomU5wAiAGS-MAABCdkRE230719.jpg ? ? ?

NXP客棧


恩智浦致力于打造安全的連接和基礎(chǔ)設(shè)施解決方案,為智慧生活保駕護(hù)航。

長(zhǎng)按二維碼,關(guān)注我們

恩智浦MCU加油站


這是由恩智浦官方運(yùn)營(yíng)的公眾號(hào),著重為您推薦恩智浦MCU的產(chǎn)品信息、開(kāi)發(fā)技巧、教程文檔、培訓(xùn)課程等內(nèi)容。

wKgaomU5wAiAMwagAAATNlPH08Y497.jpg ?

長(zhǎng)按二維碼,關(guān)注我們


原文標(biāo)題:LPC800前生今世 第六章-開(kāi)關(guān)矩陣(SWM: Switch Matrix)

文章出處:【微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。


聲明:本文內(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)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17932

    瀏覽量

    363170
  • 恩智浦
    +關(guān)注

    關(guān)注

    14

    文章

    5967

    瀏覽量

    115185

原文標(biāo)題:LPC800前生今世 第六章-開(kāi)關(guān)矩陣(SWM: Switch Matrix)

文章出處:【微信號(hào):NXP_SMART_HARDWARE,微信公眾號(hào):恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    電源設(shè)計(jì)中功率因數(shù)校正講解

    應(yīng)用的四種不同實(shí)現(xiàn)方法中得到的結(jié)果的詳細(xì)分析。提供了按給定準(zhǔn)則對(duì)各拓?fù)浣Y(jié)構(gòu)進(jìn)行比較分析和排名。還包括根據(jù)以上章節(jié)描述的結(jié)果給設(shè)計(jì)師提供的指南。 第六章為以上章節(jié)中提出的拓?fù)涮峁┝藶闈M(mǎn)足 FCC 關(guān)于
    發(fā)表于 06-25 15:58

    激光器電源技術(shù)電子書(shū)

    。 3.本書(shū)第三到第六章分別敘述了固體激光器電源、氣體激光器電源和半導(dǎo)體激光器電源的工作原理。 獲取完整文檔資料可下載附件哦?。。?! 如果內(nèi)容有幫助可以關(guān)注、點(diǎn)贊、評(píng)論支持一下哦~
    發(fā)表于 06-17 17:45

    施耐德電氣創(chuàng)贏計(jì)劃第六季正式啟動(dòng)

    由工業(yè)和信息化部國(guó)際經(jīng)濟(jì)技術(shù)合作中心與施耐德電氣共同主辦的創(chuàng)贏計(jì)劃第六季正式啟動(dòng)。
    的頭像 發(fā)表于 06-04 14:17 ?342次閱讀

    飛凌嵌入式ElfBoard ELF 1板卡-uboot移植之IOMUX介紹

    此文件夾,就自行創(chuàng)建),并解壓縮,準(zhǔn)備進(jìn)行移植。本章uboot移植工作基于eMMC版進(jìn)行。 經(jīng)過(guò)第六章,我們完整地移植了NXP的內(nèi)核,相信大家對(duì)IOMUX已經(jīng)很熟悉了,我們?cè)俸?jiǎn)單地提一下,如果您
    發(fā)表于 05-30 09:28

    第六章 外部中斷

    本章介紹W55MH32的IO口作為外部中斷輸入的使用。先闡述了NVIC(嵌套向量中斷控制器) 的結(jié)構(gòu)、寄存器、優(yōu)先級(jí)及相關(guān)函數(shù),再說(shuō)明EXTI(外部中斷和事件控制器)的功能??驁D及IO口與中斷線的映射。
    的頭像 發(fā)表于 05-26 16:27 ?484次閱讀
    <b class='flag-5'>第六章</b> 外部中斷

    第六章 GPIO輸入——按鍵檢測(cè)

    本篇文章講述了如何在W55MH32上實(shí)現(xiàn)按鍵輸入檢測(cè),以及按鍵輸入檢測(cè)的注意事項(xiàng)、實(shí)現(xiàn)方式和代碼講解等。掌握了按鍵檢測(cè)方式之后,我們就可以用按鍵控制我們想要實(shí)現(xiàn)的其他功能啦。
    的頭像 發(fā)表于 05-22 16:41 ?263次閱讀
    <b class='flag-5'>第六章</b> GPIO輸入——按鍵檢測(cè)

    矩陣混音技術(shù)快速入門(mén)

    A&H矩陣混音技術(shù)快速入門(mén)Live_Matrix_MixingChinese
    發(fā)表于 03-26 14:12 ?0次下載

    SESIP的前生今世和未來(lái)

    SESIP(Security Evaluation Standard for IoT Platforms)是針對(duì)物聯(lián)網(wǎng)(IoT)平臺(tái)的安全評(píng)估標(biāo)準(zhǔn)。它為物聯(lián)網(wǎng)設(shè)備和平臺(tái)提供了一個(gè)系統(tǒng)化的安全性評(píng)估框架,旨在幫助評(píng)估和提高物聯(lián)網(wǎng)設(shè)備及平臺(tái)的安全性,以應(yīng)對(duì)日益復(fù)雜的安全威脅。
    的頭像 發(fā)表于 01-07 14:16 ?636次閱讀

    《DNESP32S3使用指南-IDF版_V1.6》第六章 新建基礎(chǔ)工程

    第六章 新建基礎(chǔ)工程 在前面的章節(jié)中,我們已經(jīng)簡(jiǎn)要介紹了ESP32-S3的基礎(chǔ)知識(shí)和ESP-IDF的基本概念,并詳細(xì)闡述了VS Code IDE環(huán)境的搭建以及Espressif插件的安裝流程?,F(xiàn)在
    發(fā)表于 12-02 14:43

    AUMO傲目榮獲第六屆金輯獎(jiǎng)“最具成長(zhǎng)價(jià)值獎(jiǎng)”

    近日,由蓋世汽車(chē)主辦的2024第六屆“金輯獎(jiǎng)”頒獎(jiǎng)盛典在上海市圓滿(mǎn)落幕。
    的頭像 發(fā)表于 10-27 14:05 ?654次閱讀

    《DNK210使用指南 -CanMV版 V1.0》第六章 Kendryte K210固件燒錄

    第六章 Kendryte K210固件燒錄 本章將為讀者介紹Kendryte K210的固件燒錄,以及Kendryte K210外部NOR Flash的空間分布。本章分為如下幾個(gè)小節(jié):6.1 外部
    發(fā)表于 09-12 14:20

    第六章-電機(jī)驅(qū)動(dòng)和PWM STM32項(xiàng)目

    **功能介紹放開(kāi)頭, 使用便捷無(wú)需愁。** **這是全網(wǎng)最詳細(xì)、性?xún)r(jià)比最高的STM32實(shí)戰(zhàn)項(xiàng)目入門(mén)教程,通過(guò)合理的硬件設(shè)計(jì)和詳細(xì)的視頻筆記介紹,硬件使用STM32F103主控資料多方便學(xué)習(xí),通過(guò)3萬(wàn)字筆記、12多個(gè)小時(shí)視頻、20多章節(jié)代碼手把手教會(huì)你如何開(kāi)發(fā)和調(diào)試。讓你更快掌握嵌入式系統(tǒng)開(kāi)發(fā)。** V3.3.0-STM32智能小車(chē) 視頻: https://www.bilibili.com/video/BV16x4y1M7EN/?spm_id_from=333.337.search-card.all.click V3:HAL庫(kù)開(kāi)發(fā)、功能:PID速度控制、PID循跡、PID跟隨、遙控、避障、PID角度控制、視覺(jué)控制、電磁循跡、RTOS等功能。
    的頭像 發(fā)表于 08-21 16:46 ?966次閱讀
    <b class='flag-5'>第六章</b>-電機(jī)驅(qū)動(dòng)和PWM STM32項(xiàng)目

    XLT開(kāi)關(guān)矩陣

    開(kāi)關(guān)矩陣 蘇州新利通 系列化開(kāi)關(guān)矩陣是提高被測(cè)件測(cè)試效率、實(shí)現(xiàn)自動(dòng)化測(cè)試的核心設(shè)備,是基于標(biāo)準(zhǔn)控制平臺(tái)可進(jìn)行定制化設(shè)計(jì)的產(chǎn)品。系列化開(kāi)關(guān)
    的頭像 發(fā)表于 08-06 17:15 ?448次閱讀
    XLT<b class='flag-5'>開(kāi)關(guān)</b><b class='flag-5'>矩陣</b>

    優(yōu)利德UT2000/3000系列數(shù)字存儲(chǔ)示波器中文使用說(shuō)明書(shū)

    /UT3000系列數(shù)字存儲(chǔ)示波器的操作方法。第三 應(yīng)用示例:提供如何解決各種測(cè)量問(wèn)題示例。第四 系統(tǒng)提示及故障排除:第五 服務(wù)和支持:第六章 附錄:附錄A:技術(shù)指標(biāo)附錄B:UT2
    發(fā)表于 07-22 11:52 ?13次下載

    雙麒麟系統(tǒng)!迅為RK3588開(kāi)發(fā)板+銀河麒麟/開(kāi)放麒麟

    Build root系統(tǒng)功能測(cè)試 第四 Ubuntu系統(tǒng)功能測(cè)試 第五 Debian系統(tǒng)功能測(cè)試 第六章 openkylin系統(tǒng)功能測(cè)試 第七 銀河麒麟系統(tǒng)功能測(cè)試
    發(fā)表于 07-15 10:35