<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在i.MX RT1050使用FlexIO模塊模擬XY2-100振鏡通信協議接口

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 2023-05-18 09:22 ? 次閱讀

一、概述

本文介紹了如何使用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 通道數據)

這四路信號是一種同步串行傳輸的過程,數據時序圖如下所示。

1aef31c0-f51a-11ed-90ce-dac502259ad0.png

其中時鐘信號CLOCK為2MHz,其上升沿時位置數據被寫入,下降沿時位置數據被振鏡采樣。SYNC信號用于提供數據轉換的同步信息,當它從低電平到高電平時第一位數據被發送,從高電平到低電平時最后一位校驗位被發送;CHANNELX/Y是數據信號,它有20位組成,其中C2、C1、C0是振鏡運動方向值,默認值為001,D15—D0是16位的二進制數,用來控制振鏡偏轉的角度大??;最后一個bit(P)是偶校驗位。 XY2-100協議的時鐘速率高達2MHz。如果使用普通MCU的GPIO以4MHz的頻率中斷響應模擬實現協議,系統消耗資源過大,難以保證協議的實時性,影響激光振鏡的控制效果?,F有系統大部分采用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接口的內部連接關系。

1b111ec0-f51a-11ed-90ce-dac502259ad0.png

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的效果。

1b2ead64-f51a-11ed-90ce-dac502259ad0.png1b4d0b2e-f51a-11ed-90ce-dac502259ad0.png

小結

以上介紹了如何在i.MX RT1050使用FlexIO模塊來模擬XY2-100振鏡通信協議接口。通過FlexIO的硬件Timer定時器和Shifter移位寄存器可以大大減輕CPU內核的負荷,滿足協議的實時性要求。 除了本文給出的Timer和Shifter的配置外,用戶也可以利用其它FlexIO配置模擬XY2-100協議接口,這個方法不是唯一的。

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信協議
    +關注

    關注

    28

    文章

    773

    瀏覽量

    39963
  • 寄存器
    +關注

    關注

    30

    文章

    5167

    瀏覽量

    118230
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10523

    瀏覽量

    207444
  • 接口
    +關注

    關注

    33

    文章

    7893

    瀏覽量

    149097
收藏 人收藏

    評論

    相關推薦

    深入淺出Cortex-M7——i.MX RT1050

    深入淺出Cortex-M7——i.MX RT1050
    發表于 03-06 08:39

    【大聯大品佳 NXP i.MX RT1050試用申請】語音識別評測

    項目名稱:語音識別評測試用計劃:申請理由本人有多年從事嵌入式系統/單片機軟件開發的經驗,原計劃是想申請NXP i.MX RT1050這個板子參加今年的聯大杯“智能AI芯生活”設計大賽的,只是很可惜
    發表于 08-10 17:59

    【大聯大品佳 NXP i.MX RT1050試用申請】基于 NXP i.MX RT1050工業機器人開發

    項目名稱:基于 NXP i.MX RT1050工業機器人開發試用計劃:1,熟悉板子硬件,RT1050驅動板子硬件,做GPIO測試,串口測試,SPI測試,IIC測試,PWM測試,每種出一片報告。
    發表于 08-10 18:23

    【大聯大品佳 NXP i.MX RT1050試用申請】i.MX RT1050 3D打印機控制器

    項目名稱:i.MX RT1050 3D打印機控制器試用計劃:申請理由本人在開源硬件行業有五年多的學習和開發經驗,曾設計多款FDM,SLA,LCD 3D打印機控制板,參與公司3D打印機的開發,對打
    發表于 08-10 18:23

    【大聯大品佳 NXP i.MX RT1050試用申請】使用NXP i.MX RT1050開發板設計一款低成本CAN數據采集儀

    項目名稱:使用NXP i.MX RT1050開發板設計一款低成本CAN數據采集儀試用計劃:目前的CAN數據采集儀通常使用的是CAN采集儀+上位機的方法,這種方案非常不便捷,需要帶電腦到現場去作業
    發表于 08-10 18:24

    【大聯大品佳 NXP i.MX RT1050試用體驗】芯林至尊,寶刀RT1050,初識i.MX RT系列跨界處理器 (之一)

    的圖看看RT1050的內核架構圖i.MX RT1050EVK開發板下面介紹下軟件圖形化配置工具:MCUXpresso Config Tools百度云鏈接https://pan.baidu.com/s
    發表于 08-19 11:44

    i.MX RT1050平臺的相關資料推薦

    SylixOS 正式支持 i.MX RT1050平臺發布于2018年06月22日什么是 i.MXRT1050?i.MX RT1050 是 N
    發表于 11-29 07:19

    i.MX RT1050的功耗和測量資料分享

    i.MX RT1050的功耗和測量
    發表于 12-12 07:23

    i.MX RT1050跨界處理器產品數據手冊

    i.MX RT1050跨界處理器(消費級)數據手冊
    發表于 12-12 07:03

    i.MX RT系列(例如 RT1050/1060)有多少個PWM通道?

    i.MX RT 系列(例如 RT1050/1060)有多少個 PWM 通道? 我可以像在 KV58 MCU(兩個 flexPWM 模塊)上做同樣的事情嗎?
    發表于 05-18 07:07

    【044】SylixOS 正式支持 i.MX RT1050平臺

    SylixOS 正式支持 i.MX RT1050平臺發布于2018年06月22日什么是 i.MXRT1050?i.MX RT1050 是 N
    發表于 11-19 12:51 ?14次下載
    【044】SylixOS 正式支持 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT1050</b>平臺

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

    前言i.MX RT 是 NXP 推出的跨界處理器系列。該系列下又包括 i.MX RT1020、i.MX
    發表于 12-07 13:06 ?2次下載
    <b class='flag-5'>RT</b>-Thread & NXP 發布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    i.MX RT10xx使用FlexIO實現XY2-100振鏡控制協議

    本文介紹了如何使用i.MX RT系列芯片上的FlexIO實現XY2-100激光振鏡控制協議。FlexIO
    的頭像 發表于 05-18 09:21 ?4424次閱讀
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>10xx使用<b class='flag-5'>FlexIO</b>實現<b class='flag-5'>XY2-100</b>振鏡控制<b class='flag-5'>協議</b>

    基于 NXP i.MX RT1050 的 3D 打印機方案

    MCU-Healer 是基于 NXP i.MX RT1050 做的 3D 打印機方案,該方案主控 MCU i.MX RT1050是一顆 Cortex-M7 內核的高性能 MCU,主頻達
    的頭像 發表于 04-06 15:06 ?727次閱讀
    基于 NXP <b class='flag-5'>i.MX</b> <b class='flag-5'>RT1050</b> 的 3D 打印機方案

    i.MX RT1050上如何實現雙大容量存儲(MSC)設備

    i.MX RT1050上如何實現雙大容量存儲(MSC)設備
    的頭像 發表于 10-30 17:08 ?397次閱讀
    在<b class='flag-5'>i.MX</b> <b class='flag-5'>RT1050</b>上如何實現雙大容量存儲(MSC)設備
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>