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

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

評論