精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

同一網(wǎng)絡(luò),同一瞬間!一起玩轉(zhuǎn)1588!

先楫半導(dǎo)體HPMicro ? 2022-08-03 10:05 ? 次閱讀

在HPM6700/6400系列微控制器上,提供了2個(gè)以太網(wǎng)控制器。都可以支持IEEE1588-2002IEEE1588-2008標(biāo)準(zhǔn)。方便用戶實(shí)現(xiàn)基于網(wǎng)絡(luò)的精確時(shí)間同步。

本文提供了與HPM6700/6400系列微控制器基于網(wǎng)絡(luò)的IEE1588的功能示例和使用指南。


IEEE1588簡介

IEEE1588的全稱是網(wǎng)絡(luò)測(cè)量和控制系統(tǒng)的精密時(shí)鐘同步協(xié)議標(biāo)準(zhǔn)(PTP – Precision Time Protocol)。目前為2個(gè)版本,分別為IEEE1588(v1)和IEEE1588(v2)。IEEE1588的目的是為了對(duì)全網(wǎng)設(shè)備時(shí)鐘同步,這對(duì)于網(wǎng)絡(luò)設(shè)備在控制和采集同步尤為重要。本節(jié)簡單介紹IEEE1588的基礎(chǔ)知識(shí),詳細(xì)的協(xié)議描述,請(qǐng)參考相關(guān)網(wǎng)站。

1588的同步原理

1588的原理是通過網(wǎng)絡(luò)中的主設(shè)備對(duì)從設(shè)備發(fā)送特殊的報(bào)文并以此和從設(shè)備進(jìn)行交互得出時(shí)間的偏離以進(jìn)一步將設(shè)備時(shí)鐘同步。如下圖所示:

33458b70-0f88-11ed-9ade-dac502259ad0.png

端口在t1時(shí)刻發(fā)送同步報(bào)文,并在接下來的報(bào)文中發(fā)送t1點(diǎn)的時(shí)間,從端口在t2時(shí)間點(diǎn)收到同步報(bào)文并在t3時(shí)刻發(fā)送響應(yīng)給主端口,主端口在收到從端口的響應(yīng)后再將t4時(shí)刻發(fā)送給從端口。


在這個(gè)過程中,得到網(wǎng)絡(luò)延遲和時(shí)鐘偏差。

Toffset=((t2 - t1) + (t4 – t3)) / 2

Tdelay=((t4 - t1) -(t3 – t2)) / 2

在整個(gè)網(wǎng)絡(luò)拓?fù)渲?,所有的?jié)點(diǎn)定期的進(jìn)行時(shí)鐘同步,最終達(dá)到納秒(IEEE1588-2008)或者微秒級(jí)(IEEE1588-2002)的精度。


HPM67/64系列1588功能介紹

IEEE1588本身是基于以太網(wǎng)提出的,因此其詳細(xì)使用以及寄存器描述請(qǐng)參見HPM6700/6400用戶手冊(cè)的第60章。

使用1588功能,首先要為該功能賦予時(shí)鐘源。因?yàn)镠PM6700/6400有2個(gè)以太網(wǎng)控制器,ENET0, ENET1。因此,控制器為1588設(shè)立了2個(gè)時(shí)鐘源,分別為:

CLOCK_TOP_PTP0;

CLOCK_TOP_PTP1。


HPM6700/6400微控制器上,CLOCK_TOP_PTP0/1分別作為ENET0/1的1588時(shí)間戳計(jì)數(shù)器的運(yùn)行時(shí)鐘,其默認(rèn)頻率選擇是使用PLL1CLK1輸出, PLL1CLK1的默認(rèn)輸出為400MHz,默認(rèn)時(shí)鐘分頻系數(shù)為4,因此CLOCK_TOP_PTP0/1的默認(rèn)頻率為100MHz。用戶可以根據(jù)自己的需要設(shè)置成不同的頻率作為輸入。

clock_set_source_divider(clock_ptp0, clk_src_pll1_clk1, 4);clock_set_source_divider(clock_ptp1, clk_src_pll1_clk1, 4);

用戶需要設(shè)置以下幾個(gè)寄存器來實(shí)現(xiàn)相應(yīng)的1588功能

TS_CTRL 時(shí)間戳控制寄存器

SUB_SEC_INCR 次-秒增量寄存器

SYST_SEC 系統(tǒng)時(shí)間 – 秒寄存器

SYST_NSEC 系統(tǒng)時(shí)間 – 納秒寄存器

SYST_SEC_UPD 系統(tǒng)時(shí)間 – 秒更新寄存器

SYST_NSEC_UPD 系統(tǒng)時(shí)間 – 納秒更新寄存器

TS_ADDEND 時(shí)間戳加法寄存器

當(dāng)確定好輸入頻率后,用戶需要在SUB_SEC_INCR中填寫增量值。它的填寫主要依靠2個(gè)因素,一個(gè)是TS_CTRL中的第9位TSCTRLSSR,另一個(gè)因素是前面提到的輸入頻率。

TSCTRLSSR是計(jì)數(shù)方式的選擇,當(dāng)其置1時(shí),SYS_NSEC納秒寄存器到0x3B9AC9FF時(shí)翻轉(zhuǎn);當(dāng)其置0時(shí),SYS_NSEC納秒寄存器到0x7FFFFFFF時(shí)翻轉(zhuǎn)。SYS_NSEC每翻轉(zhuǎn)一次代表時(shí)間上的1秒鐘。因此,當(dāng)TSCTRLSSR置1時(shí),SYS_NSEC中的1代表1ns;當(dāng)TSCTRLSSR置0時(shí),SYS_NSEC中的1代表0.465ns。SUB_SEC_INCR.SSINC中的數(shù)代表著輸入頻率所對(duì)應(yīng)的時(shí)間,它會(huì)根據(jù)SYS_NSEC中1個(gè)計(jì)數(shù)所代表的時(shí)間進(jìn)行相應(yīng)的折算。

例如,當(dāng)輸入頻率為100MHz時(shí),一個(gè)clock是10ns,當(dāng)TSCTRLSSR置1時(shí),則SUB_SEC_INCR.SSINC設(shè)為10(10/1);當(dāng)TSCTRLSSR置0時(shí),則SUB_SEC_INCR.SSINC設(shè)為21(10/0.465)。

建議用戶將TSCTRLSSR置1,這樣理解和計(jì)算都更方便。


SYST_SEC和SYST_NSEC為MAC維護(hù)的時(shí)間戳。SYST_SEC為秒級(jí)時(shí)間戳,SYST_NSEC為納秒級(jí)時(shí)間戳。其中SYS_NSEC會(huì)根據(jù)TSCTRLSSR的設(shè)置在不同的數(shù)據(jù)下翻轉(zhuǎn)。當(dāng)TSCTRLSSR置1時(shí),它將會(huì)在0x3B9AC9FF時(shí)翻轉(zhuǎn),當(dāng)TSCTRLSSR置0時(shí),它將會(huì)在0x7FFFFFFF時(shí)翻轉(zhuǎn)。


SYST_SEC_UPD和SYST_NSEC_UPD為更新時(shí)間戳的寄存器,如果需要減少納秒時(shí)間,需要將SYST_NSEC_UPD中的最高位置1,如果需要增加納秒時(shí)間則需要將SYST_NSEC_UPD中的最高位置0。


假設(shè)時(shí)鐘同步算法發(fā)現(xiàn)時(shí)鐘偏慢,希望將累加的步長調(diào)整為10.1 ns,這時(shí),可以保持SUB_SEC_INCR.SSINC為10,設(shè)置ADDEND = 0xFFFFFFFF * (0.1) = 0x19999999。此時(shí),可以視為累加的等效步長為10.1 ns。

假設(shè)時(shí)鐘同步算法發(fā)現(xiàn)時(shí)鐘偏快,希望將累加的步長調(diào)整為9.9 ns,這時(shí),需要設(shè)置SUB_SEC_INCR.SSINC為 9,設(shè)置ADDEND = 0xFFFFFFFF * (0.9) = 0xE6666666。此時(shí),可以視為累加的等效步長為9.9 ns。


注意,以上所有的寄存器的寫入都是需要通過設(shè)置TS_CTRL中相應(yīng)的狀態(tài)位為1,等待此位為0時(shí),認(rèn)為設(shè)置成功。


在先楫提供的SDK中,可以直接調(diào)用

../../hpm_sdk/drivers/src/hpm_enet_drv.c進(jìn)行設(shè)置

void enet_init_ptp(ENET_Type *ptr, enet_ptp_config_t *config)void enet_set_ptp_timestamp(ENET_Type *ptr, enet_ptp_time_t *timestamp)

1588例程分析

在先楫發(fā)布的SDK中,可以找到1588的實(shí)現(xiàn)例程v1(即IEEE1588-2002)

..\..\hpm_sdk\samples\lwip\lwip_ptp\v1

其中包括master和slave, 分別對(duì)應(yīng)主端口和從端口。在不改動(dòng)任何設(shè)置的情況下,用戶需要2塊進(jìn)行測(cè)試,一塊作為主端口,另一塊作為從端口。為了測(cè)試IEEE1588的時(shí)鐘同步性能,我們采用了2塊HPM6750EVK,分別燒寫master和slave的程序。

需要注意一下2塊板子的ip地址應(yīng)該是不同的。默認(rèn)的例程使用的是板子上的RMIIPHY,用戶可以根據(jù)自身的需求更換成RGMII PHY進(jìn)行測(cè)試。

1. 代碼分析


初始化系統(tǒng),首先初始化IO,以太網(wǎng)芯片以及設(shè)置1588的時(shí)鐘。

board_init();board_init_enet_ptp_clock(ENET);board_init_enet_pins(ENET);enet_init(ENET);

在初始化以太網(wǎng)芯片成功后,初始化lwip,設(shè)置網(wǎng)絡(luò)參數(shù),ptp時(shí)鐘

enet_ptp_init();lwip_init();netif_config();user_notification(&gnetif);ptpd_Init();

接受網(wǎng)絡(luò)時(shí)鐘同步數(shù)據(jù)包,并以此進(jìn)行時(shí)鐘校正。如此往復(fù)。

while (1) {ethernetif_input(&gnetif); ptpd_periodic_handle(localtime);}

2. 測(cè)試方法


因?yàn)?588的時(shí)鐘精確同步功能需要在網(wǎng)絡(luò)中實(shí)現(xiàn),因此先楫用了2塊HPM6750EVK通過對(duì)接的方式測(cè)試。在分別燒入了master和slave的程序后,通過網(wǎng)線直接連接板子上的RJ45(J10)端口。如圖所示:

337a8c58-0f88-11ed-9ade-dac502259ad0.jpg

系統(tǒng)上電后,在從端口的串口中顯示

(D 1651074120.060559130) state PTP_SLAVE(D 1651074121.919880830) addForeign: new record (0,1) 1 1 98bc9f:18(D 1651074121.923243890) event MASTER_CLOCK_CHANGED(D 1651074121.925549510) state PTP_UNCALIBRATED(D 1651074121.927681110) toState: Q = 0, R = 5(D 1651074123.919898550) updateOffset(D 1651074123.921597570) updateClock seconds(D 1651074134.003162180) setTime: resetting system clock to 1651074134s 3162050ns(D 1651074134.006781080) initClock(D 1651074134.008349500) one-way delay: 0s 0ns(D 1651074134.011270660) offset from master: -10s -79562820ns(D 1651074134.014279260) observed drift: 0(D 1651074135.999474620) updateOffset(D 1651074136.001174640) one-way delay: 0s 0ns(D 1651074136.004096190) offset from master: 0s 10170ns(D 1651074136.007017370) observed drift: 169(D 1651074137.999480800) updateOffset(D 1651074138.001180620) one-way delay: 0s 0ns(D 1651074138.004101330) offset from master: 0s 14370ns(D 1651074138.007022680) observed drift: 408

3. 測(cè)試結(jié)果

通過對(duì)結(jié)果的比對(duì),我們將時(shí)間戳的偏移值進(jìn)行比較,得到下圖:


339c46d6-0f88-11ed-9ade-dac502259ad0.png

從圖中可以看到,在同步之初,時(shí)間的偏差較大,但經(jīng)過最初的快速調(diào)整后,時(shí)鐘精確在±10us之內(nèi)。這對(duì)于IEEE1588-2002來說,已經(jīng)是非常好的效果。

總結(jié)

本文介紹了HPM6700/6400系列微控制器的以太網(wǎng)1588功能的使用和示例的演示。在IEEE1588-2002下,100MHz的網(wǎng)絡(luò)測(cè)試中得到了很好的效果。對(duì)于1588-2008版本的測(cè)試,會(huì)在后續(xù)的文檔中推出。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    16198

    瀏覽量

    177398
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    使用tlv320aic3101音頻芯片時(shí),發(fā)現(xiàn)在播放的一瞬間,會(huì)聽到咔的聲,為什么?怎么解決?

    我在使用tlv320aic3101音頻芯片時(shí),發(fā)現(xiàn)在播放的一瞬間,會(huì)聽到咔的聲。后面查找原因,發(fā)現(xiàn)是放大電路部分,有個(gè)電容,該電容在播放的一瞬間,產(chǎn)生了
    發(fā)表于 10-14 08:23

    工業(yè)NAT網(wǎng)關(guān)實(shí)現(xiàn)不同網(wǎng)段IP轉(zhuǎn)換成同一網(wǎng)

    的無縫通信,讓不同網(wǎng)段IP的設(shè)備能夠相互訪問,物通博聯(lián)提供基于工業(yè)NAT網(wǎng)關(guān)的解決方案,能夠?qū)⒉煌W(wǎng)段的IP地址轉(zhuǎn)換成同一網(wǎng)段的IP地址,從而簡化網(wǎng)絡(luò)管理,提升數(shù)據(jù)傳輸效率。 工業(yè)NAT網(wǎng)關(guān)能夠?qū)崿F(xiàn)對(duì) PLC、HMI、CNC、DCS、MES等
    的頭像 發(fā)表于 09-23 15:24 ?215次閱讀
    工業(yè)NAT網(wǎng)關(guān)實(shí)現(xiàn)不同網(wǎng)段IP轉(zhuǎn)換成<b class='flag-5'>同一網(wǎng)</b>段

    用LM2903做了個(gè)窗口比較器電路,比較器輸出個(gè)變化的電平導(dǎo)致LED閃爍怎么解決?

    我用LM2903做了個(gè)窗口比較器電路,在8.6V 至8.9V輸入時(shí),比較器輸出個(gè)變化的電平,導(dǎo)致我后面LED 閃爍,請(qǐng)問有什么辦法可以解決?還有就是在電壓低于窗口下限電壓時(shí),接電源的一瞬間會(huì)
    發(fā)表于 09-18 08:44

    為什么臺(tái)燈亮下就滅了?

    把臺(tái)燈上燒壞的電阻換掉后發(fā)現(xiàn)每次只有上電的一瞬間能微微亮下,并且電阻非常燙,懷疑是電阻功率不夠,就搞了幾個(gè)并聯(lián),但還是樣,每次上電的一瞬間能亮
    發(fā)表于 07-05 23:07

    如何減少無線網(wǎng)絡(luò)同一信道內(nèi)的干擾?

    減少無線網(wǎng)絡(luò)同一信道內(nèi)的干擾是個(gè)復(fù)雜的問題,它涉及到無線通信的多個(gè)方面,包括信道管理、硬件設(shè)計(jì)、信號(hào)處理以及網(wǎng)絡(luò)協(xié)議等。
    的頭像 發(fā)表于 05-22 15:53 ?1329次閱讀

    二合一網(wǎng)絡(luò)信號(hào)防雷器應(yīng)用解決方案

    導(dǎo)致網(wǎng)絡(luò)系統(tǒng)癱瘓。為了保護(hù)網(wǎng)絡(luò)設(shè)備免受雷電和電涌的侵害,地凱科技網(wǎng)絡(luò)信號(hào)防雷器應(yīng)運(yùn)而生。二合一網(wǎng)絡(luò)信號(hào)防雷器是種集成了
    的頭像 發(fā)表于 05-21 10:52 ?376次閱讀
    二合<b class='flag-5'>一網(wǎng)絡(luò)</b>信號(hào)防雷器應(yīng)用解決方案

    六類網(wǎng)線可以和強(qiáng)電一起走嗎

    六類網(wǎng)線理論上不建議和強(qiáng)電一起走。從布線規(guī)范的角度來看,弱電線路和強(qiáng)電線路通常不建議共用同一橋架,以避免潛在的電磁干擾。然而,多年的施工經(jīng)驗(yàn)表明,在某些情況下,強(qiáng)電線和弱電網(wǎng)線可能一起
    的頭像 發(fā)表于 04-19 09:55 ?5170次閱讀

    STM32上電一瞬間GPIO是處于什么狀態(tài)?

    STM32 芯片上電一瞬間 GPIO是處于什么狀態(tài)?是高阻態(tài)嗎?還是還是高電平,記得51是高電平,請(qǐng)各位大佬指點(diǎn)一二。
    發(fā)表于 03-13 07:00

    個(gè)進(jìn)程內(nèi)多次使用open打開同一個(gè)文件,可以嗎?

    當(dāng)個(gè)進(jìn)程內(nèi)多次使用 open 打開同一個(gè)文件時(shí),每次都會(huì)得到個(gè)新的文件描述符(file descriptor)。
    的頭像 發(fā)表于 02-27 13:54 ?1177次閱讀

    LTC1624在上電的一瞬間,電源芯片會(huì)發(fā)生異常如何解決?

    我用LTC1624設(shè)計(jì)了個(gè)24V轉(zhuǎn)5V的降壓電路,功率大概5V@1A。 偶爾會(huì)發(fā)生,在上電的一瞬間,電源芯片會(huì)發(fā)生異常,導(dǎo)致輸出電壓只有2點(diǎn)幾V。且需要斷電重啟,才能恢復(fù)。 請(qǐng)問是什么原因?qū)е略?/div>
    發(fā)表于 01-08 08:01

    二合一網(wǎng)絡(luò)防雷器的原理、作用和應(yīng)用方案

    二合一網(wǎng)絡(luò)防雷器(二合信號(hào)浪涌保護(hù)器) 是種集電源防雷和網(wǎng)絡(luò)信號(hào)防雷為體的防雷設(shè)備,主要用于監(jiān)空系統(tǒng)前端高清
    的頭像 發(fā)表于 12-25 10:41 ?2741次閱讀
    二合<b class='flag-5'>一網(wǎng)絡(luò)</b>防雷器的原理、作用和應(yīng)用方案

    同一個(gè)芯片不同封裝的原因

    同一個(gè)芯片的不同封裝可能是為了滿足不同的應(yīng)用需求和設(shè)計(jì)要求。不同的封裝可以影響芯片的功耗、散熱性能、引腳數(shù)量和布局等方面。
    的頭像 發(fā)表于 12-18 18:15 ?1100次閱讀

    如何設(shè)置兩個(gè)路由器使用同一個(gè)Wi-Fi網(wǎng)絡(luò)?

    如何設(shè)置兩個(gè)路由器使用同一個(gè)Wi-Fi網(wǎng)絡(luò) 隨著無線網(wǎng)絡(luò)的普及和需求量的增加,很多家庭和辦公室都會(huì)購買多個(gè)路由器來擴(kuò)展無線網(wǎng)絡(luò)覆蓋范圍。然而,許多人可能不知道如何正確設(shè)置兩個(gè)路由器以使
    的頭像 發(fā)表于 12-11 10:50 ?1.2w次閱讀

    實(shí)力閃耀,完美收官 | 一起邂逅紫光同芯與TRUSTECH 2023的精彩瞬間!

    原文標(biāo)題:實(shí)力閃耀,完美收官 | 一起邂逅紫光同芯與TRUSTECH 2023的精彩瞬間! 文章出處:【微信公眾號(hào):紫光同芯】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
    的頭像 發(fā)表于 12-03 11:40 ?597次閱讀
    實(shí)力閃耀,完美收官 | <b class='flag-5'>一起</b>邂逅紫光同芯與TRUSTECH 2023的精彩<b class='flag-5'>瞬間</b>!

    vlookup 匹配同一值的多個(gè)結(jié)果

    ,我們將探討如何使用VLOOKUP函數(shù)來實(shí)現(xiàn)匹配同一值的多個(gè)結(jié)果,解決這個(gè)常見的需求。 、VLOOKUP函數(shù)回顧 在開始之前,我們先回顧下VLOOKUP函數(shù)的基本語法。VLOOKUP函數(shù)由四個(gè)參數(shù)組成: lookup_val
    的頭像 發(fā)表于 12-03 10:27 ?1.6w次閱讀