跳到主要内容

带SPI总线接口的AN-CM-277正交编码器计数器

内容

术语和定义

集成电路集成电路
FSM有限状态机
味噌主输入从输出
一对有90度相位差的信号
SPI串行外围接口

参考文献

有关文件及软件,请浏览:

//www.xmece.com/configurable-mixed-signal。

下载我们的免费GreenPak Designer软件[1]打开.gp文件[2]并查看提出的电路设计。使用GreenPak开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。yabo国际娱乐对话框半导体提供完整的应用程序库注意[4],其中包含了设计示例以及对话框IC中的功能和块的说明。

  1. GreenPak设计师软件,软件下载和用户指南,Dialog半导体。yabo国际娱乐
  2. AN-CM-277带SPI总线接口的正交编码器计数器。绿派克设计文件,Dialog半导体。yabo国际娱乐
  3. GreenPak开发工具,对话半导体GreenPAK开发工具网页。yabo国际娱乐
  4. GreenPak应用笔记,GreenPak应用笔记网页,对话半导体。yabo国际娱乐

介绍

旋转编码器广泛应用于轴和机械零件的定位,并作为用户界面输入设备。大多数旋转编码器输出一对正交信号,将轴的运动编码为一系列脉冲。

为了跟踪编码器的位置,必须对每个脉冲进行计数。通常,中断引脚用于这一目的,计数在软件中实现。许多微控制器包括专门的外围设备来读取正交信号。然而,基于中断的计数限制了最大脉冲率,占用了CPU时间,而专门的外围设备限制了可以连接到单个微控制器的编码器的数量。此外,在pc等非实时平台上,这两个选项都不可用。

本应用笔记演示了低成本SLG46140V GreenPak设备如何实现具有16位上/下计数器和SPI总线接口的正交编码器接口。可以通过主机应用以期望的间隔读出编码器的当前位置,而辅助设备跟踪每个输入脉冲。此外,SPI总线允许链接多个设备以将灵活数量的编码器连接到单个处理器。

高级设计

本应用说明设计有来自编码器的三个输入信号:A、B和z。A和B是在00、10、11、01灰码序列中交替切换状态的正交信号。信号Z是一个可选的编码器零索引输入,它将计数器复位到零位置。

图1:与一个编码器设备的系统连接

所述SPI接口由nCS芯片选择信号、SCK串行时钟和MISO(主从出)串行输出组成。芯片选择是有源的低,总线可以用于其他SPI器件时,nCS是高。此应用说明中使用的SPI传输格式是CPOL=0, cpa =1,这意味着SCK处于低状态时,空闲和数据采样在下降沿。

图2:多个编码器的系统连接

通过使用Chain_in和Chain_out信号可以在同一总线上链接多个设备,该信号在内部延迟16个SCK时钟周期的数据。因此,由主机接收的前16位将来自第一编码器,来自第二编码器的接下来的16位等。所有编码器都会在第一个SCK时钟边缘上同时进行采样。

GreenPak设备内的实现由三个部分组成:

  1. 正交编码器输入块:将正交信号转换为计数器的KEEP / UP信号对,并与内部时钟同步。
  2. 16位向上/向下计数器:两个链8位计数器计数编码器脉冲,并提供并行数据到SPI块。
  3. SPI总线接口:SPI接口锁存并行数据,并在nCS激活时串行输出。

正交输入块和计数器从内部环形振荡器时钟运行,而SPI接口的外部时钟由SPI主机。以下部分包含每个组件的详细描述。

正交编码器输入块

从编码器发出的信号最初进入一对延迟块。它们既可以作为小故障滤波器,也可以作为同步器,确保它们的输出信号只在时钟上升沿发生变化。延迟值被设置为最小值,给出一个2时钟周期延迟。可选地,对于噪声信号,可以增加延迟以过滤掉输入中的任何小故障脉冲,但这种过滤也将限制最大脉冲率。

从延迟块的输出被传递到一对d触发器,它保留前一个时钟周期的信号状态。然后将当前状态和前一状态与4输入XNOR门进行比较。如果任何一个信号发生了变化,XNOR门将为KEEP信号输出一个0值,导致计数器块计数。

图3:正交信号输入模块

通过将当前状态At和Bt与之前的状态Bt-1进行比较,检测编码器方向,如表1所示。检测逻辑被编程到3位LUT0组件,输出一个UP信号给计数器。

表1:信号状态的方向检测
增加角(UP = 1)
减小角度(UP = 0)
BT.
Bt-1
BT.
Bt-1
0.
0.
0.
0.
0.
1
0.
1
0.
0.
1
1
1
1
1
1
1
0.
1
0.
1
1
0.
0.

一些编码器具有额外的零位置传感器,可用于在重启后找到系统的绝对位置。该Z信号上的高电平将使计数器重置为零。如果不需要此功能,则可以在输入引脚已配置下拉电阻器时,可以将信号保持未连接。

16位上/下计数器

图4:Z输入信号的逻辑

SLG46140V设备包含两个计数器/有限状态机块,其与SPI块并行数据连接。这些中的每一个都可以输出8位计数,并且通过链接两个计数器可以进行16位计数器。计数器在任一方向上从0x0000到0xFFFF。

缺省情况下,CNT3块从可配置的起始值开始计数,或者向下到0或向上到255,然后按配置的值重新启动。可以通过设置起始值为255来进行向下包围计数,但是要同时进行向上包围计数,则需要额外的逻辑。

图5:低8位计数器的执行和环绕逻辑

计数器的输出信号在计数器处于其极值时激活。当保持= 0和OUT = 1时,LUT0将带脉冲输出到下一个计数器以增加其计数。同时LUT1如果上升= 1,则激活复位信号。DFF2对复位信号进行采样,使计数器同步在时钟上升沿重置。

来自编码器Z输入的清除信号连接到DFF2的异步组输入,这导致计数器立即复位。计数器恢复对下一个上升时钟边缘的计数。

图6:高8位计数器的环绕逻辑

第二计数器阶段类似地连接,因为从该阶段不需要单独的执行信号;三个信号都连接到单个LUT组件。当上升= 1时,它将计数器重置为零,保持= 0,out = 1。

SPI总线接口

在SLG46140和SLG46620中,并行到串行转换器接口可用作现成的功能块。在nCS降低后,块锁存来自第一个SCK边缘的两个计数器的并行数据,然后逐位移出数据。

外部产生的SCK信号与计数器使用的内部时钟不同步,因此两个块需要以某种方式同步,以便在它们之间可靠地传输数据。SPI块提供了一个内置的选择,用于在数据传输发生时为两个时钟周期选择FSM时钟。在这个应用程序门控的FSM时钟是不可取的,因为它可能导致脉冲丢失而时钟被禁用。相反,DFF5用于同步外部SCK信号到内部环形振荡器时钟。这确保了当FSM数据稳定时,SPI块看到的SCK时钟边缘发生在环振荡器时钟边缘。

在此应用笔记中,基本SPI接口由数据链逻辑扩展。这允许在同一SPI总线上轻松连接多个编码器,并同时对其进行对计数器值进行采样。

链接函数基于管道延迟函数块。这个块有一个16个触发器的链,它将在时钟信号的每一个上升沿上移位一个比特。MISO信号从链条中的前一个设备连接到输入端,然后输出到下一个设备。

因为MISO信号在硬件中直接连接到引脚12,所以Chain_Out必须与其外部连接。输出使能逻辑可确保只有其中一个引脚一次是活动的。

图7:SPI接口和数据链逻辑

对于NCS低至低电平的前16个时钟周期,每个设备使MISO能够保持并使其计数器值输出。同时,管道延迟块存储从n-1接收的信号TH.装置在链条中。

在16个时钟周期之后,SPI INTR输出变高,表示传输结束。然后,LUT2或栅极导致DFF4 Flipflop高,禁用PIN12和启用PIN13。管道延迟块偏离N-1TH.价值,同时在n-2中移动TH.价值。这将一直持续下去,直到读取了所有的值,并且主机发出一个nCS信号,将DFF4重置回初始状态。

图8:具有两个设备的SPI信号捕获

图8显示了SPI通信的示例,其中第一个设备发送自己的16位数据值,然后从链中的下一个设备转发16位值。

时钟频率的限制

延迟和计数器块从内部环形振荡器时钟,运行在大约27兆赫兹频率和可选择的分频1,4,8,或16。最大时钟速率取决于逻辑元件的延迟,并随电源电压而变化。

设计中最长的逻辑链从输入DLY0/1块通过4位LUT0变化检测器,2位LUT0执行逻辑,3位LUT1封装逻辑到FSM块。这些块的延迟值在SLG46140数据表中定义,并在表2中进行了总结。由于路由延迟和部分差异,理论上可能的6.8 MHz频率并不适用GreenPAK的输入电压范围的最低端(VDD.= 1.8 V),而使用3.4 MHz时钟。

表2:块延迟和最大运行频率
延后VDD.= 1.8 V
延后VDD.= 3.3 V
延后VDD.= 5.0 V
问/海底
53 ns
21 ns
15 ns
lut 4比特
23 ns
10纳秒
7个ns.
附近地区2比特
18个ns.
7个ns.
5 ns
附近地区3-bit
19个ns.
7个ns.
5 ns
总计
113 ns.
45 ns
32 ns
理论上的最大频率
8.8兆赫
22 MHz.
31 MHz.
时钟分频器
1:8(3.4兆赫)
1:4(6.8兆赫)
1:1(27 MHz)
最小脉冲宽度
888纳秒
444 ns.
112纳秒

工作频率将限制正交输入上的最小脉冲宽度。输入的毛刺滤波器通过脉冲,长度至少为三个时钟周期,并过滤滤除以下两个时钟周期的任何内容。

测试结果

功能通过两种方式进行测试。使用AMT203旋转编码器的正交输出进行手动测试,以验证两个方向的计数工作是否符合预期,并跟随编码器的运动。

利用单片机生成的信号源模拟正交信号,验证了最大脉冲速率和计数可靠性。在给定步长频率下,该微控制器可输出8000步长。当一次只有一个信号改变状态时,正交信号的脉宽是步长间隔的两倍。当数据通过SPI总线读出时,这个步骤序列重复了几次。只有在每次正确计算所有步骤的情况下,测试用例才被标记为成功。

试验结果如表3所示。正如预期的那样,小于两个时钟周期的脉冲被故障滤波器拒绝,结果计数为零。当操作接近最小脉冲宽度在每个电压,有一些损失的步骤。这可能是由于不对称的上升/下降延迟造成的,这可能会在脉冲通过逻辑时略微缩短一些脉冲。

表3:不同脉冲速率和电压的测试结果
步进率(脉宽)
V.DD.= 1.8 V
V.DD.= 3.3 V
V.DD.= 5.0 V
1.50 μ s
好吧
好吧
好吧
2.0 MHz(1.00µs)
失去了步骤
好吧
好吧
4.0 MHz(0.50µs)
零计数
好吧
好吧
6.0 MHz(0.33µs)
零计数
失去了步骤
好吧
8.0 MHz(0.25µs)
零计数
零计数
好吧
12.0 MHz(0.17µs)
零计数
零计数
好吧
16.0 MHz(0.13µs)
零计数
零计数
失去了步骤

结论

提出了一种将正交编码器接口到SPI总线的设计。可以按原样使用设计,也可以将单个组件重新用于不同的应用程序。亚博国际官网平台网址正交输入部分可以修改为直接输出适合不同设备的信号,如步进驱动器。16位上升/下降计数器块提供了一个有用的工具,测量许多种脉冲源。可链式SPI接口可用于同时从多个GreenPAK设备进行采样和读取,数据源可以来自计数器或ADC。