项目说明:利用ISD9160开发板的语音识别功能通过UART接口控制北斗通信/导航终端功能切换,实现终端设备的测试自动化。 原理:终端模块采用的是FPGA+DSP的结构,并且FPGA做为主控CPU与UART接口相连。恰好ISD9160开发板的第三个语音识别VR工程在识别正确后会通过UART接口输出特定数据。因此只需在FPGA中加入串口数据判别开关,若语音正确,串口接收数据无误,即可实现测试功能的切换。 在此我们分两步进行:A. ISD9160开发板VR工程调试;B. FPGA模块串口数据判读并产生切换指令。 A. ISD9160开发板VR工程测试 1) 参照简易操作手册,在Keil MDK中打开VR工程
下载程序后,板子的OLED不再显示信息。 2) 打开ICP Programming Tool,选择ISD9100系列。
连接开发板,按照手册选择载入文件。
跟手册上不一样的是APROM的数据有差别,先忽略,继续,烧写成功,OK。
3) 将开发板的串口与外接UART串口通过杜邦线连起来,再接到电脑上。
4) 对准MIC喊“我要开灯”,亮了两个灯,上面一个,下面一个。
喊“我要关灯”,亮了三个灯,上面一个,下面两个。
串口助手分别收到的数据为“0B”和“0C”。
5) 与指令说明中“我要开灯”与“我要关灯”的UART数据11(0B)和12(0C)一致,并且十六进制0B为01011,十六进制0C为01100,分别加一后变量nID为01100和01101,与实测的开发板亮灯相一致。
经实测,只有“我要开灯、我要关灯、降低音量”指令识别率能达到50%以上,其他的就稍微差点意思了,难道是我普通话太差吗…???
至此,ISD9160开发板的VR工程测试正常,串口可以正常收到数据。 B. FPGA模块串口数据判读并产生切换指令 FPGA开发板使用十几年前上学时候买的第一块开发板,采用Altera Cyclone EP2C8Q208C8芯片,外挂些LED、数码管、串口等等外设,将ISD9160开发板和FPGA板通过UART COMM口连接起来,硬件便搭建起来。 判断模块的编写也很简单,我们随意加载一个UART接收模块,将波特率设置为115200bps,同ISD9160串口速率相同。最后只需加一个判读切换功能,为了便于区分,我们将开发板上的6个LED显示灯做为切换指示,若听到“我要开灯”指令,即接收到0x0B数据,前三个LED指示灯亮;若听到“我要关灯”指令,即接收到0x0C数据,后三个LED指示灯亮,若听到其他指令,则全亮。 串口模块的编写如下所示。
先利用串口助手调试,可以看到0x0B与0x0C都可以被模块正常接收。
串口模块工作正常,此时将ISD9160与FPGA开发板连接起来,
分别呼叫“我要开灯”、“我要关灯”、“降低音量”,可以看到LED灯按照我们编写的程序在切换,至此,切换功能完全实现,将此模块移植进北斗通导一体终端后即可实现测试自动化。
|