小猫爪:S32K3学习笔记04-S32K3之LCU

1 前言

  最近学习了一下LCU(Binary to Gray code converter)模块,它是一个S32K3内部的一个硬件逻辑运算模块,如果用的好的话可以有很大的作用,它可以实现与或门这些简单的逻辑运行,可以实现复用器,编码器,解码器等这些常见的数字电路,还可以实现一些D,SR,JK等这些触发器,还可以在电机应用中实现编码器,BLDC的换向器等等复杂应用, 下面就来简单的说一说它的实现原理。

2 LCU的框架

  下图是一个LCU模块的框图。
在这里插入图片描述
  从图中我们可以得到很多重要的点:

  1. 整个模块有12个输入信号,12个输出信号,2个同步信号,3个强制信号(图上有误,不要相信)
  2. 整个模块有3个LC逻辑运算单元,分别是LC0,C1,LC2,且相互独立
  3. 每个LC逻辑运算单元有4个输入信号,4个输出信号,2个同步信号,3个强制信号
  4. 3个LC逻辑运算单元的12个输出信号又可以作为LC逻辑运算单元的输入信号
  5. 每个LC逻辑运算单元都可以产生中断输出信号和DMA触发信号

3 LC逻辑运算单元

  下图中黄色框的部分是一个LC逻辑运算单元的结构框图:
在这里插入图片描述
  从图中又可以看出很多信息,下面就给它剖析一下。

3.1 input&output&sync&force

  输入信号和输出信号就是传统意义上的输入和输出,没啥好说的, LCU的12个输入信号可以来自下面三个地方:

  1. 外部GPIO引脚
  2. 其他外设输出信号(通过TRGMUX连接,包括LCU的输出信号)
  3. 寄存器的值(软件写SWVALUE寄存器,并使能就可以直接将原来的输入信号覆盖,可以理解成是强制输入,或者叫覆盖输入信号)

  强制信号就是啥意思?就是在输出的那一头整了一个强制改变输出的部件,一旦强制信号使能,那么最后输出的值则就等于强制信号的值了。

  那啥又是同步信号呢?同步信号是为了给强制信号以及覆盖输入信号提供一个同步机制。对于强制信号的同步,只有当同步信号和强制信号同时有效(这里的有效可以是有效边沿或者有效电平),强制信号才会起作用;对于覆盖输入信号的同步,则只有边沿有效。

3.2 LUT block

  这个其实就是LC单元的真值表,那么LUT Block的真值表是通过什么方式来驱动的呢?其实非常简单。

  因为每个LC单元只有4个输入,所以一共只有16种输入可能,如果将这16种可能以一个16bit的数LUTCTRL来表示,即LUTCTRL的每一位代表一种可能,如果LUTCTRL的第一位为1,那么这一位代表的第一种可能相对应的输出就为1,反之输出0。是不是超级简单。举个例子就是如下表:
在这里插入图片描述
  其中红框指的是输入,黄框即LUTCTRL=0x0035时的输出值。

3.3 数字filter

  LCU还为输入信号和强制信号提供了数字filter,至于数字filter的原理也是非常的简单,就是当信号有效时间大于预先设置的时间,这个时候才会LCU内部逻辑才会判断信号有效,这里的时间单位为时钟数。

4 LCU应用示例

  在S32K3的应用手册上提供了多种LCU应用示例介绍,如下图:
在这里插入图片描述
  感兴趣的可以去RM手册上研究,这里就不多说了。

5 MCAL配置示例

待续。。。。。

待续。。。。。

猜你喜欢

转载自blog.csdn.net/Oushuwen/article/details/120904186