基于A(yíng)RM7的RTU微控制器的設計
(4)等待數據發(fā)送結束時(shí)間T3:有些通信設備帶有數據緩沖區,當數據從串口發(fā)送給通信設備時(shí),不是立即就將數據發(fā)送出去,而是先暫存在數據緩沖區,此時(shí)如果立即關(guān)閉設備電源,可能有數據沒(méi)有發(fā)送完,所以需要一個(gè)等待時(shí)間。
(5)設備關(guān)電時(shí)機:當T3 結束后,立即關(guān)閉設備的電源。
實(shí)際編程時(shí)T1 的值根據具體的設備的數據手冊來(lái)確定;T3 的值也需要根據具體的設備來(lái)調試,以接收端能準確可靠的接收到數據,T3 的值最小為準。
4.2 CPU 核的功耗管理
CPU 核在沒(méi)有任務(wù)可做時(shí)要進(jìn)入低功耗狀態(tài)STOP 模式,在程序中通過(guò)空閑任務(wù)連續運行狀態(tài)來(lái)判定。當所有的任務(wù)都不運行時(shí),操作系統會(huì )自動(dòng)運行空閑任務(wù),當空閑任務(wù)連續運行超過(guò)一定的時(shí)間后(超過(guò)程序中需要的最大等待時(shí)間),關(guān)閉所有的外設,讓CPU進(jìn)入STOP 模式。具體的實(shí)現是將原有的空閑任務(wù)程序進(jìn)行修改,增加一個(gè)記數器,當記數到一定的數值(即一定的時(shí)間)后,進(jìn)入STOP 模式。
修改后的OS_TaskIdle 程序如下:
void OS_TaskIdle (void *pdata)
{
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
OS_CPU_SR cpu_sr;
#endif
pdata = pdata;
for (;;)
{
OS_ENTER_CRITICAL();
OSIdleCtr++;
OS_EXIT_CRITICAL();
Count = count +1;
If (count > 某個(gè)數值)
{ 將CPU 進(jìn)入STOP 模式;
}
OSTaskIdleHook();
}
}
由于空閑任務(wù)隨時(shí)可能被別的任務(wù)搶先,當重新執行空閑任務(wù)時(shí),如接著(zhù)搶先點(diǎn)繼續執行,全局變量COUNT 沒(méi)有被清零,所以在每個(gè)任務(wù)開(kāi)始運行或執行結束后,都需要對COUNT 清零,這樣可以保證COUNT 重新記數,在FOR 循環(huán)語(yǔ)句中,當COUNT 記數到一定值,CPU 將進(jìn)入STOP 模式。
5 結束語(yǔ)
本RTU 微控制器經(jīng)過(guò)試運行后,功耗滿(mǎn)足要求,靜態(tài)功耗小于500μA/12V,在采用10AH 的蓄電池加太陽(yáng)能板(容量靈活組合),可以保證系統無(wú)日照50 天正常工作。由于采用了μCOS-II 操作系統,并編寫(xiě)了硬件驅動(dòng)程序的內核接口和用戶(hù)接口,使程序具有良好的移植性,也方便了應用程序開(kāi)發(fā)人員編寫(xiě)程序。
本文作者創(chuàng )新點(diǎn):提出了一種基于ARM7 和μCOSII 的RTU 低功耗設計方案。采用ARM7 處理機,又根據RTU 設備工作特點(diǎn)設計了電源功耗管理軟件,實(shí)現了RTU 高的處理能力、低的功耗及長(cháng)時(shí)間的電池供電。
該設計可大規模應用在全國水情測報系統中,將會(huì )有500 萬(wàn)以上的經(jīng)濟效益。
評論