ESM335x是英創(chuàng)公司推出的基于TI AM335x Cortex-A8 CPU的高性能工控主板,板載了豐富的應(yīng)用通訊接口,如LVDS/TTL標(biāo)準(zhǔn)顯示接口,4USB、6串口、雙CAN、雙網(wǎng)口等。除此之外,ESM335x還引出了一組精簡(jiǎn)ISA總線,我們基于ESM335x的ISA總線設(shè)計(jì)了一系列擴(kuò)展模塊,比如8串口擴(kuò)展模塊ETA508、雙網(wǎng)口擴(kuò)展模塊ETA728和4路CAN總線擴(kuò)展模塊ETA704,使得ESM335x能夠滿足更多復(fù)雜的工業(yè)應(yīng)用,比如通訊管理機(jī)。當(dāng)然用戶也可以利用ESM335x 的ISA總線擴(kuò)展自己的專有應(yīng)用模塊,以適應(yīng)特定的現(xiàn)場(chǎng)應(yīng)用需求。
在電力、交通、電信等行業(yè),一般要求設(shè)備具有高精度的時(shí)鐘,通常由時(shí)鐘源提供高精度的時(shí)鐘信息輸出,而設(shè)備需要有自動(dòng)校時(shí)和時(shí)鐘同步的能力,IRIG-B是目前廣泛應(yīng)用的較時(shí)方案之一,本文就將介紹ESM335x通過(guò)GPS時(shí)鐘源產(chǎn)生的IRIG-B(DC)碼實(shí)現(xiàn)時(shí)間同步的方法。
IRIG是美國(guó)靶場(chǎng)司令委員會(huì)制定的一種時(shí)間標(biāo)準(zhǔn),其中的串行時(shí)鐘編碼共有6種格式,即A、B、D、E、G、H。它們的主要差別是時(shí)間碼的幀速率不同,廣泛應(yīng)用的IRIG-B即其中的B型編碼,B型碼的時(shí)幀速率為1幀/s,可傳遞100位信息。圖1是IGIG-B碼示意圖,其時(shí)幀周期是1s,每秒100個(gè)碼元,使用脈寬編碼方式,每個(gè)碼元脈寬10ms,共三種碼元,其中高電平5ms和2ms分別表示二進(jìn)制 “1”,“0”,高電平8ms為位置標(biāo)識(shí),分別為P0,P1,…P9。連續(xù)兩個(gè)8ms寬度脈沖的第二個(gè)8ms脈沖的前沿為秒準(zhǔn)點(diǎn)標(biāo)志,也是一個(gè)時(shí)間格式的幀參考標(biāo)志。一個(gè)時(shí)間格式幀包含了秒,時(shí),分,天數(shù),年份,控制位等豐富的信息。
圖1:IRIG-B碼標(biāo)準(zhǔn)
上面是對(duì)IRIG-B碼的簡(jiǎn)單介紹,在實(shí)際使用IRIG-B碼時(shí)鐘源與ESM335x進(jìn)行時(shí)間同步時(shí),用戶并不需要關(guān)心IRIG-B碼的具體含義和實(shí)現(xiàn)方法,僅需要將B碼脈連接到ESM335x的較時(shí)引腳就可以了,ESM335x的驅(qū)動(dòng)程序?qū)⑼瓿葿碼解碼、同步等工作。
ESM335x(EM335x)使用GPIO6作為B碼脈沖輸入管腳。
由于GPIO6還復(fù)用了PWM功能,所以當(dāng)使用較時(shí)功能時(shí),系統(tǒng)的“PWM1:”則不可用。另外需要特別注意的是:ESM335x(EM335x)所有GIPO的最高輸入電壓不能超3.3V,否則將損壞主CPU,所以在連接B碼信號(hào)時(shí)應(yīng)該根據(jù)實(shí)際情況增加相應(yīng)的電平轉(zhuǎn)換電路。
應(yīng)用程序打開設(shè)備"IGB1:"后,對(duì)應(yīng)的驅(qū)動(dòng)程序就會(huì)根據(jù)注冊(cè)表的設(shè)備,自動(dòng)進(jìn)行時(shí)間同步,下面是IRIG-B碼校時(shí)的例子代碼:
#include"stdafx.h"
#include
#include"bsp_drivers.h"
#defineIOCTL_IRIG_B_GET_TIME
CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 4055, METHOD_BUFFERED, FILE_ANY_ACCESS)
#defineIOCTL_IRIG_B_SYNC_NOW
CTL_CODE(FILE_DEVICE_BUS_EXTENDER, 4056, METHOD_BUFFERED,FILE_ANY_ACCESS)
int_tmain(intargc, _TCHAR* argv[])
{
HANDLE hIrigb;
SYSTEMTIME systime;
DWORD dwTimeoues;
// 打開系統(tǒng)較時(shí)功能,驅(qū)動(dòng)程序會(huì)根據(jù)注冊(cè)表的設(shè)置自動(dòng)較時(shí)
hIrigb = CreateFile(TEXT("IGB1:"),
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_RANDOM_ACCESS,
NULL);
if(hIrigb == INVALID_HANDLE_VALUE)
return-1;
// 立刻進(jìn)行一次時(shí)間同步,超時(shí)時(shí)間設(shè)置為3000ms
dwTimeoues = 3000;
if(DeviceIoControl(hIrigb,
IOCTL_IRIG_B_SYNC_NOW,
&dwTimeoues,
sizeof(DWORD),
&systime, // 如果時(shí)間同步成功,返回當(dāng)時(shí)系統(tǒng)時(shí)間
sizeof(SYSTEMTIME),
NULL,NULL))
{
RETAILMSG(1, (TEXT("Time: %04d-%02d-%02d.%02d:%02d:%02d\r\n"),
systime.wYear, systime.wMonth, systime.wDay,
systime.wHour, systime.wMinute, systime.wSecond));
}
else
{
RETAILMSG(1, (TEXT("Tiem sync faild!!!\r\n")));
}
// 查看最近一次同步的時(shí)間,如果返回失敗表示時(shí)間未同步
if(DeviceIoControl(hIrigb,
IOCTL_IRIG_B_GET_TIME,
NULL,
0,
&systime,
sizeof(SYSTEMTIME),
NULL, NULL))
{
RETAILMSG(1, (TEXT("Sync time: %04d-%02d-%02d.%02d:%02d:%02d\r\n"),
systime.wYear, systime.wMonth, systime.wDay,
systime.wHour, systime.wMinute, systime.wSecond));
}
// 關(guān)閉較時(shí)功能
CloseHandle(hIrigb);
return0;
}
用戶可以通過(guò)修改系統(tǒng)注冊(cè)表來(lái)配置靈活的校時(shí)方案,通過(guò)注冊(cè)表的設(shè)置,驅(qū)動(dòng)程序可自動(dòng)實(shí)現(xiàn)時(shí)間秒同步、分鐘同步、小時(shí)同步或日同步,對(duì)應(yīng)的注冊(cè)表項(xiàng)如下:(下面的注冊(cè)表鍵值為系統(tǒng)默認(rèn)值)
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IGB1]
"Prefix"="IGB"
"Dll"="irig_b.dll"
"Priority256"=dword:88
; AutoSync =0: 禁止校時(shí)功能; =1: 秒同步; =2: 分同步; = 3: 小時(shí)同步; = 4: 日同步
"AutoSync"=dword:2 ; minute sync
; SyncMinute:當(dāng)AutoSync為小時(shí)同步時(shí),在SyncMinute分鐘進(jìn)行同步
"SyncMinute"=dword:3b ; 0x3b = 59 -> minute on sync
; SyncHour: 當(dāng)AutoSync為日同步時(shí),在SyncHour小時(shí)進(jìn)行同步
"SyncHour"=dword:17 ; 0x17= 23 -> hour on sync
傳統(tǒng)的工控板卡在對(duì)IRIG-B碼處理時(shí),通常需要增加額外的硬件(如單片機(jī),FPGA)對(duì)B碼進(jìn)行解碼,然后再通過(guò)串口、總線或其它形式將數(shù)據(jù)交給主控板卡處理,增加了系統(tǒng)成本和操作難度,ESM335x可直接對(duì)B碼進(jìn)行解碼,不需要增加任何硬件就能實(shí)現(xiàn)毫秒級(jí)精度的時(shí)間同步,大大降低了系統(tǒng)復(fù)雜程度,節(jié)約了成本,提高了系統(tǒng)穩(wěn)定性。
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35225
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論