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

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

移植Arm-2D到i.MX RT1050-EVKB并繪制圖形界面
基于 NXP i.MX RT1050 的 3D 打印機方案

評論