搜索
bottom↓
回复: 4

在I.MX RT10xx 使用FlexIO 实现XY2-100 激光振镜控制协议

[复制链接]

出0入0汤圆

发表于 2022-3-13 09:30:42 | 显示全部楼层 |阅读模式
本帖最后由 MCU_Coder 于 2022-3-13 09:33 编辑

在I.MX RT10xx使用FlexIO实现XY2-100振镜控制协议
1.    概述
本文介绍了如何使用I.MXRT 系列芯片上的FlexIO 实现XY2-100激光振镜控制协议。FlexIO模块 是NXP Kinetis和I.MXRT 系列MCU 的片上外设。FlexIO 是一个高度可配置模块,能够模拟多种常见的通信协议:UART、 I2C、 SPI、 I2S、SSI等,还可以使用FlexIO模拟实现XY2-100振镜控制协议。
2.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。如果使用普通MCUGPIO4MHz的频率中断响应模拟实现协议,系统消耗资源过大,难以保证协议的实时性,影响激光振镜的控制效果。现有系统大部分采样CPLD/FPGA实现XY2-100协议,存在造价高,系统复杂的缺点。
    使用NXP I.MX RT10xx系列MCU上的FlexIO模块,可以方便实现XY2-100协议,并保证系统的实时性。
3.    利用FlexIO模拟XY2-100
本节主要介绍如何使用FlexIO模拟XY2-100的主机协议,将会详细阐述FlexIO模块的相关配置项。由于XY2-100数据格式与SPI接口类似,所以在 FlexIO 的配置上,XY2-100 与 FlexIO模拟SPI相似。
    可使用两个FlexIO定时器、两个Shifter移位器和四个引脚(FlexIOD5~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的数据。

4.    XY2-100协议实际测试运行
参照上面FlexIO的配置,以I.MX RT1050EVK板为例进行实际运行测试。将四个XY2-100信号引脚连接到逻辑分析仪,运行代码后抓取I.MXRT1050的通信数据,其波形如下图所示。CHANNELX/Y数据与图中的波形匹配,达到FlexIO模拟XY2-100的效果。
完整的文档:





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出10入18汤圆

发表于 2022-3-13 15:05:05 来自手机 | 显示全部楼层
FLEXio和树莓派单片机的PIO,这种协处理状态机可能成为未来MCU的标配。一个可以实现各种接口,可以允许用户自定义的模块,在实际应用中非常方便。

出0入90汤圆

发表于 2022-3-13 16:51:44 | 显示全部楼层
我之前做的数据采集器,就是用FlexIO实现了24bit,4通道同步采样率25600。数据直接存到内存里面的指定位置。除了偶尔进一次中断切换位置,其他时候完全自动控制。

出0入228汤圆

发表于 2022-3-13 20:35:44 来自手机 | 显示全部楼层
好资料,顶

出0入17汤圆

发表于 2022-3-14 11:10:06 | 显示全部楼层
这个协议看波形是SSI接口(STM32 中叫SAI, TI 中叫McBSP),数据位是20位,同步信号要保持19位。不同的是,一个时钟对应2个数据通道,有些单片机是支持一个时钟对应4个数据通道的SSI接口。     FlexIO确实好用,相当于微型FPGA,可以做接口。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 22:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表