單芯片解決方案,開(kāi)啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來(lái)前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來(lái)說(shuō),一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲(chǔ)與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個(gè)獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開(kāi)發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN100和QFN68。
W55MH32L采用QFN100封裝版本,尺寸為12x12mm,其資源豐富,專(zhuān)為各種復(fù)雜工控場(chǎng)景設(shè)計(jì)。它擁有66個(gè)GPIO、3個(gè)ADC、12通道DMA、17個(gè)定時(shí)器、2個(gè)I2C、5個(gè)串口、2個(gè)SPI接口(其中1個(gè)帶I2S接口復(fù)用)、1個(gè)CAN、1個(gè)USB2.0以及1個(gè)SDIO接口。如此豐富的外設(shè)資源,能夠輕松應(yīng)對(duì)工業(yè)控制中多樣化的連接需求,無(wú)論是與各類(lèi)傳感器、執(zhí)行器的通信,還是對(duì)復(fù)雜工業(yè)協(xié)議的支持,都能游刃有余,成為復(fù)雜工控領(lǐng)域的理想選擇。 同系列還有QFN68封裝的W55MH32Q版本,該版本體積更小,僅為8x8mm,成本低,適合集成度高的網(wǎng)關(guān)模組等場(chǎng)景,軟件使用方法一致。更多信息和資料請(qǐng)進(jìn)入http://www.w5500.com/網(wǎng)站或者私信獲取。
此外,本W(wǎng)55MH32支持硬件加密算法單元,WIZnet還推出TOE+SSL應(yīng)用,涵蓋TCP SSL、HTTP SSL以及 MQTT SSL等,為網(wǎng)絡(luò)通信安全再添保障。
為助力開(kāi)發(fā)者快速上手與深入開(kāi)發(fā),基于W55MH32L這顆芯片,WIZnet精心打造了配套開(kāi)發(fā)板。開(kāi)發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開(kāi)發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開(kāi)發(fā)者全面評(píng)估芯片性能。
若您想獲取芯片和開(kāi)發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問(wèn)官方網(wǎng)頁(yè):http://www.w5500.com/,我們期待與您共同探索W55MH32的無(wú)限可能。
本章參考資料:《W55MH32-中文參考手冊(cè)》中斷和事件章節(jié)和7.4章節(jié)AFIO寄存器描述。
上一章節(jié)我們已經(jīng)詳細(xì)介紹了NVIC,對(duì)W55MH32系列中斷管理系統(tǒng)有個(gè)全局的了解,我們這章的內(nèi)容是NVIC的實(shí)例應(yīng)用, 也是W55MH32控制器非常重要的一個(gè)資源。學(xué)習(xí)本章時(shí),配合《W55MH32-參考手冊(cè)》中斷和事件章節(jié)一起閱讀,效果會(huì)更佳,特別是涉及到寄存器說(shuō)明的部分。
特別說(shuō)明,本書(shū)內(nèi)容是以W55MH32系列控制器資源講解。
1 EXTI簡(jiǎn)介
EXTI(External interrupt/event controller)—外部中斷/事件控制器,管理了控制器的20個(gè)中斷/事件線。 每個(gè)中斷/事件線都對(duì)應(yīng)有一個(gè)邊沿檢測(cè)器,可以實(shí)現(xiàn)輸入信號(hào)的上升沿檢測(cè)和下降沿的檢測(cè)。EXTI可以實(shí)現(xiàn)對(duì)每個(gè)中斷/事件線進(jìn)行單獨(dú)配置, 可以單獨(dú)配置為中斷或者事件,以及觸發(fā)事件的屬性。
2 EXTI功能框圖
EXTI的功能框圖包含了EXTI最核心內(nèi)容,掌握了功能框圖,對(duì)EXTI就有一個(gè)整體的把握,在編程時(shí)思路就非常清晰。EXTI功能框圖見(jiàn)圖 EXTI功能框圖 。
在圖 EXTI功能框圖 可以看到很多在信號(hào)線上打一個(gè)斜杠并標(biāo)注“20”字樣,這個(gè)表示在控制器內(nèi)部類(lèi)似的信號(hào)線路有20個(gè), 這與EXTI總共有20個(gè)中斷/事件線是吻合的。所以我們只要明白其中一個(gè)的原理,那其他19個(gè)線路原理也就知道了。
EXTI可分為兩大部分功能,一個(gè)是產(chǎn)生中斷,另一個(gè)是產(chǎn)生事件,這兩個(gè)功能從硬件上就有所不同。
首先我們來(lái)看圖 EXTI功能框圖 中紅色虛線指示的電路流程。它是一個(gè)產(chǎn)生中斷的線路,最終信號(hào)流入到NVIC控制器內(nèi)。
編號(hào)1是輸入線,EXTI控制器有19個(gè)中斷/事件輸入線,這些輸入線可以通過(guò)寄存器設(shè)置為任意一個(gè)GPIO,也可以是一些外設(shè)的事件, 這部分內(nèi)容我們將在后面專(zhuān)門(mén)講解。輸入線一般是存在電平變化的信號(hào)。
編號(hào)2是一個(gè)邊沿檢測(cè)電路,它會(huì)根據(jù)上升沿觸發(fā)選擇寄存器(EXTI_RTSR)和下降沿觸發(fā)選擇寄存器(EXTI_FTSR)對(duì)應(yīng)位的設(shè)置來(lái)控制信號(hào)觸發(fā)。 邊沿檢測(cè)電路以輸入線作為信號(hào)輸入端,如果檢測(cè)到有邊沿跳變就輸出有效信號(hào)1給編號(hào)3電路,否則輸出無(wú)效信號(hào)0。 而EXTI_RTSR和EXTI_FTSR兩個(gè)寄存器可以控制需要檢測(cè)哪些類(lèi)型的電平跳變過(guò)程,可以是只有上升沿觸發(fā)、只有下降沿觸發(fā)或者上升沿和下降沿都觸發(fā)。
編號(hào)3電路實(shí)際就是一個(gè)或門(mén)電路,它的一個(gè)輸入來(lái)自編號(hào)2電路,另外一個(gè)輸入來(lái)自軟件中斷事件寄存器(EXTI_SWIER)。EXTI_SWIER允許我們通過(guò)程序控制就可以啟動(dòng)中斷/事件線, 這在某些地方非常有用。我們知道或門(mén)的作用就是有1就為1,所以這兩個(gè)輸入隨便一個(gè)有有效信號(hào)1就可以輸出1給編號(hào)4和編號(hào)6電路。
編號(hào)4電路是一個(gè)與門(mén)電路,它的一個(gè)輸入是編號(hào)3電路,另外一個(gè)輸入來(lái)自中斷屏蔽寄存器(EXTI_IMR)。與門(mén)電路要求輸入都為1才輸出1, 導(dǎo)致的結(jié)果是如果EXTI_IMR設(shè)置為0時(shí),那不管編號(hào)3電路的輸出信號(hào)是1還是0,最終編號(hào)4電路輸出的信號(hào)都為0;如果EXTI_IMR設(shè)置為1時(shí), 最終編號(hào)4電路輸出的信號(hào)才由編號(hào)3電路的輸出信號(hào)決定,這樣我們可以簡(jiǎn)單的控制EXTI_IMR來(lái)實(shí)現(xiàn)是否產(chǎn)生中斷的目的。 編號(hào)4電路輸出的信號(hào)會(huì)被保存到掛起寄存器(EXTI_PR)內(nèi),如果確定編號(hào)4電路輸出為1就會(huì)把EXTI_PR對(duì)應(yīng)位置1。
編號(hào)5是將EXTI_PR寄存器內(nèi)容輸出到NVIC內(nèi),從而實(shí)現(xiàn)系統(tǒng)中斷事件控制。
接下來(lái)我們來(lái)看看綠色虛線指示的電路流程。它是一個(gè)產(chǎn)生事件的線路,最終輸出一個(gè)脈沖信號(hào)。
產(chǎn)生事件線路是在編號(hào)3電路之后與中斷線路有所不同,之前電路都是共用的。編號(hào)6電路是一個(gè)與門(mén),它的一個(gè)輸入來(lái)自編號(hào)3電路, 另外一個(gè)輸入來(lái)自事件屏蔽寄存器(EXTI_EMR)。如果EXTI_EMR設(shè)置為0時(shí),那不管編號(hào)3電路的輸出信號(hào)是1還是0,最終編號(hào)6電路輸出的信號(hào)都為0; 如果EXTI_EMR設(shè)置為1時(shí),最終編號(hào)6電路輸出的信號(hào)才由編號(hào)3電路的輸出信號(hào)決定,這樣我們可以簡(jiǎn)單的控制EXTI_EMR來(lái)實(shí)現(xiàn)是否產(chǎn)生事件的目的。
編號(hào)7是一個(gè)脈沖發(fā)生器電路,當(dāng)它的輸入端,即編號(hào)6電路的輸出端,是一個(gè)有效信號(hào)1時(shí)就會(huì)產(chǎn)生一個(gè)脈沖;如果輸入端是無(wú)效信號(hào)就不會(huì)輸出脈沖。
編號(hào)8是一個(gè)脈沖信號(hào),就是產(chǎn)生事件的線路最終的產(chǎn)物,這個(gè)脈沖信號(hào)可以給其他外設(shè)電路使用,比如定時(shí)器TIM、模擬數(shù)字轉(zhuǎn)換器ADC等等,這樣的脈沖信號(hào)一般用來(lái)觸發(fā)TIM或者ADC開(kāi)始轉(zhuǎn)換。
產(chǎn)生中斷線路目的是把輸入信號(hào)輸入到NVIC,進(jìn)一步會(huì)運(yùn)行中斷服務(wù)函數(shù),實(shí)現(xiàn)功能,這樣是軟件級(jí)的。而產(chǎn)生事件線路目的就是傳輸一個(gè)脈沖信號(hào)給其他外設(shè)使用, 并且是電路級(jí)別的信號(hào)傳輸,屬于硬件級(jí)的。
另外,EXTI是在APB2總線上的,在編程時(shí)候需要注意到這點(diǎn)。
3 中斷/事件線
EXTI有20個(gè)中斷/事件線,每個(gè)GPIO都可以被設(shè)置為輸入線,占用EXTI0至EXTI15, 還有另外七根用于特定的外設(shè)事件,見(jiàn)表 EXTI中斷_事件線 。
4根特定外設(shè)中斷/事件線由外設(shè)觸發(fā),具體用法參考《W55MH32參考手冊(cè)》中對(duì)外設(shè)的具體說(shuō)明。
中斷 / 事件線 | 輸入源 |
EXTI0 | PX0(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI1 | PX1(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI2 | PX2(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI3 | PX3(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI4 | PX4(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI5 | PX5(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI6 | PX6(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI7 | PX7(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI8 | PX8(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI9 | PX9(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI10 | PX10(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI11 | PX11(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI12 | PX12(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI13 | PX13(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI14 | PX14(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI15 | PX15(X 可為 A, B, C, D, E, F, G, H, I) |
EXTI16 | PVD 輸出 |
EXTI17 | RTC 鬧鐘事件 |
EXTI18 | USB 喚醒事件 |
EXTI19 | 以太網(wǎng)喚醒事件(只適用互聯(lián)型) |
EXTI0至EXTI15用于GPIO,通過(guò)編程控制可以實(shí)現(xiàn)任意一個(gè)GPIO作為EXTI的輸入源。由表 EXTI中斷_事件線 可知, EXTI0可以通過(guò)AFIO的外部中斷配置寄存器1(AFIO_EXTICR1)的EXTI0[3:0]位選擇配置為PA0、 PB0、PC0、PD0、PE0、PF0、PG0、PH0或者PI0,見(jiàn)圖 EXTI0輸入源選擇 。其他EXTI線(EXTI中斷/事件線)使用配置都是類(lèi)似的。
4 EXTI初始化結(jié)構(gòu)體詳解
標(biāo)準(zhǔn)庫(kù)函數(shù)對(duì)每個(gè)外設(shè)都建立了一個(gè)初始化結(jié)構(gòu)體,比如EXTI_InitTypeDef,結(jié)構(gòu)體成員用于設(shè)置外設(shè)工作參數(shù),并由外設(shè)初始化配置函數(shù), 比如EXTI_Init()調(diào)用,這些設(shè)定參數(shù)將會(huì)設(shè)置外設(shè)相應(yīng)的寄存器,達(dá)到配置外設(shè)工作環(huán)境的目的。
初始化結(jié)構(gòu)體和初始化庫(kù)函數(shù)配合使用是標(biāo)準(zhǔn)庫(kù)精髓所在,理解了初始化結(jié)構(gòu)體每個(gè)成員意義基本上就可以對(duì)該外設(shè)運(yùn)用自如了。 初始化結(jié)構(gòu)體定義在w55mh32_exti.h文件中,初始化庫(kù)函數(shù)定義在w55mh32_exti.c文件中,編程時(shí)我們可以結(jié)合這兩個(gè)文件內(nèi)注釋使用。
代碼清單:EXTI-1 EXTI初始化結(jié)構(gòu)體
typedef struct { uint32_t EXTI_Line; // 中斷/事件線 EXTIMode_TypeDef EXTI_Mode; // EXTI模式 EXTITrigger_TypeDef EXTI_Trigger; // 觸發(fā)類(lèi)型 FunctionalState EXTI_LineCmd; // EXTI使能 } EXTI_InitTypeDef;
EXTI_Line:EXTI中斷/事件線選擇,可選EXTI0至EXTI19,可參考表 EXTI中斷_事件線 選擇。
EXTI_Mode:EXTI模式選擇,可選為產(chǎn)生中斷(EXTI_Mode_Interrupt)或者產(chǎn)生事件(EXTI_Mode_Event)。
EXTI_Trigger:EXTI邊沿觸發(fā)事件,可選上升沿觸發(fā)(EXTI_Trigger_Rising)、 下降沿觸發(fā)( EXTI_Trigger_Falling)或者上升沿和下降沿都觸發(fā)( EXTI_Trigger_Rising_Falling)。
EXTI_LineCmd:控制是否使能EXTI線,可選使能EXTI線(ENABLE)或禁用(DISABLE)。
5 補(bǔ)充說(shuō)明
關(guān)于使用外部按鍵中斷的理解補(bǔ)充,按教程與參考手冊(cè)的中斷/事件線與輸入源的表格看,可以使用EXTI0至15線路對(duì)應(yīng)到使用16個(gè)GPIO做外部中斷, 需要注意的是這16個(gè)線路并非都有單獨(dú)的中斷源,從w55mh32.h查看對(duì)應(yīng)芯片型號(hào)有EXTI0_IRQn、EXTI1_IRQn、EXTI2_IRQn、EXTI3_IRQn、EXTI4_IRQn、EXTI9_5_IRQn、EXTI15_10_IRQn, 再查看啟動(dòng)文件那邊定義的中斷函數(shù)同樣也是EXTI0_IRQHandler、EXTI1_IRQHandler、EXTI2_IRQHandler、EXTI3_IRQHandler、EXTI4_IRQHandler、EXTI9_5_IRQHandler、EXTI15_10_IRQHandler。
這里再次強(qiáng)調(diào)一下關(guān)于W55MH32中斷應(yīng)用概覽章節(jié)的補(bǔ)充說(shuō)明內(nèi)容, NVIC_PriorityGroupConfig是整個(gè)程序中只需要設(shè)置一次 ,當(dāng)設(shè)置好了中斷優(yōu)先級(jí)分組,其他各種外設(shè)對(duì)應(yīng)的中斷向量的中斷優(yōu)先級(jí)既是基于目前設(shè)置分組來(lái)解讀。
在其他例程中很多將NVIC_PriorityGroupConfig寫(xiě)在了每個(gè)外設(shè)自己的中斷配置函數(shù)里面,有些可能多個(gè)外設(shè)配置函數(shù)下重復(fù)了NVIC_PriorityGroupConfig()這句, 這里提醒用戶后續(xù)編寫(xiě)自己程序時(shí)只需要調(diào)用一次即可,并且從代碼布局邏輯來(lái)說(shuō)適合放在main()函數(shù)中。
WIZnet 是一家無(wú)晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專(zhuān)利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。
WIZnet 在全球擁有 70 多家分銷(xiāo)商,在香港、韓國(guó)、美國(guó)設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營(yíng)銷(xiāo)。
香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國(guó)和日本除外)。
審核編輯 黃宇
-
芯片
+關(guān)注
關(guān)注
462文章
53221瀏覽量
454730 -
單片機(jī)
+關(guān)注
關(guān)注
6071文章
45263瀏覽量
660715 -
WIZnet
+關(guān)注
關(guān)注
3文章
20瀏覽量
42663
發(fā)布評(píng)論請(qǐng)先 登錄
明德?lián)P視頻分享點(diǎn)撥FPGA課程--第十一章 ?Signaltapll的使用技巧
EXTI外部中斷/事件控制器
STM32外部中斷事件控制器EXTI的相關(guān)資料推薦
三相電路原理(第十一章)
STM32外部中斷事件控制器EXTI概念及使用方法

STM32 外部中斷/事件控制器EXTI

STM32的IO外部中斷EXTI的使用

STM32L4外部中斷及事件控制模塊(EXTI)

評(píng)論