一、概述
本文介紹了如何使用i.MX RT系列芯片上的FlexIO實(shí)現(xiàn)XY2-100激光振鏡控制協(xié)議。FlexIO模塊是NXP Kinetis和i.MX RT系列MCU的片上外設(shè)。
FlexIO是一個(gè)高度可配置模塊,能夠模擬多種常見的通信協(xié)議:UART、I2C、SPI、I2S、SSI等,還可以使用FlexIO模擬實(shí)現(xiàn)XY2-100振鏡控制協(xié)議。
二、XY2-100振鏡協(xié)議簡介
XY2-100是數(shù)字化激光掃描振鏡的通信接口協(xié)議,被廣泛地使用在大多振鏡激光掃描控制系統(tǒng)。在振鏡的運(yùn)動(dòng)控制中XY2-100是數(shù)字化激光掃描振鏡的接口定義及通信協(xié)議。
XY2-100協(xié)議包括四路信號(hào):
SECLOCK(時(shí)鐘信號(hào))
SYNC(同步信號(hào))
CHANNELX(X 通道數(shù)據(jù))
CHANNELY(Y 通道數(shù)據(jù))
這四路信號(hào)是一種同步串行傳輸?shù)倪^程,數(shù)據(jù)時(shí)序圖如下所示。
其中時(shí)鐘信號(hào)CLOCK為2MHz,其上升沿時(shí)位置數(shù)據(jù)被寫入,下降沿時(shí)位置數(shù)據(jù)被振鏡采樣。SYNC信號(hào)用于提供數(shù)據(jù)轉(zhuǎn)換的同步信息,當(dāng)它從低電平到高電平時(shí)第一位數(shù)據(jù)被發(fā)送,從高電平到低電平時(shí)最后一位校驗(yàn)位被發(fā)送;CHANNELX/Y是數(shù)據(jù)信號(hào),它有20位組成,其中C2、C1、C0是振鏡運(yùn)動(dòng)方向值,默認(rèn)值為001,D15—D0是16位的二進(jìn)制數(shù),用來控制振鏡偏轉(zhuǎn)的角度大??;最后一個(gè)bit(P)是偶校驗(yàn)位。 XY2-100協(xié)議的時(shí)鐘速率高達(dá)2MHz。如果使用普通MCU的GPIO以4MHz的頻率中斷響應(yīng)模擬實(shí)現(xiàn)協(xié)議,系統(tǒng)消耗資源過大,難以保證協(xié)議的實(shí)時(shí)性,影響激光振鏡的控制效果?,F(xiàn)有系統(tǒng)大部分采用CPLD/FPGA實(shí)現(xiàn)XY2-100協(xié)議,存在造價(jià)高,系統(tǒng)復(fù)雜的缺點(diǎn)。 使用NXPi.MX RT10xx系列MCU上的FlexIO模塊,可以方便實(shí)現(xiàn)XY2-100協(xié)議,并保證系統(tǒng)的實(shí)時(shí)性。
三、利用FlexIO模擬XY2-100
本節(jié)主要介紹如何使用FlexIO模擬XY2-100的主機(jī)協(xié)議,將會(huì)詳細(xì)闡述FlexIO模塊的相關(guān)配置項(xiàng)。
由于XY2-100數(shù)據(jù)格式與SPI接口類似,所以在FlexIO的配置上,XY2-100部分與模擬SPI相似。
可使用兩個(gè)FlexIO定時(shí)器、兩個(gè)Shifter移位器和四個(gè)引腳(FlexIO D5~D8)實(shí)現(xiàn)XY2-100協(xié)議接口。
FlexIO Timer0用于產(chǎn)生2MHz CLOCK時(shí)鐘信號(hào),Timer1用于產(chǎn)生19位的SYNC同步信號(hào)。Shifter0連接到CHANNEL_X引腳,Shifter1連接到CHANNEL_Y引腳,并在CLOCK的每個(gè)上升沿發(fā)送數(shù)據(jù)。用戶軟件實(shí)現(xiàn)中允許在中斷、輪詢和DMA模式下發(fā)送振鏡坐標(biāo)數(shù)據(jù)。
下圖顯示了FlexIO模擬XY2-100接口的內(nèi)部連接關(guān)系。
Timer0配置為雙8位計(jì)數(shù)器,在觸發(fā)事件高電平時(shí)被使能,在比較事件到來時(shí)禁用。Timer0的觸發(fā)源連接到內(nèi)部Shifter0和Shifter1,作為這二個(gè)移位器的觸發(fā)時(shí)鐘源。Timer0的計(jì)數(shù)遞減源配置為FlexIO Clock時(shí)鐘,Shifter0和Shifter1移位時(shí)鐘則由來自Timer0的每一次計(jì)時(shí)輸出。Timer0 需要被配置為能夠被Shifter0的狀態(tài)標(biāo)志位觸發(fā),當(dāng)Shifter0寫入數(shù)據(jù)則使能Timer0開始工作。
在XY2-100協(xié)議中,由于傳輸頻率為2MHz,因此Timer0的Compare比較寄存器的值經(jīng)計(jì)算得到需配置為0x2702。
Timer1被配置為16位計(jì)數(shù)器模式,由Timer0觸發(fā)。Timer1的計(jì)數(shù)遞減源設(shè)置為觸發(fā)信號(hào)的兩個(gè)邊沿。由于XY2-100的同步信號(hào)為19位高電平,1位低電平,所以Timer1的Compare比較寄存器的值需配置為19 * 2。
Shifter0配置為Transmit模式,并在移位器時(shí)鐘的上升沿移位,使能移位器起始位并將其設(shè)置為邏輯低電平。通過FlexIO寄存器SHIFTBUFBIS[0]寫入CHANNEL_X的數(shù)據(jù)。
Shifter1配置為Transmit模式,并在移位器時(shí)鐘的上升沿移位,使能移位器起始位并將其設(shè)置為邏輯低電平。通過FlexIO寄存器SHIFTBUFBIS[1]寫入CHANNEL_Y的數(shù)據(jù)。
下面給出了在MIMXRT1050-EVK上實(shí)現(xiàn)XY2-100協(xié)議接口詳細(xì)的寄存器配置:
FlEXIO02.TIMCTL[0] = 0x01C30701
FlEXIO02.TIMCFG[0] = 0x00002220
FlEXIO02.TIMCMP[0] = 0x00002702
FlEXIO02.TIMCTL[1] = 0x03430603
FlEXIO02.TIMCFG[1] = 0x02102100
FlEXIO02.TIMCMP[1] = 0x00000026
FlEXIO02.SHIFTCTL[0] = 0x00030802
FlEXIO02.SHIFTCFG[0] = 0x00000030
FlEXIO02.SHIFTCTL[1] = 0x00030502
FlEXIO02.SHIFTCFG[1] = 0x00000030
四、XY2-100協(xié)議實(shí)際測試運(yùn)行
參照上面FlexIO的配置,以MIMXRT1050-EVK板為例進(jìn)行實(shí)際運(yùn)行測試。將四個(gè)XY2-100信號(hào)引腳連接到邏輯分析儀,運(yùn)行代碼后抓取i.MX RT1050的通信數(shù)據(jù),其波形如下圖所示。CHANNELX/Y數(shù)據(jù)與圖中的波形匹配,達(dá)到FlexIO模擬XY2-100的效果。
小結(jié)
以上介紹了如何在i.MX RT1050使用FlexIO模塊來模擬XY2-100振鏡通信協(xié)議接口。通過FlexIO的硬件Timer定時(shí)器和Shifter移位寄存器可以大大減輕CPU內(nèi)核的負(fù)荷,滿足協(xié)議的實(shí)時(shí)性要求。 除了本文給出的Timer和Shifter的配置外,用戶也可以利用其它FlexIO配置模擬XY2-100協(xié)議接口,這個(gè)方法不是唯一的。
-
通信協(xié)議
+關(guān)注
關(guān)注
28文章
1028瀏覽量
41129 -
寄存器
+關(guān)注
關(guān)注
31文章
5433瀏覽量
124263 -
cpu
+關(guān)注
關(guān)注
68文章
11073瀏覽量
216835 -
接口
+關(guān)注
關(guān)注
33文章
8990瀏覽量
153639
發(fā)布評(píng)論請(qǐng)先 登錄
【大聯(lián)大品佳 NXP i.MX RT1050試用申請(qǐng)】語音識(shí)別評(píng)測
【大聯(lián)大品佳 NXP i.MX RT1050試用申請(qǐng)】基于 NXP i.MX RT1050工業(yè)機(jī)器人開發(fā)
【大聯(lián)大品佳 NXP i.MX RT1050試用申請(qǐng)】i.MX RT1050 3D打印機(jī)控制器
【大聯(lián)大品佳 NXP i.MX RT1050試用申請(qǐng)】使用NXP i.MX RT1050開發(fā)板設(shè)計(jì)一款低成本CAN數(shù)據(jù)采集儀
i.MX RT1050平臺(tái)的相關(guān)資料推薦
i.MX RT1050跨界處理器產(chǎn)品數(shù)據(jù)手冊
i.MX RT系列(例如 RT1050/1060)有多少個(gè)PWM通道?
【044】SylixOS 正式支持 i.MX RT1050平臺(tái)

RT-Thread & NXP 發(fā)布 i.MX RT 系列 BSP 新框架

移植Arm-2D到i.MX RT1050-EVKB并繪制圖形界面
在i.MX RT10xx使用FlexIO實(shí)現(xiàn)XY2-100振鏡控制協(xié)議

基于 NXP i.MX RT1050 的 3D 打印機(jī)方案

在i.MX RT1050上如何實(shí)現(xiàn)雙大容量存儲(chǔ)(MSC)設(shè)備

評(píng)論