目錄
前言
1. 原理
2. Cubmx配置
3. keil5編寫(xiě)代碼
3.1 main.c
3.2 syn6288.c
3.3 syn6288.h
前言
本教程基于stm32f103c8t6最小系統(tǒng)板,hal庫(kù)開(kāi)發(fā)。
操作簡(jiǎn)單,講解直接清楚,旨在讓大家少走彎路。
1. 原理
SYN6288就是用到一個(gè)串口資源即可,用STM32開(kāi)發(fā)起來(lái)不難。
2. Cubmx配置
配置串口3為異步通信模式?,注意波特率必須是9600。試過(guò)了,115200是不行滴。
不用開(kāi)啟串口中斷。
3. keil5編寫(xiě)代碼
3.1 main.c
/* USER CODE BEGIN 0 */
/**************芯片設(shè)置命令*********************/
uint8_t SYN_StopCom[] = {0xFD, 0X00, 0X02, 0X02, 0XFD}; //停止合成
uint8_t SYN_SuspendCom[] = {0XFD, 0X00, 0X02, 0X03, 0XFC}; //暫停合成
uint8_t SYN_RecoverCom[] = {0XFD, 0X00, 0X02, 0X04, 0XFB}; //恢復(fù)合成
uint8_t SYN_ChackCom[] = {0XFD, 0X00, 0X02, 0X21, 0XDE}; //狀態(tài)查詢
uint8_t SYN_PowerDownCom[] = {0XFD, 0X00, 0X02, 0X88, 0X77}; //進(jìn)入POWER DOWN 狀態(tài)命令
/* USER CODE END 0 */
/* USER CODE BEGIN 3 */
//選擇背景音樂(lè)2。(0:無(wú)背景音樂(lè) 1-15:背景音樂(lè)可選)
//m[0~16]:0背景音樂(lè)為靜音,16背景音樂(lè)音量最大
//v[0~16]:0朗讀音量為靜音,16朗讀音量最大
//t[0~5]:0朗讀語(yǔ)速最慢,5朗讀語(yǔ)速最快
//其他不常用功能請(qǐng)參考數(shù)據(jù)手冊(cè)
SYN_FrameInfo(2, "[v7][m1][t5]歡迎使用");
HAL_Delay(1000);
HAL_Delay(1000);
}
/* USER CODE END 3 */
3.2 syn6288.c
#include "syn6288.h"
#include "usart.h"
#include "string.h"
//Music:選擇背景音樂(lè)。0:無(wú)背景音樂(lè),1~15:選擇背景音樂(lè)
void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata)
{
/****************需要發(fā)送的文本**********************************/
unsigned char Frame_Info[50];
unsigned char HZ_Length;
unsigned char ecc = 0; //定義校驗(yàn)字節(jié)
unsigned int i = 0;
HZ_Length = strlen((char*)HZdata); //需要發(fā)送文本的長(zhǎng)度
/*****************幀固定配置信息**************************************/
Frame_Info[0] = 0xFD ; //構(gòu)造幀頭FD
Frame_Info[1] = 0x00 ; //構(gòu)造數(shù)據(jù)區(qū)長(zhǎng)度的高字節(jié)
Frame_Info[2] = HZ_Length + 3; //構(gòu)造數(shù)據(jù)區(qū)長(zhǎng)度的低字節(jié)
Frame_Info[3] = 0x01 ; //構(gòu)造命令字:合成播放命令
Frame_Info[4] = 0x01 | Music << 4 ; //構(gòu)造命令參數(shù):背景音樂(lè)設(shè)定
/*******************校驗(yàn)碼計(jì)算***************************************/
for(i = 0; i < 5; i++) //依次發(fā)送構(gòu)造好的5個(gè)幀頭字節(jié)
{
ecc = ecc ^ (Frame_Info[i]); //對(duì)發(fā)送的字節(jié)進(jìn)行異或校驗(yàn)
}
for(i = 0; i < HZ_Length; i++) //依次發(fā)送待合成的文本數(shù)據(jù)
{
ecc = ecc ^ (HZdata[i]); //對(duì)發(fā)送的字節(jié)進(jìn)行異或校驗(yàn)
}
/*******************發(fā)送幀信息***************************************/
memcpy(&Frame_Info[5], HZdata, HZ_Length);
Frame_Info[5 + HZ_Length] = ecc;
HAL_UART_Transmit(&huart3,Frame_Info,5 + HZ_Length + 1,10000);
//USART3_SendString(Frame_Info, 5 + HZ_Length + 1);
}
/***********************************************************
* 名 稱: YS_SYN_Set(u8 *Info_data)
* 功 能: 主函數(shù) 程序入口
* 入口參數(shù): *Info_data:固定的配置信息變量
* 出口參數(shù):
* 說(shuō) 明:本函數(shù)用于配置,停止合成、暫停合成等設(shè)置 ,默認(rèn)波特率9600bps。
* 調(diào)用方法:通過(guò)調(diào)用已經(jīng)定義的相關(guān)數(shù)組進(jìn)行配置。
**********************************************************/
void YS_SYN_Set(uint8_t *Info_data)
{
uint8_t Com_Len;
Com_Len = strlen((char*)Info_data);
HAL_UART_Transmit(&huart3,Info_data,Com_Len,10000);
// USART3_SendString(Info_data, Com_Len);
}
3.3 syn6288.h
#ifndef __SYN6288_H
#define __SYN6288_H
#include "stm32f1xx_hal.h"
void SYN_FrameInfo(uint8_t Music, uint8_t *HZdata);
void YS_SYN_Set(uint8_t *Info_data);
#endif
以上就是STM32驅(qū)動(dòng)syn6288的HAL庫(kù)版本的代碼,全部按我這個(gè)操作100%一次驅(qū)動(dòng)syn6288。
碼字不易,希望喜歡的小伙伴別忘了點(diǎn)贊+收藏+關(guān)注,你們的肯定就是我創(chuàng)作的動(dòng)力。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-472035.html
歡迎大家積極交流,本文未經(jīng)允許謝絕轉(zhuǎn)載?。?!
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-472035.html
到了這里,關(guān)于STM32系列——手把手教你將SYN6288語(yǔ)音播報(bào)模塊的標(biāo)準(zhǔn)庫(kù)程序轉(zhuǎn)為hal庫(kù)使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!