單芯片解決方案,開啟全新體驗(yàn)——W55MH32 高性能以太網(wǎng)單片機(jī)
W55MH32是WIZnet重磅推出的高性能以太網(wǎng)單片機(jī),它為用戶帶來前所未有的集成化體驗(yàn)。這顆芯片將強(qiáng)大的組件集于一身,具體來說,一顆W55MH32內(nèi)置高性能Arm? Cortex-M3核心,其主頻最高可達(dá)216MHz;配備1024KB FLASH與96KB SRAM,滿足存儲與數(shù)據(jù)處理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP協(xié)議棧、內(nèi)置MAC以及PHY,擁有獨(dú)立的32KB以太網(wǎng)收發(fā)緩存,可供8個獨(dú)立硬件socket使用。如此配置,真正實(shí)現(xiàn)了All-in-One解決方案,為開發(fā)者提供極大便利。
在封裝規(guī)格上,W55MH32 提供了兩種選擇:QFN68和QFN100。
W55MH32Q采用QFN68封裝版本,尺寸為8x8mm,它擁有36個GPIO、3個ADC、12通道DMA、17個定時(shí)器、2個I2C、3個串口、2個SPI接口(其中1個帶I2S接口復(fù)用)、1個CAN以及1個USB2.0。在保持與同系列其他版本一致的核心性能基礎(chǔ)上,僅減少了部分GPIO以及SDIO接口,其他參數(shù)保持一致,性價(jià)比優(yōu)勢顯著,尤其適合網(wǎng)關(guān)模組等對空間布局要求較高的場景。緊湊的尺寸和精簡化外設(shè)配置,使其能夠在有限空間內(nèi)實(shí)現(xiàn)高效的網(wǎng)絡(luò)連接與數(shù)據(jù)交互,成為物聯(lián)網(wǎng)網(wǎng)關(guān)、邊緣計(jì)算節(jié)點(diǎn)等緊湊型設(shè)備的理想選擇。 同系列還有QFN100封裝的W55MH32L版本,該版本擁有更豐富的外設(shè)資源,適用于需要多接口擴(kuò)展的復(fù)雜工控場景,軟件使用方法一致。更多信息和資料請進(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ò)通信安全再添保障。
為助力開發(fā)者快速上手與深入開發(fā),基于W55MH32Q這顆芯片,WIZnet精心打造了配套開發(fā)板。開發(fā)板集成WIZ-Link芯片,借助一根USB C口數(shù)據(jù)線,就能輕松實(shí)現(xiàn)調(diào)試、下載以及串口打印日志等功能。開發(fā)板將所有外設(shè)全部引出,拓展功能也大幅提升,便于開發(fā)者全面評估芯片性能。
若您想獲取芯片和開發(fā)板的更多詳細(xì)信息,包括產(chǎn)品特性、技術(shù)參數(shù)以及價(jià)格等,歡迎訪問官方網(wǎng)頁:http://www.w5500.com/,我們期待與您共同探索W55MH32的無限可能。
第十二章 高級定時(shí)器
W55MH32的高級控制定時(shí)器為TIM1和TIM8。
本章分為如下幾個小節(jié):
1 TIM1 和 TIM8 簡介
2 高級定時(shí)器寄存器描述
1 TIM1和TIM8概述
1.1 TIM1和TIM8簡介
高級控制定時(shí)器(TIM1 和 TIM8)由一個 16 位的自動裝載計(jì)數(shù)器組成,它由一個可編程的預(yù)分頻器驅(qū)動。它適合多種用途,包含測量輸入信號的脈沖寬度(輸入捕獲),或者產(chǎn)生輸出波形(輸出比較、PWM、嵌入死區(qū)時(shí)間的互補(bǔ) PWM 等)。使用定時(shí)器預(yù)分頻器和 RCC 時(shí)鐘控制預(yù)分頻器,可以實(shí)現(xiàn)脈沖寬度和波形周期從幾個微秒到幾個毫秒的調(diào)節(jié)。高級控制定時(shí)器(TIM1 和 TIM8)和通用定時(shí)器(TIMx)是完全獨(dú)立的,它們不共享任何資源。
1.2 TIM1和TIM8主要特性
TIM1和TIM8定時(shí)器的功能包括:
?16位向上、向下、向上/下自動裝載計(jì)數(shù)器
?16位可編程(可以實(shí)時(shí)修改)預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為1~65535之間的任意數(shù)值
?多達(dá)4個獨(dú)立通道:
·······輸入捕獲
·······輸出比較
·······PWM生成(邊緣或中間對齊模式)
·······單脈沖模式輸出
?死區(qū)時(shí)間可編程的互補(bǔ)輸出
?使用外部信號控制定時(shí)器和定時(shí)器互聯(lián)的同步電路
?允許在指定數(shù)目的計(jì)數(shù)器周期之后更新定時(shí)器寄存器的重復(fù)計(jì)數(shù)器
?剎車輸入信號可以將定時(shí)器輸出信號置于復(fù)位狀態(tài)或者一個已知狀態(tài)
?如下事件發(fā)生時(shí)產(chǎn)生中斷/DMA:
·······更新:計(jì)數(shù)器向上溢出/向下溢出,計(jì)數(shù)器初始化(通過軟件或者內(nèi)部/外部觸發(fā))
·······觸發(fā)事件(計(jì)數(shù)器啟動、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù))
·······輸入捕獲
·······輸出比較
······剎車信號輸入
?觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理
1.2 高級定時(shí)器功能框圖解析
高級定時(shí)器功能框圖如下:
高級控制定時(shí)器框圖
注: 根據(jù)控制位的設(shè)定,在 U(更新)事件時(shí)傳送預(yù)加載寄存器的內(nèi)容至工作寄存器事件中斷和 DMA 輸出高級定時(shí)器的框圖和通用定時(shí)器框圖很類似,只是添加了其它的一些功能,如:重復(fù)計(jì)數(shù)器、帶死區(qū)控制的互補(bǔ)輸出通道、斷路輸入等。相同內(nèi)容這里不再贅述,詳情請查看上一章節(jié)“第十一章 通用定時(shí)器(上篇)”的內(nèi)容。新增功能在高級定時(shí)器框圖的位置如下:
① 重復(fù)計(jì)數(shù)器
在 W55MH32 系列中,高級定時(shí)器 TIM1 和 TIM8 都有重復(fù)計(jì)數(shù)器。下面來介紹一下重復(fù)計(jì)數(shù)器有什么作用?在學(xué)習(xí)基本定時(shí)器和通用定時(shí)器的時(shí)候,我們知道定時(shí)器發(fā)生上溢或者下溢時(shí),會直接生成更新事件。但是有重復(fù)計(jì)數(shù)器的定時(shí)器并不完全是這樣的,定時(shí)器每次發(fā)生上溢或下溢時(shí),重復(fù)計(jì)數(shù)器的值會減一,當(dāng)重復(fù)計(jì)數(shù)器的值為 0 時(shí),再發(fā)生一次上溢或者下溢才會生成定時(shí)器更新事件。如果我們設(shè)置重復(fù)計(jì)數(shù)器寄存器 RCR 的值為 N,那么更新事件將在定時(shí)器發(fā)生 N+1 次上溢或下溢時(shí)發(fā)生。這里需要注意的是重復(fù)計(jì)數(shù)器寄存器是具有影子寄存器的,所以 RCR 寄存器只是起緩沖的作用。RCR 寄存器的值會在更新事件發(fā)生時(shí),被轉(zhuǎn)移至其影子寄存器中,從而真正生效。重復(fù)計(jì)數(shù)器的特性,在控制生成 PWM 信號時(shí)很有用,后面會有相應(yīng)的實(shí)驗(yàn)。
② 輸出比較
高級定時(shí)器輸出比較部分和通用定時(shí)器相比,多了帶死區(qū)控制的互補(bǔ)輸出功能。第②部分的 TIMx_CH1N、TIMx_CH2N 和 TIMx_CH3N 分別是定時(shí)器通道 1、通道 2 和通道 3的互補(bǔ)輸出通道,通道 4 是沒有互補(bǔ)輸出通道的。DTG 是死區(qū)發(fā)生器,死區(qū)時(shí)間由 DTG[7:0]位來配置。如果不使用互補(bǔ)通道和死區(qū)時(shí)間控制,那么高級定時(shí)器 TIM1 和 TIM8 和通用定時(shí)器的輸出比較部分使用方法基本一樣,只是要注意 MOE 位得置 1 定時(shí)器才能輸出。
③ 斷路功能
斷路功能也稱剎車功能,一般用于電機(jī)控制的剎車。F1 系列有一個斷路通道,斷路源可以是剎車輸入引腳(TIMx_BKIN),也可以是一個時(shí)鐘失敗事件。時(shí)鐘失敗事件由復(fù)位時(shí)鐘控制器中的時(shí)鐘安全系統(tǒng)產(chǎn)生。系統(tǒng)復(fù)位后,斷路功能默認(rèn)被禁止,MOE 位為低。使能斷路功能的方法:將 TIMx_BDTR 的位 BKE 置 1。斷路輸入引腳 TIMx_BKIN 的輸入有效電平可通過 TIMx_BDTR 寄存器的位 BKP 設(shè)置。使能剎車功能后:由 TIMx_BDTR 的 MOE、OSSI、OSSR 位,TIMx_CR2 的 OISx、OISxN 位,TIMx_CCER 的 CCxE、CCxNE 位控制 OCx 和 OCxN 輸出狀態(tài)。無論何時(shí),OCx和 OCxN 輸出都不能同時(shí)處在有效電平。
當(dāng)發(fā)生斷路輸入后,會怎么樣?
1.MOE 位被異步地清零,OCx 和 OCxN 為無效、空閑或復(fù)位狀態(tài)(由 OSSI 位選擇)。
2.OCx 和 OCxN 的狀態(tài):由相關(guān)控制位狀態(tài)決定,當(dāng)使用互補(bǔ)輸出時(shí):根據(jù)情況自動控制輸出電平,參考《W55MH32 參考手冊.pdf》手冊
3.BIF 位置 1,如果使能了 BIE 位,還會產(chǎn)生剎車中斷;如果使能了 TDE 位,會產(chǎn)生DMA 請求。
4.如果 AOE 位置 1,在下一個 更新事件 UEV 時(shí),MOE 位被自動置 1。
2 定時(shí)器初始化結(jié)構(gòu)體詳解
在標(biāo)準(zhǔn)庫函數(shù)頭文件w55mh32_tim.h中對定時(shí)器外設(shè)建立了四個初始化結(jié)構(gòu)體,分別為時(shí)基初始化結(jié)構(gòu)體TIM_TimeBaseInitTypeDef、 輸出比較初始化結(jié)構(gòu)體TIM_OCInitTypeDef、輸入捕獲初始化結(jié)構(gòu)體TIM_ICInitTypeDef和斷路和死區(qū)初始化結(jié)構(gòu)體TIM_BDTRInitTypeDef, 高級控制定時(shí)器可以用到所有初始化結(jié)構(gòu)體,通用定時(shí)器不能使用TIM_BDTRInitTypeDef結(jié)構(gòu)體, 基本定時(shí)器只能使用時(shí)基結(jié)構(gòu)體。接下來我們具體講解下這四個結(jié)構(gòu)體。
2.1 TIM_TimeBaseInitTypeDef
時(shí)基結(jié)構(gòu)體TIM_TimeBaseInitTypeDef用于定時(shí)器基礎(chǔ)參數(shù)設(shè)置,與TIM_TimeBaseInit函數(shù)配合使用完成配置。
代碼清單:高級定時(shí)器-1 定時(shí)器基本初始化結(jié)構(gòu)體
typedef struct { uint16_t TIM_Prescaler; // 預(yù)分頻器 uint16_t TIM_CounterMode; // 計(jì)數(shù)模式 uint32_t TIM_Period; // 定時(shí)器周期 uint16_t TIM_ClockDivision; // 時(shí)鐘分頻 uint8_t TIM_RepetitionCounter; // 重復(fù)計(jì)算器 } TIM_TimeBaseInitTypeDef;
TIM_Prescaler: 定時(shí)器預(yù)分頻器設(shè)置,時(shí)鐘源經(jīng)該預(yù)分頻器才是定時(shí)器計(jì)數(shù)時(shí)鐘CK_CNT,它設(shè)定PSC寄存器的值。 計(jì)算公式為:計(jì)數(shù)器時(shí)鐘頻率 (fCK_CNT) 等于 fCK_PSC / (PSC[15:0] + 1),可實(shí)現(xiàn)1至65536分頻。
TIM_CounterMode: 定時(shí)器計(jì)數(shù)方式,可設(shè)置為向上計(jì)數(shù)、向下計(jì)數(shù)以及中心對齊。高級控制定時(shí)器允許選擇任意一種。
TIM_Period: 定時(shí)器周期,實(shí)際就是設(shè)定自動重載寄存器ARR的值,ARR 為要裝載到實(shí)際自動重載寄存器(即影子寄存器)的值,可設(shè)置范圍為0至65535。
TIM_ClockDivision: 時(shí)鐘分頻,設(shè)置定時(shí)器時(shí)鐘CK_INT頻率與死區(qū)發(fā)生器以及數(shù)字濾波器采樣時(shí)鐘頻率分頻比??梢赃x擇1、2、4分頻。
TIM_RepetitionCounter: 重復(fù)計(jì)數(shù)器,只有8位,只存在于高級定時(shí)器。
2.2 TIM_OCInitTypeDef
輸出比較結(jié)構(gòu)體TIM_OCInitTypeDef用于輸出比較模式,與TIM_OCxInit函數(shù)配合使用完成指定定時(shí)器輸出通道初始化配置。高級控制定時(shí)器有四個定時(shí)器通道,使用時(shí)都必須單獨(dú)設(shè)置。
代碼清單:高級定時(shí)器-2 定時(shí)器比較輸出初始化結(jié)構(gòu)體
typedef struct { uint16_t TIM_OCMode; // 比較輸出模式 uint16_t TIM_OutputState; // 比較輸出使能 uint16_t TIM_OutputNState; // 比較互補(bǔ)輸出使能 uint32_t TIM_Pulse; // 脈沖寬度 uint16_t TIM_OCPolarity; // 輸出極性 uint16_t TIM_OCNPolarity; // 互補(bǔ)輸出極性 uint16_t TIM_OCIdleState; // 空閑狀態(tài)下比較輸出狀態(tài) uint16_t TIM_OCNIdleState; // 空閑狀態(tài)下比較互補(bǔ)輸出狀態(tài) } TIM_OCInitTypeDef;
TIM_OCMode: 比較輸出模式選擇,總共有八種,常用的為PWM1/PWM2。它設(shè)定CCMRx寄存器OCxM[2:0]位的值。
TIM_OutputState: 比較輸出使能,決定最終的輸出比較信號OCx是否通過外部引腳輸出。它設(shè)定TIMx_CCER寄存器CCxE/CCxNE位的值。
TIM_OutputNState: 比較互補(bǔ)輸出使能,決定OCx的互補(bǔ)信號OCxN是否通過外部引腳輸出。它設(shè)定CCER寄存器CCxNE位的值。
TIM_Pulse: 比較輸出脈沖寬度,實(shí)際設(shè)定比較寄存器CCR的值,決定脈沖寬度??稍O(shè)置范圍為0至65535。
TIM_OCPolarity: 比較輸出極性,可選OCx為高電平有效或低電平有效。它決定著定時(shí)器通道有效電平。它設(shè)定CCER寄存器的CCxP位的值。
TIM_OCNPolarity: 比較互補(bǔ)輸出極性,可選OCxN為高電平有效或低電平有效。它設(shè)定TIMx_CCER寄存器的CCxNP位的值。
TIM_OCIdleState: 空閑狀態(tài)時(shí)通道輸出電平設(shè)置,可選輸出1或輸出0,即在空閑狀態(tài)(BDTR_MOE位為0)時(shí),經(jīng)過死區(qū)時(shí)間后定時(shí)器通道輸出高電平或低電平。它設(shè)定CR2寄存器的OISx位的值。
TIM_OCNIdleState: 空閑狀態(tài)時(shí)互補(bǔ)通道輸出電平設(shè)置,可選輸出1或輸出0,即在空閑狀態(tài)(BDTR_MOE位為0)時(shí),經(jīng)過死區(qū)時(shí)間后定時(shí)器互補(bǔ)通道輸出高電平或低電平, 設(shè)定值必須與TIM_OCIdleState相反。它設(shè)定是CR2寄存器的OISxN位的值。
2.3 TIM_ICInitTypeDef
輸入捕獲結(jié)構(gòu)體TIM_ICInitTypeDef用于輸入捕獲模式,與TIM_ICInit函數(shù)配合使用完成定時(shí)器輸入通道初始化配置。 如果使用PWM輸入模式需要與TIM_PWMIConfig函數(shù)配合使用完成定時(shí)器輸入通道初始化配置。
代碼清單:高級定時(shí)器 定時(shí)器輸入捕獲初始化結(jié)構(gòu)體
typedef struct { uint16_t TIM_Channel; // 輸入通道選擇 uint16_t TIM_ICPolarity; // 輸入捕獲觸發(fā)選擇 uint16_t TIM_ICSelection; // 輸入捕獲選擇 uint16_t TIM_ICPrescaler; // 輸入捕獲預(yù)分頻器 uint16_t TIM_ICFilter; // 輸入捕獲濾波器 } TIM_ICInitTypeDef;
TIM_Channel:捕獲通道ICx選擇,可選TIM_Channel_1、 TIM_Channel_2、TIM_Channel_3或TIM_Channel_4四個通道。它設(shè)定CCMRx寄存器CCxS位 的值。
TIM_ICPolarity:輸入捕獲邊沿觸發(fā)選擇,可選上升沿觸發(fā)、 下降沿觸發(fā)或邊沿跳變觸發(fā)。它設(shè)定CCER寄存器CCxP位和CCxNP位的值。
TIM_ICSelection:輸入通道選擇,捕獲通道ICx的信號可來自三個輸入通道,分別為TIM_ICSelection_DirectTI、 TIM_ICSelection_IndirectTI或TIM_ICSelection_TRC,具體的區(qū)別見下圖,輸入通道與捕獲通道IC的映射圖 。 如果是普通的輸入捕獲,4個通道都可以使用,如果是PWM輸入則只能使用通道1和通道2。它設(shè)定CCRMx寄存器的CCxS[1:0]位的值。
TIM_ICPrescaler: 輸入捕獲通道預(yù)分頻器,可設(shè)置1、2、4、8分頻,它設(shè)定CCMRx寄存器的ICxPSC[1:0]位的值。如果需要捕獲輸入信號的每個有效邊沿,則設(shè)置1分頻即可。
TIM_ICFilter: 輸入捕獲濾波器設(shè)置,可選設(shè)置0x0至0x0F。它設(shè)定CCMRx寄存器ICxF[3:0]位的值。一般我們不使用濾波器,即設(shè)置為0。
2.4 TIM_BDTRInitTypeDef
斷路和死區(qū)結(jié)構(gòu)體TIM_BDTRInitTypeDef用于斷路和死區(qū)參數(shù)的設(shè)置,屬于高級定時(shí)器專用,用于配置斷路時(shí)通道輸出狀態(tài),以及死區(qū)時(shí)間。 它與TIM_BDTRConfig函數(shù)配置使用完成參數(shù)配置。這個結(jié)構(gòu)體的成員只對應(yīng)BDTR這個寄存器,有關(guān)成員的具體使用配置請參考手冊BDTR寄存器的詳細(xì)描述。
代碼清單:高級定時(shí)器-4 斷路和死區(qū)初始化結(jié)構(gòu)體
typedef struct { uint16_t TIM_OSSRState; // 運(yùn)行模式下的關(guān)閉狀態(tài)選擇 uint16_t TIM_OSSIState; // 空閑模式下的關(guān)閉狀態(tài)選擇 uint16_t TIM_LOCKLevel; // 鎖定配置 uint16_t TIM_DeadTime; // 死區(qū)時(shí)間 uint16_t TIM_Break; // 斷路輸入使能控制 uint16_t TIM_BreakPolarity; // 斷路輸入極性 uint16_t TIM_AutomaticOutput; // 自動輸出使能 } TIM_BDTRInitTypeDef;
TIM_OSSRState: 運(yùn)行模式下的關(guān)閉狀態(tài)選擇,它設(shè)定BDTR寄存器OSSR位的值。
TIM_OSSIState: 空閑模式下的關(guān)閉狀態(tài)選擇,它設(shè)定BDTR寄存器OSSI位的值。
TIM_LOCKLevel: 鎖定級別配置, BDTR寄存器LOCK[1:0]位的值。
TIM_DeadTime: 配置死區(qū)發(fā)生器,定義死區(qū)持續(xù)時(shí)間,可選設(shè)置范圍為0x0至0xFF。它設(shè)定BDTR寄存器DTG[7:0]位的值。
TIM_Break: 斷路輸入功能選擇,可選使能或禁止。它設(shè)定BDTR寄存器BKE位的值。
TIM_BreakPolarity: 斷路輸入通道BRK極性選擇,可選高電平有效或低電平有效。它設(shè)定BDTR寄存器BKP位的值。
TIM_AutomaticOutput: 自動輸出使能,可選使能或禁止,它設(shè)定BDTR寄存器AOE位的值。
WIZnet 是一家無晶圓廠半導(dǎo)體公司,成立于 1998 年。產(chǎn)品包括互聯(lián)網(wǎng)處理器 iMCU?,它采用 TOE(TCP/IP 卸載引擎)技術(shù),基于獨(dú)特的專利全硬連線 TCP/IP。iMCU? 面向各種應(yīng)用中的嵌入式互聯(lián)網(wǎng)設(shè)備。
WIZnet 在全球擁有 70 多家分銷商,在香港、韓國、美國設(shè)有辦事處,提供技術(shù)支持和產(chǎn)品營銷。
香港辦事處管理的區(qū)域包括:澳大利亞、印度、土耳其、亞洲(韓國和日本除外)。
審核編輯 黃宇
-
單片機(jī)
+關(guān)注
關(guān)注
6071文章
45259瀏覽量
660122 -
寄存器
+關(guān)注
關(guān)注
31文章
5495瀏覽量
127800 -
定時(shí)器
+關(guān)注
關(guān)注
23文章
3347瀏覽量
120968
發(fā)布評論請先 登錄
第十章 W55MH32中斷應(yīng)用概覽

第二十二章 TIM——高級定時(shí)器

明德?lián)P視頻分享點(diǎn)撥FPGA課程---第十二章??學(xué)習(xí)自檢方法
第十二章 SysTick——系統(tǒng)定時(shí)器

WIZnet W55MH32以太網(wǎng)單片機(jī)開發(fā)教程 第十一章 通用定時(shí)器(上篇)

WIZnet W55MH32以太網(wǎng)單片機(jī)開發(fā)教程第十一章 通用定時(shí)器(下篇)

第二章 W55MH32 DHCP示例

第五章 W55MH32 UDP示例

第九章 W55MH32 HTTP Server示例

第十章 W55MH32 SNTP示例

第十二章 W55MH32 NetBIOS示例

第十五章 W55MH32 SNMP示例

第十八章 W55MH32 FTP_Server示例

第二十二章 W55MH32 MQTT&Aliyun示例

評論