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