欢迎光临~广州悦欣电子科技有限公司
服务热线全国服务热线:

18925103846

资料知识

PTUF4FS_V1.3使用说明书

       PTUF4FS是一个提供串口的语音模块,完美的集成了MP3、WAV的硬解码。同时软件支持工业级别的串口通信协议,以SPIFLASH作为存储介质,用户可以灵活的选用其中的任何一种设备作为语音的存储介质。通过简单的串口指令即可完成播放指定的语音,以及如何播放语音等功能,无需繁琐的底层操作,使用方便,稳定可靠是此款产品的最大特点。
无需任何烧录器,无需任何软件,USB直接烧写FLASH。
同时可以以SPIFLASH为存储介质的U盘功能,后面章节详细说明
功能:
1、支持采样率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24位DAC输出,动态范围支持90dB,信噪比支持85dB
3、最大支持16M字节的SPIFLASH。例如W25Q16[2M字节]、W25Q128[16M字节]
4、多种控制模式,并口控制模式、串口模式、AD按键控制模式
5、Miniusb接口更新语音文件,无需安装任何软件。支持XP和WIN7系统。
6、支持,功能,可以实现报时、报温度,在一定程度上可以替代一些昂贵的TTS方案
7、30级音量可调,5级EQ可调[此功能暂不开放]
8、自带3W的功放,直接外接喇叭即可完成放音
9、支持6段语音的触发播放,IO检测的方式,所以适合碳膜按键等等场合

10、可以支持SPIFLASH[超小型封装]作为存储介质



串口调试说明

1、首先现在网上下载一个软件”串口猎人”,为什么选择这个,因为它有自动搜索串口的功能,十分好用。打开之后的主界面如上图所示,可以看到红色部分,依次设置即可

2、打开软件,首先要搜索串口,找到指定的端口之后,指定“波特率”,我们的模块默认的波特率为9600,最后就是“启动串行端口”,这样软件就配置好了。这里有两个概念需要明确一下

第一是“HEX码”,我们默认是这个,这个是用来显示数据的。所以必须设置这里

第二是“字符串”,这个是用来显示打印字符的,我们这里用不到。

(3)、软件配置OK之后,将需要的指令复制到发送区域即可。具体的指令请参照模块的数据手册

(4)、如果模块的数据手册没有的测试指令的话,请自行计算,尤其需要注意的是“校验和”这两个字节,如何计算不对的话,模块是不接受指令的,同时会返回相应的错误指令

校验代码的移植

我们这里的说明,争对的是用户的MCU给我们的模块发送控制指令

1、发送端 --- 用户的MCU

/******************************************************************************

- 功能描述: 串口向外发送命令[包括控制和查询]

- 参数说明: CMD:表示控制指令,请查阅指令表,还包括查询的相关指令

feedback:是否需要应答[0:不需要应答,1:需要应答]

data:传送的参数

******************************************************************************/

void Uart_SendCMD(INT8U CMD ,INT8U feedback , INT16U dat)

{

Send_buf[0] = 0xff;    //保留字节

Send_buf[1] = 0x06;    //长度

Send_buf[2] = CMD;     //控制指令

Send_buf[3] = feedback;//是否需要反馈

Send_buf[4] = (INT8U)(dat >> 8);//datah

Send_buf[5] = (INT8U)(dat);     //datal

DoSum(&Send_buf[0],6);        //校验

SendCmd(8);       //发送此帧数据

}


DoSum(&Send_buf[0],6); 这里是指对Send_buf[0]---Send_buf[5]这6个字节进行校验的算法

生成校验的两个字节,并且存储于Send_buf[6]和Send_buf[7]中



/******************************************************************************

- 功能描述:求和校验

- 和校验的思路如下:

发送的指令,去掉起始和结束。将中间的6个字节进行累加,最后取反码。接收端就将接收到的一帧数据,去掉起始和结束。将中间的数据累加,再加上接收到的校验字节。刚好为0.这样就代表接收到的数据完全正确。

******************************************************************************/

void DoSum( INT8U *Str, INT8U len)

{

INT16U xorsum = 0;

INT8U i;

for(i=0; i

{

xorsum  = xorsum + Str[i];

}

xorsum     = 0 -xorsum;

*(Str+i)   = (INT8U)(xorsum >>8);//得到高字节

*(Str+i+1) = (INT8U)(xorsum & 0x00ff);//得到低字节

}


2、接收端,模块发送数据给用户的MCU


If(一帧数据接收完毕)

{

for(i=0; i<(*(pi+1)); i++)//这里pi指向的是接收缓冲区,*(pi+1)是获取数据长度。

{

xorsum  = xorsum + pi[i] ;//将接受到的数据进行累加

}

xorsum1 = ((u16)((*(pi+i))<<8)) | (*(pi+i+1));//这里是接收到的校验字节,16位

xorsum  = xorsum + xorsum1;//将接收到的校验字节和自己算的校验数据相加

if(!xorsum)

{

Uart_Task(pi);//串口处理--对接收到的指令进行处理

}

else

{

ErrorStatus = ERROR_CheckSError ;//接收校验出错

//校验码出错之后的处理

}

}


用手机扫描二维码关闭
二维码