跳过主要内容

AN-1161 GreenPAK无线莫尔斯电码键盘

内容

参考文献

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

//www.xmece.com/亚博电竞菠菜products/greenpak

下载我们的免费GreenPAK设计软件[1],打开。gp文件[2],并使用GreenPAK开发工具[3]在几分钟内将设计冻结到您自己的定制IC中。

yabo国际娱乐Dialog Semiconductor提供了一个完整的应用笔记[4]库,包括设计示例以及Dialog IC内的功能和模块的说明。

  1. GreenPAK设计软件,软件下载和用户指南,Dialog Semiconductoryabo国际娱乐
  2. AN-1161 A GreenPAK™无线莫尔斯码键盘。gp,绿派克设计文件,Dialog半导体yabo国际娱乐
  3. GreenPAK开发工具, GreenPAK开发工具网页,Dialog半导体yabo国际娱乐
  4. GreenPAK应用笔记,绿派克应用笔记网页,对话半导体yabo国际娱乐
  5. SLG46537对话框数据表,半导体yabo国际娱乐

介绍

本应用笔记将讨论一个一键蓝牙键盘,以摩尔斯电码的形式输入。莫尔斯电码是一种只用短间隔和长间隔发送信息的方案,分别被称为点和划。通过这种方式,用户可以只用一个输入输入任何字母数字字符。参见图1以获得莫尔斯电码参考。

图1所示。莫尔斯电码概述

GreenPAK SLG46537V[5]将被用来将莫尔斯电码输入转换成一个字节的数据。然后,该字节将使用外部蓝牙模块(具体地说,是Rigado bmd - 300),以在简单的电脑应用程式中显示为适当的字符。

外部组件

该应用程序所需的外部组件包括一个莫尔斯电码输入按钮和一个蓝牙模块,用于将GreenPAK的数据发送到计算机应用程序。

  • 按钮:本应用笔记使用E-Switch KS-01Q-02 (Digi-Key EG4792-ND)通孔按钮开关,尽管任何瞬间启动按钮就足够了。
  • 蓝牙:此应用选择的蓝牙模块是Rigado BMD-300 (1604 - 1006 - 1 nd Digi-Key).虽然单个蓝牙模块的售价为11.71美元(撰写本文时),但批量订购时价格有显著的折扣,这使该模块成为一个有吸引力的低成本蓝牙选项。

对于本应用说明,BMD-300评估委员会(Digi-Key 1604 - 1007)用于简化原型。

实现与GreenPAK设计师

将GreenPAK配置为莫尔斯电码键盘的第一步是设计一种方法,将莫尔斯电码输入(点和破折号)编码成二进制数据。为了从每个莫尔斯电码输入产生一个唯一的数据字节,我们将使用以下方案:

图2。从莫尔斯电码输入到字节的字母数字数据的转换

使用这个方案,我们可以创建一个完整的转换表(表1)。

表1。完整的转换表从莫尔斯电码输入到二进制数据

字符

字节

字符

字节

一个

10000010

年代

00000011

B

00010100

T

10000001

C

01010100

U

10000011

D

00100011

V

10000100

E

00000001

W

11000011

F

01000100

X

10010100

G

01100011

Y

11010100

H

00000100

Z

00110100

00000010

0

11111000

J

11100100

1

11110000

K

10100011

2

11100000

l

00100100

3.

11000000

11000010

4

10000000

N

01000010

5

00000000

O

11100011

6

00001000

P

01100100

7

00011000

10110100

8

00111000

R

01000011

9

01111000

有了这个方案,我们可以继续用状态图来描述GreenPAK的功能。

图3显示了在GreenPAK设计器的异步状态机(ASM)编辑器中配置的该图。

图4给出了在GreenPAK Designer中配置的连接的概述,并突出显示了该设计中使用的各种功能组:计数器、寄存器、按钮输入、ASM和数据输出。我们将依次介绍这些组。

图3。摩尔斯电码输入转换的状态图。变量t表示一个单位的莫尔斯电码时间(见图1中的莫尔斯电码参考)。为了简化莫尔斯电码输入,在计时方面作了一些改动
图4。GreenPAK Designer概述,突出显示在这个项目中使用的功能组

异步状态机

我们将从更详细地描述ASM开始。在GreenPAK的ASM中有8种状态可用,每一种状态都有8个输出,可以接收多达3个输入。输入控制状态转换,输出控制在每个状态中要采取的动作。输入和输出都可以在ASM编辑器中配置。

图5显示了主GreenPAK Designer工作区中的状态、状态转换和状态输出。这允许我们可视化状态转换将在什么时候发生(当输入变高时),以及ASM将采取的下一个状态(连接到已经变高的输入的状态)。我们还可以可视化输出连接的块,它们对应于在每个状态中将要采取的动作。表2描述了每种状态下应该发生什么操作。

可以使用ASM Editor中的ASM的RAM表轻松地配置状态输出(如图6所示)。RAM表已经被配置为八个可能的输出中的五个控制每个状态中的必要操作。这些输出如表3所示,并在图6中显示。

表2。描述在每个状态中应该发生什么行动。这些操作通过状态输出进行控制

状态

行动(s)

闲置

N/A

点/冲数

  1. 启动定时器

  1. 记录点登记
  2. 增加点/冲计数器

破折号

  1. 记录破折号
  2. 增加点/冲计数器

字符数

  1. 启动定时器

单词计数/字符结束

  1. 启动定时器
  2. 发送注册数据到蓝牙模块

词继续

  1. 复位寄存器

词在

  1. 复位寄存器
表3。ASM连接矩阵输出描述

输出的名字

描述

ClkReset

启动计时器所需的输出。当这个值从HIGH切换到LOW或反之,将产生重启计数器的脉冲。

DotOrDash

分别根据点或破折号状态写入0或1。

RegisterClk

当这个值从LOW切换到HIGH时,产生一个时钟脉冲来推进寄存器。输出连接在工作区中被标记为“GenerateRegisterPulse”。

RegisterReset

当低电平时,重置寄存器中的dff。输出连接在工作区中被标记为“RegReset”。

ReadRegisterData

当为HIGH时,提示蓝牙模块读取寄存器数据。输出连接在工作区中被标记为“Read”。

图5。ASM状态转换信号。ASM nRESET输入将ASM返回到Idle状态,当它变为LOW。出于测试目的,这是由一个外部按钮控制的
图6。连接矩阵输出RAM。StateDisplay0、StateDisplay1和StateDisplay2表示状态号,并已连接到led进行测试

计数器

现在我们将讨论图7中所示的块的用途和配置。首先,计时摩斯电码的单位,我们将使用GreenPAK的计数器方块在计数器模式。根据图3所示的状态图,我们需要一个计数器来计时三个单位,另一个计数器来计时四个单位。3t计数器的配置如图8所示。

在这个应用程序中使用了两个额外的计数器块,它们都被配置为生成一次脉冲。这个脉冲可以作为前一个计数器块的复位,或者作为一种提高寄存器的方法。这两个一次性计数器都是通过表3中描述的ASM输出来控制的。

图7。使用了四个计数器块,两个用于计时,两个用于产生一次性脉冲
图8。3t计数器的配置,其中t被认为是一秒。4t计数器以相同的方式配置,计数器数据值为1561(4秒)
图9。在一次性模式下的两个计数器块,配置为重置计时器(左)和推进寄存器(右)

寄存器

为了跟踪用户输入的点和破折号,我们将使用D Flip Flops (DFFs)创建两个单独的寄存器。第一个寄存器将由5个DFFs组成,并记录用户输入的序列。第二个寄存器将由三个dff组成,并将计算用户输入的数量。综上所述,寄存器将主动创建如图2所示的莫尔斯电码数据字节。

点/破折号寄存器由5个dff组成。DFF 5的DotOrDash输入与ASM输出设置。ASM输出还控制RegReset(直接)和RegisterClk(间接地,通过一次性计数器)输入。

要创建计数寄存器,需要使用三个查找表(lut)来设置要记录的下一个二进制值。

这样,每次RegisterClk推进寄存器时,相应的值就存储在DFFs中。

图10。一个寄存器用于记录用户输入,另一个用于跟踪点和破折号的总数
图11。计数逻辑的LUT配置。IN0对应RegReset。lut按照从最高有效位(MSB)到最低有效位(LSB)的顺序显示,只要RegReset为HIGH,就会循环二进制值000、001、010、011和100。当RegReset变为LOW时,输出为000

此外,由于我们可以设计每个LUT只需要两个输入,第三个输入可以设置为RegReset——这让我们可以解决点/破折号寄存器中使用的只有5个dff具有直接复位输入的事实。LUT配置如图11所示。

按钮

我们将使用PIN 3作为数字输入来记录用户按下的按钮。此外,我们将使用另一个LUT(配置为逆变器)作为确定按钮何时被释放的方法。最后一个LUT将被配置为AND门,以确定何时两个按钮都被按下,并且3t计时器已经到达。

图12。PIN 3记录莫尔斯码输入,两个lut将附加信息传递给ASM

输出

寄存器数据通过输出引脚12-16(点/破折号)和引脚5-7(点/破折号总数)直接传递到蓝牙模块。这个数据只有在PIN 17上的Read信号是高的时候才被传递。

图13。PINS 5-7和12-17用于将注册数据传递给蓝牙模块

示例实现

我们可以使用面包板、GreenPAK开发板和蓝牙模块的评估板(上面在外部组件中讨论过)轻松地对这个项目进行原型化。原型使用一个按钮莫尔斯电码输入和另一个作为复位到ASM(可选)。这些输入从面包板获取到GreenPAK开发板,输出从GreenPAK开发板获取到蓝牙模块的GPIO引脚。

使用此设置,应该配置GreenPAK Designer模拟窗口,如图15所示。

下一步是配置蓝牙模块以发送莫尔斯码数据。此过程的完整步骤超出了本应用说明的范围;但是,完整的文档(参见在这里在这里)是为BMD-300蓝牙模块提供的,读者应该选择使用它,如果构建这个项目。

我们可以通过使用输入按钮来输入莫尔斯电码的字符来测试原型。图17显示了这个测试的结果,使用一个简单的计算机程序(附源代码)查找数据字节和适当字符之间的关系。

图14。面包板输入按钮、GreenPAK开发板(绿色)和蓝牙模块的评估板(蓝色)之间的连线图片。面包板上的左键作为ASM复位,已断开连接。
图15。GreenPAK设计器中的仿真窗口。注意启用扩展连接器。
图16。Windows 10上可用的蓝牙设备的截图,广告称该设备名为“MorseKeyboard”。
图17。一个点后跟一个破折号产生字节10000010,它对应于A。这个计算机程序将数据转换成正确的字母数字字符
图18。这个原型被用来输入单词“Dialog”和数字“123”

以同样的方式,我们可以测试表1中给出的任何其他字符。现在,计算机程序已经被改变,允许连续输入文本(它将不显示二进制数据)。

通过使用外部电源,我们可以测试原型的电流消耗。当前的消耗取决于它的状态。其范围见表4:

表4。摩尔斯电码键盘原型的当前消耗

的原型

当前的

ASM处于空闲状态

36µ

按钮被按下

3.3马

扩展

这个键盘有很多潜在的应用,比如智能电视文本输入的替代(代替屏幕上笨拙的键盘导航)亚博国际官网平台网址,或者作为有缺陷的键盘输入的工具(因为它非常简单)。这两种可能性都可以利用相同的硬件,同时以不同的方式使用数据。然而,两家公司也可以扩展硬件,以利用增强或修改莫尔斯电码。

结论

在这篇应用笔记中,我们构建了一个低成本的无线键盘,它以莫尔斯电码的形式接受用户输入。我们使用GreenPAK SLG46537V IC将用户输入的数据转换成定制的二进制格式,然后通过蓝牙模块通过简单的计算机程序进行翻译。希望这个项目展示了GreenPAK设计的多功能性和易用性。