第三篇 树莓派的串口通信和语音识别模块

目录

一、串口(UART)

 

二、 wiringPi提供的串口API

三、语音识别模块

1、阅读模块代码 

①代码阅读工具:Souces Insight4.0安装、激活、汉化等

②语音识别(口令模式)源码框架(按main.c的顺序阅读)

2、修改代码


一、串口(UART)

全双工: 通信允许数据在两个方向上同时地双向传输。

半双工:数据传输指数据可以在两个方向上传输,但不同时。

(串口通信属于全双工通信)

  • 树莓派的串口

       ①主串口(/dev/serial0):可以通过引脚实现通信

       ②辅助串口(/dev/serial1):不能使用GPIO通信(默认分配给蓝牙)

(默认mini是禁用状态,无论指定为主uart还是辅助uart)

树莓派3/4B的外设包括两个串口 :

       ①串口设备(/dev/ttyAMA0):由硬件实现,有单独的波特率时钟源,性能高且可靠。

       ②mini串口设备(/dev/ttyS0):性能较低,功能简单watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQUZfSU5FVDY=,size_20,color_FFFFFF,t_70,g_se,x_16

                                                         (官网提供图片)

二、 wiringPi提供的串口API

函数原型参数或功能解释返回值
int serialOpen (char *device ,int baud)

device:串口设备文件

  (/dev/ttyAMA0)

baud:波特率

成功:返回所打开的文件描述符fd;

失败:返回-1

void serialClose (int fd)fd:文件描述符无返回值
void serialPutchar (int fd, unsigned char c)发送一个字符到串口无返回值
void serialPuts (int fd, char *s)

发送字符串到串口

(字符串s要以' \0 '结束)

无返回值

int  serialDataAvail (int fd)获取串口中可读数据的字节数

成功:串口中可以读取的字节数;

失败:返回-1

int serialGetchar (int fd)

读取串口的数据

(读取之前判断是否有数据)

返回值:实际读取到的字节数

另外,Linux下的标准I/O函数也可使用(需包含头文件 inlcude<unistd.h>)

size_t write (int fd,const void * buf,size_t count)

size_t read(int fd,void * buf ,size_t count)


三、语音识别模块

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQUZfSU5FVDY=,size_20,color_FFFFFF,t_70,g_se,x_16

1、阅读模块代码 

①代码阅读工具:Souces Insight4.0安装、激活、汉化

提取码:48a3(含安装、激活、汉化教程)

语音识别(口令模式)源码框架(按main.c的顺序阅读)

a.基本的初始化

Led_test( ) ;  //单片机指示灯闪烁3次

MCU_init( );  //初始化单片机I/O口特殊功能寄存器p0~p4,置为高电平;

                       //设置LD_MOOE为低电平,并行模式读写;

                       //打开中断控制寄存器。

LD_Reset( );//复位LD模块

UartIni(); //串口初始化

 接着赋值表示ASR状态的变量nAsrStatus=LD_ASR_NONE;

此时没有在做ASR识别。 

d65a702aa0ac43028b5b55528a1d66cb.png

b.实现主要功能的代码

switch(nAsrStatue)执行各分支语句:

①case LD_ASR_RUNING:

    case LD_ASR_ERROR:     

        break;

(正在识别和识别错误时,不作处理)

②case LD_ASR_NONE:(表示ASR空闲中)

执行:将ASR状态赋值为running;再启动识别,调用runASR( )

runASR( )的主要功能:初始化ASR,添加关键词,启动ASR运算,内部大致包括:LD_AsrStart( )、LD_AsrAddFixed( )、LD_AsrRun( )、LD_GetResult( )。(初始化、添加关键词、启动运行、获取识别结果。LDChip.c中),ASR启动成功后,asrflag=1,等待LD3320的中断信号

③case LD_ASR_FOUNDOK:(表示识别完成)

执行:调用LD_GetResult( )获取识别结果,对获取的结果根据用户需要实现对应功能User_handle( ),处理完后再将ASR的状态置为LD_ASR_NONE(空闲状态)

④case LD_ASR_FOUNDZERO:(表示没有识别出结果)

执行:将ASR的状态置为LD_ASR_NONE

2、修改代码

阅读完模块代码,了解其基本架构后,即可根据需求进行修改。

示例:语音识别开、关灯

(由于我的树莓派凉了,此处略)

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AF_INET6

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值