|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
CC3200AI实验教程 ——疯壳·开发板系列 语音传输与解析显示
. Y F5 ~) `1 c2 F- m6 }: J; y7 _
& {" ^+ _$ a* s- j& L) B8 x
% e/ w- C0 J% O TLV320AIC3254支持I2C和SPI接口,这里用到I2C对TLV320AIC3254的寄存器进行配置,用IAR打开AI_ASR里面的工程,如图1.0.1所示为CC3200初始化I2C部分代码。$ y; c7 @& D- p/ A; _6 {
0 Q* T; P$ G" y+ B, c1 P' J# m% V
: `8 \: }' z6 u7 _) o" [ 图1.0.1 初始化I2C部分代码
! X, l8 W8 |5 X6 j$ W/ L 图1
' f) Z5 b; A$ F8 Z9 { 对TLV320AIC3254的初始化函数,如图1.0.2所示。" I( v+ @) y# e
- N% s3 q# E7 `1 i" o% g( v- ^
" w: ]' _! p) D2 K0 F+ g# ^
图1.0.2 TLV320AIC3254初始化
& N2 K+ {( Z+ a& N3 \ 图2
. f" k% T* Q* M. M" L 通过该函数可以设置设备的ID、采样位数、采样速率、音频通道、音频输出以及音频输入的增益。! }$ E$ |7 {& S) o, W
本次实验使用UDP连接的方式进行通信。使用CC3200配置为UDP模式的代码如图1.0.3所示。
2 E2 P5 h0 [* {
6 [2 r# h2 B5 }/ R' D9 |# T
' H* K! `- ]! R; e1 N: M, _ 图1.0.3 CC3200U配置UDP模式1 t: q' J! k4 A! P1 k7 c2 E+ n
图3% X' z2 c0 ?; m3 u1 |
打开common.h,连接的路由器名称及密码如图1.0.4所示,特别注意的是要修改加密方式OPEN、WEP或者WPA。
2 b3 s; G `5 W& p# m) U) P% f. a
! w @! o. @0 I; |" Q
3 G+ Z* U9 J$ N% R2 R$ ` V ~ 图1.0.4 路由器相关信息
8 T+ ~; P! d/ j' k1 [: m! L 图4) c8 f! B' X5 B5 G
连接服务器的IP地址及端口如图1.0.5所示。在network.c找到HOST_IP_ADDR可在宏定义中修改IP地址,修改usPort的值可以修改端口。
% [+ r8 ^% S! G) S
+ \! s; {( x% d( \3 i7 R# L: i n. ~) d0 j
图1.0.5 服务器的IP地址及端口
1 |# Y' `9 x: R 图53 P `7 F, c5 }5 a3 n2 g
IP地址用16进制来表示,例如:“192”对应16进制的“0xc0”、“168”对应16进制的“0xa8”、“05”对应16进制的“0x05”、“05”对应16进制的“0x05”,合起来就是0xc0a80505(192.168.5.5)。
8 ` T- I& K3 s9 ^, r Network任务主要是实现网络连接,所以该任务主要实现CC3200连接上路由器,建立UDP。任务如图1.0.6所示。* b- Q# B' p" G
$ G' @) X. h5 Y/ o5 {1 f3 x8 u
* ]$ q& O( _$ N5 b1 } 图1.0.6 Network任务
I) D! J7 L- |$ y 图6
3 j% H3 g6 ]- J" ?5 z" b 在ConnectToNetwork()函数内有一个函数WlanConnect()通过该函数可以连接上Common.h的宏定义中的路由器,WlanConnect()函数如图1.0.7所示。3 }8 o6 W- l# G% a0 O2 [2 G
3 H2 M1 H% b1 K8 a& ~# B4 ]
% f( G. E; c3 m0 E( \" \
图1.0.7 WlanConnect函数! c/ d' I4 u# e
图7: x+ T( L' c) g* a" n x4 q' b
CreateUdpServer()函数则是建立udp服务器,该函数如图1.0.8所示。
' P: N3 P: E3 K2 P; v, O8 l# R9 S7 O2 D. Q% ^% l3 g+ }" A
! s5 I* C$ i$ G* | 图1.0.8 CreateUdpServer函数! @/ F- k: f9 X
图8
/ T! |+ l! C! j, b& ]( g Microphone任务主要是为了实现音频板卡语音的采集以及把语音信号通过udp发送出去的事项。
) \( k% L0 a( e: L5 x 通过该任务下的GetBufferSize(pRecordBuffer)函数便可以把音频板卡的驻极体上的声音信号采集回来存储在pRecordBuffer这个缓冲区中。GetBufferSize()函数如图1.0.9所示。
9 _$ U' @6 B$ j/ ^; Y- F! r
1 a$ ~9 j0 s) S) i6 ^
/ f- B# r6 g$ W! A2 J% M6 F4 U+ B
图1.0.9 GetBufferSize函数) H' e q) Y& C! b! Q* g
图9
- C) a* D0 X! @1 ~% G$ L% ^ 通过该任务下的sendto()函数可以把采集到语音信号发送到服务器端。 [* k% I; T5 m4 p
通过Speaker任务可以把由服务器端识别回来的字符串接收回来,并显示在12864液晶屏幕上。Speaker任务如图1.1.0所示。$ w) J' t5 |9 b W7 b) C8 |
# ~% k8 C: n0 k3 w- y
; s/ T9 G# |6 [7 B 图1.1.0 Speaker任务
$ ~7 |( }" N# Q9 V% P, W 图100 t" Z' c: t; |- H
通过sl_RecvFrom便可接收到解析好的语音字符串,然后通过12864液晶屏显示出来。) g a# ~3 r4 ?/ K$ S9 o/ i ^6 ~9 B
如图1.1.1为12864的初始化部分代码
# L8 s& T4 B) F1 [ n
/ J) T2 m1 M5 S; ]# f- ?# t. V+ q! |6 [
3 N2 Y$ G9 u7 }. E n 图1.1.1 12864初始化代码
- r* |( I$ K1 g5 v& L 图11. S) e7 U z5 k
通过该函数可以初始化设定12864的对比度、扫屏方向等。如图1.1.2为12864的显示GB2312字库的代码。. u* _$ c* R/ m' ]! E
( Y' z7 u! V( s( ~% D. T3 W
# ]7 v( b% z; X8 f1 f+ R 图1.1.2 12864显示GB2312字库的代码* z6 E. E* f M" p) f: P
图12! M; D' n7 [8 Y5 X- k; a; _4 x3 A
编译代码下载Bin文件到CC3200上(具体可参考GPIO小节),下载成功之后将拨码开关再拨回去,由于用到串口UART1调试的接收,需要把USB转TTL电平的CH340的供电端以及收发端接上,把CH340G_VCC拨到ON,接收端RXD拨到ON如图1.1.3所示。( u0 ?( T- L" N- B! `, Y* Z9 Z5 E1 d' z
2 f0 A9 R7 ]# n
; l2 _% C! @) D3 k- @5 ]7 X 图1.1.3 下载完成的后的拨码开关示意图
3 e9 I+ A; E m% V& Y 图13, [/ C5 k1 u& q) Q+ o6 Y
由于该实验需要用到音频板卡,故需要把音频板卡插在板子左下方的双排针处,同时还需要把排针连接CC3200的拨码开关拨上,即需要把板子中间靠右的8路拨码的6、7、8(LED灯)拨到ON(1在上一步中已经拨到了ON)。除此之外,本次实验还用到了12864液晶显示器,还需要把配套的液晶显示器接上,配套的液晶显示器的引脚与板子IO的连接关系如表1.0.1所示。* B- q( a; ^1 [% x
表1.0.1 12864与开发板连接关系
& J8 ]' c+ l& L# |; ^/ m# u) g9 \4 I1 w+ M
9 w2 V) [. |% U, _7 ?& e6 P8 h 表1
% m# f/ z% v+ e- F 最后插上USB线。最后板子上的拨码及接线状态如图1.1.4所示。
! w1 C! f. ?) M. p; S2 e$ ]+ E3 e" d: e
! r1 ~1 m! h( | 图1.1.4 接线示意图8 J t' N& d* X3 w$ T
图14
+ z3 w: Z) A: d% y3 {0 P8 k4 p 把USB接上电脑,打开串口调试助手,选择相应的串口号(不同的电脑不同),波特率选择115200,打开串口,按下复位。收到如图1.1.5所示信息则代表音频板卡初始化通过。% E# l0 x( l7 M" q8 Y9 V
4 d8 v! B7 j T0 n) q7 H# b
0 |9 _8 D7 v% W: q# Q
图1.1.5 音频板卡初始化通过
, r7 @+ M* Q) O8 A 图15; d/ K% T- x) Z, ]- ^/ i x" U7 x: m
当接收到如图1.1.6所示的串口打印信息时,则代表CC3200已经连上了指定的路由器。, t+ s* u& S: R; I# r! j, N
: q. j- f, o. ]$ Q0 \! e' P( |8 z
6 Z4 C- R) V* C0 W9 @ 图1.1.6 连接上路由器7 |0 W1 j- y% h+ J& Z; M
图165 f5 _& g3 a8 T% C* e
拿起板卡对着驻极体说出想要识别的语音(普通话),等待一会后12864液晶,便会显示出相应的字符。
9 _2 n) N. g [0 n1 p6 v 在本次实验中是以不断地采集驻极体处的声音待服务器解析后回传字符串的方式进行的,故需要等待的时间较长(约10s~20s)。
* i+ N( U0 p" r, n; |% N 如图1.1.7所示,对驻极体说出“明天天气怎么样”,等待一会后12864液晶屏幕便会显示出由服务器的识别返回的字符。
. X& ?1 S7 [1 Z7 B% B: H$ L, u7 }& V- \ y( R5 J
7 j6 k8 W! _; x" Z
图1.1.7 实验现象/ T1 K. W/ U, D2 w9 ?3 o
图17
' i ?/ S* s- H$ b7 K0 y! V3 K! P6 _9 s, d3 v6 W
' ~1 G( D: |9 W+ B
H" m4 {* G8 x, o x, d( H部分图片由于过大无法上传,有兴趣的伙伴请点击下载下方的原文件查看+ Q: x( m" R) [% `) B& k: Y
4 Y* }' x! g; z: F) D2 H& R
文件下载请点击:
【3】语音传输与解析显示.pdf
(949.5 KB, 下载次数: 0)
- a2 H) ~7 F$ I5 S& C
5 ?3 b% O6 C0 u& B- x8 X3 t7 F8 A# ?
# }) i+ k4 \7 m4 V% q |
|