一、概述
本文介绍了如何使用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文章
916浏览量
40494 -
寄存器
+关注
关注
31文章
5386浏览量
121430 -
cpu
+关注
关注
68文章
10927浏览量
213365 -
接口
+关注
关注
33文章
8744浏览量
152149
发布评论请先 登录
相关推荐
【大联大品佳 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 打印机方案

评论