732|1

1460

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【ACM32G103RCT6开发板测评】+语音模块播放控制 [复制链接]

 

KT148A语音芯片是一种受MCU 控制的功能器件,它以单线通讯方式工作,俗称一线串口,但可不是 UART 通信呦。其通信协议也是非标准的,需按其标准来使用。

该芯片各引脚的作用如表1所示:

  

 

以该芯片制作的功能模块如图1所示,图2是其电路原理图。在使用时,需通过SPK接口来外接8欧姆的扬声器。

 

图1 功能模块

 

 

图2原理图

 

在进行语音播放控制前,需使用USB转TTL通讯模块来下载语音片段,然后即可通过按键TRIG来进行播放测试。每按下一次,即播放一次,并自动指向下一段语音片段。

在下载语音片段时,需将USB转TTL通讯模块的TX引脚连接到语音模块的PB1,并按下DOWN下载键以进入语音下载模式。

语音片段下载的软件如图3所示,需注意的是语音片段的文件格式需为*.f1a。

 

图3 软件界面

 

有了前面的准备工作,就可以在ACM32G103开发板上编程进行单线通讯控制了。通过程序的控制,可任意指定播放的语音片段。整个电路的硬件构成见图4所示,测试是通过开发板上的按键来触发语音段的播放,在设计应用时,则是根据实际的工作进程来自动触发相应语音段的播放,以起到操作提示的效果。

 

图4 硬件构成

在PB8连接语音模块PB1的情况下,相应的软件设计如下。

将PB8配置成数据发送引脚的函数为:

voidBSP_TX_Init(void)
{
GPIO_InitTypeDefGPIO_InitStruct;
__HAL_RCC_GPIOB_CLK_ENABLE ();
GPIO_InitStruct.Pin       = GPIO_PIN_8;
GPIO_InitStruct.Mode     = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull      = GPIO_PULLUP;
GPIO_InitStruct.Drive     = GPIO_DRIVE_LEVEL3;
GPIO_InitStruct.Alternate = GPIO_FUNCTION_0;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

实现高低电平输出的语句定义为:

#define IO1_HIGH()                   HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_SET)  

#define IO1_LOW()           HAL_GPIO_WritePin(GPIOB, GPIO_PIN_8, GPIO_PIN_RESET)

播放指定语音段的函数为:

void oneline_send_one_data(u8 dat) 
{
    u8 i = 0 ;
    IO1_LOW() ;                  /*现将总线拉低*/
    HAL_DelayUs (5000) ;
    for(i=0 ; i<8 ;i++)
    {
        if(dat & 0x01){
            IO1_HIGH() ;
            HAL_DelayUs(500);    /*延时600us*/
            IO1_LOW();
            HAL_DelayUs (170) ;  /*延时200us*/
        }
        else
        {
            IO1_HIGH() ;
            HAL_DelayUs (170);   /*延时200us*/
            IO1_LOW();
            HAL_DelayUs (500) ;  /*延时600us*/
        }
        dat = dat >> 1 ;         /*发送的时候,先发送最高位,再发送次高位,以此类推*/
    }
    IO1_HIGH() ;                 /*空闲时将该脚拉高即可*/
}

语音播放的测试主程序为:

void APP_Test(void)
{
    int n=1;
	BSP_LED_Init();
	BSP_PB_Init();
	BSP_LED_On();
    while(1)
    {
		if(BSP_PB_GetState()==1)
        {
			BSP_LED_On();
            oneline_send_one_data(n); //播放对应声音
            if(n<M) n=n+1;
            else
            n=1;
        }
	    else
        {
            BSP_LED_Off();
        }
	};
}

经程序的编译和下载,证明程序正确且有效。

 

最新回复

感谢分享,是一个语音片段芯片。   详情 回复 发表于 2024-1-4 10:42
点赞 关注
 
 

回复
举报

76

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

感谢分享,是一个语音片段芯片。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表