仝林林
(山西銀河電子設(shè)備廠,山西太原,030000)
風(fēng)扇作為最常見(jiàn)的散射器件,在大部分控制單元都隨處可見(jiàn),而當(dāng)散熱需求高,綜合考慮產(chǎn)品尺寸,風(fēng)扇大小,風(fēng)量等因素時(shí),有時(shí)會(huì)需要數(shù)量比較大風(fēng)扇,此時(shí),對(duì)控制芯片的硬件資源要求就會(huì)比較高[1]。GD32F107VC 是兆易創(chuàng)新的MCU 芯片,具有豐富的外設(shè)和多路定時(shí)器等硬件資源,包括串口、網(wǎng)口和IIC 等硬件接口,基本滿足絕大部分的控制系統(tǒng)需求,而且該芯片具有高達(dá)5 個(gè)可以輸出PWM 控制信號(hào)的定時(shí)器,而且其中的高級(jí)定時(shí)器可以輸出8 路PWM 信號(hào),通用定時(shí)器可以輸出4 路PWM 信號(hào),同時(shí)可以輸出多達(dá)24 路的PWM 信號(hào),滿足大多數(shù)設(shè)計(jì)要求。
本系統(tǒng)的風(fēng)扇調(diào)速板設(shè)計(jì)時(shí),與主控單元的通信是基于其硬件IIC 接口實(shí)現(xiàn)的IPMB 總線管理,IPMB 總線應(yīng)用于多主操作,IPMB 協(xié)議使用的物理層是IIC 總線。IPMB 使用“請(qǐng)求-應(yīng)答”協(xié)議,請(qǐng)求消息和應(yīng)答消息都是通過(guò)IIC 總線的主設(shè)備傳輸?shù)?,即一條請(qǐng)求消息是從一個(gè)作為IIC 主端的節(jié)點(diǎn)發(fā)出,被一個(gè)作為IIC 從節(jié)點(diǎn)的設(shè)備接收。請(qǐng)求消息和應(yīng)答消息網(wǎng)絡(luò)功能號(hào)不同,用于區(qū)分該消息是請(qǐng)求消息還是應(yīng)答消息。在接收到控制指令后,利用其定時(shí)器1、定時(shí)器2、定時(shí)器3、定時(shí)器4 的PWM 輸出和PWM 信號(hào)捕獲功能實(shí)現(xiàn)了風(fēng)扇的轉(zhuǎn)速控制及轉(zhuǎn)速檢測(cè)功能。
GD32F107 系列芯片具有強(qiáng)大的定時(shí)器功能,其中包括通用定時(shí)器TIM2、TIM3、TIM4 和TIM5,高級(jí)定時(shí)器TIM1 和TIM8,以及基本定時(shí)器TIM6 和TIM7,但是TIM8 只在大容量產(chǎn)品中存在,在小容量芯片中,高級(jí)定時(shí)器只有TIM1[2][3]。除了具有基本的定時(shí)功能外,通用定時(shí)器和高級(jí)定時(shí)器還具有信號(hào)的頻率測(cè)量,信號(hào)的PWM 測(cè)量、PWM 輸出和三相6 步電機(jī)控制等功能。本文利用他的PWM 輸出和信號(hào)頻率檢測(cè)功能,實(shí)現(xiàn)了風(fēng)扇的轉(zhuǎn)速控制及轉(zhuǎn)速測(cè)量功能[4]。利用高級(jí)定時(shí)器1 輸出PWM 信號(hào)時(shí),還需要額外增加函數(shù)timer_primary_output_config(TIMER0,ENABLE);而利用通用定時(shí)器時(shí),則不需要該函數(shù)。
該系統(tǒng)主要由GD32F107VC 作為主控芯片,在主控IIC信號(hào)與MCUIIC 信號(hào)之間采用隔離芯片,能夠滿足熱拔插需求,保護(hù)后級(jí)芯片。BL1117 作為電源LDO 芯片,LM75A 作為溫度傳感器芯片搭配RS3232 進(jìn)行調(diào)試組成。該系統(tǒng)需要實(shí)現(xiàn)通過(guò)IPMB 協(xié)議,實(shí)現(xiàn)對(duì)8 個(gè)風(fēng)扇模塊的風(fēng)速控制和轉(zhuǎn)速檢測(cè),所以需要用到16 路PWM,由于定時(shí)器2 和定時(shí)器5 共用GPIO 管腳,所以在硬件設(shè)計(jì)時(shí),只能選用其一,本方案中選擇TIM2、TIM3 進(jìn)行PWM 信號(hào)輸出,通過(guò)輸出不同占空比的PWM信號(hào),實(shí)現(xiàn)對(duì)風(fēng)扇轉(zhuǎn)速的控制;選用TIM1 和TIM4 進(jìn)行風(fēng)扇轉(zhuǎn)速檢測(cè),其中為了避免管腳沖突,TIM1 需要配置成映射功能。
IPMB 協(xié)議采用GD32F107VC的硬件IIC 實(shí)現(xiàn),溫度傳感器LM75A 采用GPIO 軟件模擬IIC實(shí)現(xiàn)。IIC 協(xié)議在通信過(guò)程中,會(huì)首先由主機(jī)產(chǎn)生一個(gè)開(kāi)始信號(hào),此時(shí),IIC 總線上的所有從設(shè)備都會(huì)收到主機(jī)發(fā)送的開(kāi)始信號(hào),開(kāi)始信號(hào)產(chǎn)生后,總線上的所有設(shè)備等待匹配接下來(lái)主機(jī)發(fā)送的從機(jī)地址信號(hào),當(dāng)該地址信號(hào)與某從機(jī)設(shè)備地址相同時(shí),該設(shè)備就會(huì)與主機(jī)進(jìn)行通信,而其他設(shè)備則會(huì)忽略后邊的數(shù)據(jù),不對(duì)數(shù)據(jù)進(jìn)行響應(yīng)。在地址之后,是傳輸方向的選擇。當(dāng)傳輸方向?yàn)橹鲗?xiě)從時(shí),在主機(jī)成功接收到應(yīng)答信號(hào)后,主機(jī)將向從機(jī)開(kāi)始發(fā)送數(shù)據(jù),直到主機(jī)發(fā)送STOP信號(hào)后,通信結(jié)束。當(dāng)傳輸方向?yàn)橹髯x從時(shí),在收到應(yīng)答信號(hào)后,從機(jī)開(kāi)始向主機(jī)返回?cái)?shù)據(jù),直到主機(jī)返回非應(yīng)答信號(hào)NACK 后,從機(jī)自動(dòng)停止數(shù)據(jù)發(fā)送。
本設(shè)計(jì)采用的風(fēng)扇為4 線風(fēng)扇,分別為紅色、黑色、白色和藍(lán)色,其中紅色和黑色分別代表電源正線和電源負(fù)線,白色代表測(cè)速線,用于監(jiān)測(cè)風(fēng)扇的轉(zhuǎn)速,作為反饋信號(hào),防止風(fēng)扇壞掉引起散熱異常,藍(lán)色代表PWM 信號(hào)線,用于調(diào)速,通過(guò)該表PWM 的占空比就可以實(shí)現(xiàn)對(duì)風(fēng)扇轉(zhuǎn)速的控制。
為了隔離風(fēng)扇信號(hào)對(duì)MCU 信號(hào)的影響,在風(fēng)扇信號(hào)與MCU 信號(hào)之間設(shè)計(jì)了光耦進(jìn)行隔離,達(dá)到了兩種電平信號(hào)之間的互相獨(dú)立。
圖1 MCU 原理圖
圖2 風(fēng)扇接口原理圖
圖3 風(fēng)扇調(diào)速板硬件設(shè)計(jì)頂層
圖4 風(fēng)扇調(diào)速板硬件設(shè)計(jì)底層
GD32F107VC 最高可以工作在108MHz,在本系統(tǒng)中,設(shè)計(jì)其系統(tǒng)時(shí)鐘為108MHz.軟件設(shè)計(jì)流程主要為系統(tǒng)時(shí)鐘配置,硬件IIC 初始化,串口初始化和定時(shí)器初始化。
GD32F107VC 具有兩路硬件IIC 資源。本設(shè)計(jì)中進(jìn)行了冗余設(shè)計(jì),利用IIC 中斷進(jìn)行主控單元控制指令的接收,當(dāng)收到主控的START 信號(hào)后,進(jìn)入接收中斷,并判斷主控發(fā)送的地址是否與風(fēng)扇轉(zhuǎn)速控制板地址匹配,若匹配,則進(jìn)行指令接收,若不匹配,則退出中斷。由于硬件IIC 工作在多主模式下時(shí),有時(shí)會(huì)出現(xiàn)總線忙導(dǎo)致程序卡死狀態(tài),所以本設(shè)計(jì)進(jìn)行了超時(shí)設(shè)計(jì),即當(dāng)檢測(cè)到總線忙超過(guò)指定時(shí)長(zhǎng)時(shí),對(duì)總線進(jìn)行拉低操作,從而達(dá)到釋放總線的目的。
軟件流程主要包括系統(tǒng)時(shí)鐘初始化,外設(shè)初始化,中斷配置(包括定時(shí)器中斷,IIC 中斷,其中IIC 中斷的優(yōu)先級(jí)高于定時(shí)器中斷),等待接收指令,PWN 輸出,轉(zhuǎn)速信號(hào)檢測(cè),信息上報(bào)等功能。具體流程圖見(jiàn)圖5 所示。
圖5 軟件流程圖
對(duì)硬件IIC 的初始化流程包括:
(1)開(kāi)啟IIC 時(shí)鐘;
(2)配置IO口,配置為GPIO_Mode_AF_OD模式(開(kāi)漏輸出);
(3)選擇IIC 模式;
(4)設(shè)置設(shè)備地址模式,7bit 或者10bit;
2005年匯改前,我國(guó)基本上處于固定匯率狀態(tài),因此匯率政策波動(dòng)對(duì)宏觀經(jīng)濟(jì)幾乎沒(méi)有影響。2005年匯改時(shí),人民幣正處于升值周期,匯改當(dāng)日人民幣匯率一次升值2%,對(duì)進(jìn)出口貿(mào)易先有正向拉動(dòng)后有負(fù)向沖擊,對(duì)物價(jià)和國(guó)內(nèi)商品需求也有類(lèi)似影響趨勢(shì);但由于人民幣匯率的升值,以美元計(jì)價(jià)的外匯儲(chǔ)備短期內(nèi)受到縮水影響,進(jìn)而影響國(guó)內(nèi)貨幣供給量;但從整體影響來(lái)看,2005年匯改并沒(méi)有帶來(lái)經(jīng)濟(jì)增長(zhǎng)的大幅波動(dòng)。
(5)設(shè)置IIC 總線的傳輸速率為400KHz;
(6)配置中斷函數(shù),等待開(kāi)始信號(hào)。
對(duì)定時(shí)器的初始化流程包括:
(1)開(kāi)啟定時(shí)器時(shí)鐘;
(2)配置IO 口,輸出PWM 信號(hào)的管腳配置為GPIO_MODE_AF_PP 模式(推挽輸出),輸入信號(hào)檢測(cè)管腳配置為GPIO_MODE_IN_FLOATING 模式(浮空輸入);
(3)設(shè)置寄存器參數(shù),包括自動(dòng)重裝載寄存器和預(yù)分頻寄存器;
(4)設(shè)置定時(shí)器為PWM 模式,使能對(duì)應(yīng)通道輸出功能或輸入捕獲功能。
(5)在定時(shí)器初始化時(shí),PWM 輸出信號(hào)的頻率主要有兩個(gè)參數(shù)決定,分別為裝載數(shù)ARR 和分頻系數(shù)PRESCALER。PWM的頻率為:定時(shí)器時(shí)鐘/(ARR+1)/(PRESCALER),在本系統(tǒng)中,定時(shí)器時(shí)鐘為108MHz,ARR 為39,分頻系數(shù)為107,所以PWM 的輸出頻率為25KHz。此外,通過(guò)改變分頻系數(shù)的值分別為4,9,14,19,24,29,34,39,實(shí)現(xiàn)占空比,12.5%,25%,37.5%,50%,62.5%,75%,87.5%,100%8 種不同占空比的PWM 輸出,從而實(shí)現(xiàn)風(fēng)扇的8 檔風(fēng)速控制。
(6)而對(duì)輸入信號(hào)檢測(cè)定時(shí)器的配置,配置自動(dòng)重裝載值為65536,分頻系數(shù)為107。
(7)利用PWM 的輸入模式,可以采集輸入信號(hào)的頻率,其中輸入捕獲模式,是上升沿觸發(fā),記錄一個(gè)時(shí)間t1,下一次上升沿時(shí)記錄第二個(gè)時(shí)間t2,兩個(gè)時(shí)間之差就是標(biāo)準(zhǔn)時(shí)鐘周期內(nèi)檢測(cè)到的輸入信號(hào)脈沖的個(gè)數(shù),用標(biāo)準(zhǔn)時(shí)鐘頻率除以個(gè)數(shù),即為檢測(cè)信號(hào)的頻率,根據(jù)風(fēng)扇的技術(shù)說(shuō)明書(shū)可知,該頻率乘以30,即為風(fēng)扇此刻的轉(zhuǎn)速。
當(dāng)程序收到主控的設(shè)置風(fēng)扇指令時(shí),程序首先會(huì)讀取當(dāng)前的環(huán)境溫度,若溫度值低于預(yù)設(shè)值,則不對(duì)設(shè)置指令進(jìn)行響應(yīng),防止低溫環(huán)境下,風(fēng)扇工作時(shí)造成風(fēng)扇損壞。當(dāng)溫度值滿足條件時(shí),進(jìn)行相應(yīng)占空比的PWM 信號(hào)輸出,并反饋給主控程序是否設(shè)置成功。
本文設(shè)計(jì)以GD32F107VC 為控制芯片,利用其定時(shí)器功能進(jìn)行PWM 信號(hào)輸出和轉(zhuǎn)速信號(hào)捕獲,利用其硬件IIC 實(shí)現(xiàn)與主控模塊的IPMB 協(xié)議通信,本設(shè)計(jì)對(duì)研究GD32F107VC 的定時(shí)器研究和硬件IIC 研究具有一定的指導(dǎo)意義,為后續(xù)類(lèi)似的風(fēng)扇控制系統(tǒng)設(shè)計(jì)提供了一種解決方案,具有一定的現(xiàn)實(shí)意義。