久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6923|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

LD3320語音合成YS-Mini模塊資料與51及stm32測試程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:291394 發(fā)表于 2018-5-15 16:18 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
Ys-MINI語音模塊資料,測試程序

LD3320語音合成電路原理圖如下:


1、本程序工程采用keil4編譯通過,如打不開或出現(xiàn)錯誤,請按照keil 4編譯器。



二、電路連接方法
芯片為3.3V供電與其連接的單片機必須為3.3V供電的單片機,從而保證IO口電平不超過3.3V,否則將導(dǎo)致語音芯片驅(qū)動不成功甚至導(dǎo)致語音芯片燒壞,同時亦不可以采用串聯(lián)電阻的方式進行分壓通信這是驅(qū)動不起來的,以下為該模塊的2種驅(qū)動方式的端口連接;

1、并口方式所需連接的端口

LD_P0--LDP7(8位并行數(shù)據(jù)、地址端口)
LD_A0(1:LD_P0-LD_P7為地址端口,0:LD_P0-LD_P7為s數(shù)據(jù)端口)
LD_CS(芯片片選端口)
LD_WR(芯片寫端口)
LD_RD(芯片讀端口)
LD_IRQ(中斷信號,模塊收到聲音后產(chǎn)生一個下降沿)
LD_Reset(芯片復(fù)位端口)

2、SPI方式所需連接的端口

LD_P0->SDI(SPI輸入端口)
LD_P1->SDO(SPI輸出端口)
LD_P2->SDCLK(SPI時鐘端口)
LD_WR->SPIS(SPI片選端口)
LD_Reset(芯片復(fù)位端口)
LD_IRQ(中斷信號,模塊收到聲音后產(chǎn)生一個下降沿)
LD_CS(芯片片選端口,低電平有效)
在初步的調(diào)試過程中,不建議省略以上通信方式的任何一個引腳,例如直接將LD_CS拉低等等,底層驅(qū)動程序都必須用到以上的管腳,故在未驅(qū)動應(yīng)用起來前不要自行修改避免不必要的錯誤導(dǎo)致調(diào)試不成功。
(備注:如采用SPI通信方式時建議采用硬件SPI方式;不要建議采用軟SPI方式驅(qū)動,該方式對時序要求非常嚴(yán)格,調(diào)試存在一定的難度。電路連接沒有固定格式,注意理解原理)

在調(diào)試本芯片時不建議急于求成,就算單片機型號和程序都一致都需要嚴(yán)格遵守“LD3320芯片簡明調(diào)試步驟.pdf”手冊的調(diào)試步驟,逐步測試通關(guān),從而我們才有可能找到問題所在并解決問題。調(diào)試過程需要耐心和細心,每個步驟都不可遺漏,認真查看調(diào)試步驟,在初步的開發(fā)中,我們不需去了解寄存器和其他數(shù)據(jù)手冊,避免導(dǎo)致思維混亂,因為提供的程序已經(jīng)是調(diào)試可用寄存器配置、流程都已經(jīng)完善。我們只需要且可修改的是程序端口定義、讀寫函數(shù)、延時函數(shù)等與底層驅(qū)動默認設(shè)置無關(guān)的內(nèi)容,只有在調(diào)試完成應(yīng)用起來后方可繼續(xù)深入了解和參數(shù)的修改。

51單片機源程序如下:
  1. /*************************飛音云電子******************************************
  2. **        版權(quán)所有:Copyright (c) 2005 - 2010 ICRoute INC.
  3. **        CPU: STC89LE52
  4. **        晶振:22.1184MHZ
  5. **        波特率:9600 bit/S
  6. **        配套產(chǎn)品信息:V0.3語音開發(fā)板
  7. **  版本:zds0.0.3
  8. **  說明:本工程只具有 語音識別功能。屬基本驅(qū)動代碼,
  9.                                         附加串口、如不需要用到可
  10.                                         屏蔽刪除,根據(jù)需要自行移植到相關(guān)的單片機上。
  11. 本程序中帶/*text.....*///為串口打印輸出提示內(nèi)容,查看工作狀態(tài)使用的,可以全部刪除

  12. /************************************************************************************/
  13. #include "config.h"

  14. /************************************************************************************/
  15. //        nAsrStatus 用來在main主程序中表示程序運行的狀態(tài),不是LD3320芯片內(nèi)部的狀態(tài)寄存器
  16. //        LD_ASR_NONE:                表示沒有在作ASR識別
  17. //        LD_ASR_RUNING:                表示LD3320正在作ASR識別中
  18. //        LD_ASR_FOUNDOK:                表示一次識別流程結(jié)束后,有一個識別結(jié)果
  19. //        LD_ASR_FOUNDZERO:        表示一次識別流程結(jié)束后,沒有識別結(jié)果
  20. //        LD_ASR_ERROR:                表示一次識別流程中LD3320芯片內(nèi)部出現(xiàn)不正確的狀態(tài)
  21. /***********************************************************************************/
  22. uint8 idata nAsrStatus=0;        
  23. extern void   _nop_     (void);
  24. void MCU_init();
  25. uint8 RunASR();
  26. void ProcessInt0(); //識別處理函數(shù)
  27. void  delay(unsigned long uldata);
  28. /************************************************************************
  29. 功能描述: 主函數(shù)程序入口
  30. 入口參數(shù):        none
  31. 返 回 值:         none
  32. 其他說明:        none
  33. **************************************************************************/
  34. void  main()
  35. {
  36.         uint8 idata nAsrRes;
  37.         uint8 i=0;

  38.         MCU_init();
  39.         LD_Reset();
  40.         UartIni(); /*串口初始化*/
  41.         nAsrStatus = LD_ASR_NONE;                //        初始狀態(tài):沒有在作ASR
  42.         PrintCom("串口運行中....\n"); /*text.....*/
  43.         PrintCom("口令:1、代碼測試\n"); /*text.....*/
  44.         PrintCom("        2、開發(fā)板驗證\n"); /*text.....*/
  45.         PrintCom("        3、檢查完畢\n"); /*text.....*/

  46.         while(1)
  47.         {
  48.                 switch(nAsrStatus)
  49.                 {
  50.                         case LD_ASR_RUNING:
  51.                         case LD_ASR_ERROR:               
  52.                                 break;
  53.                         case LD_ASR_NONE:
  54.                         {
  55.                                 nAsrStatus=LD_ASR_RUNING;
  56.                                 if (RunASR()==0)        /*        啟動一次ASR識別流程:ASR初始化,ASR添加關(guān)鍵詞語,啟動ASR運算*/
  57.                                 {
  58.                                         nAsrStatus = LD_ASR_ERROR;
  59.                                 }
  60.                                 break;
  61.                         }

  62.                         case LD_ASR_FOUNDOK: /*        一次ASR識別流程結(jié)束,去取ASR識別結(jié)果*/
  63.                         {
  64.                                 
  65.                                 nAsrRes = LD_GetResult();                /*獲取結(jié)果*/
  66.                                 PrintCom("\n識別碼:"); /*text.....*/
  67.                                 UARTSendByte(nAsrRes+0x30); /*text.....*/                                
  68.                                  switch(nAsrRes)                   /*對結(jié)果執(zhí)行相關(guān)操作,客戶修改*/
  69.                                   {
  70.                                           case CODE_DMCS:                        /*命令“測試”*/
  71.                                                         PrintCom("“代碼測試”命令識別成功\n"); /*text.....*/
  72.                                                                                                                  break;
  73.                                                 case CODE_KFBYZ:         /*命令“全開”*/
  74.                                                         PrintCom("“開發(fā)板驗證”命令識別成功\n"); /*text.....*/
  75.                                                                                                                  break;
  76.                                                 case CODE_JCWB:                /*命令“復(fù)位”*/
  77.                                 
  78.                                                         PrintCom("“檢查完畢”命令識別成功\n"); /*text.....*/
  79.                                                                                                                 break;
  80.                                                 default:break;
  81.                                         }                                

  82.                                 nAsrStatus = LD_ASR_NONE;
  83.                                 break;
  84.                         }
  85.                         case LD_ASR_FOUNDZERO:
  86.                         default:
  87.                         {
  88.                                 nAsrStatus = LD_ASR_NONE;
  89.                                 break;
  90.                         }
  91.                 }// switch         
  92.         }// while

  93. }
  94. /************************************************************************
  95. 功能描述:         單片機初始化
  96. 入口參數(shù):
  97. 返 回 值:
  98. 其他說明:
  99. **************************************************************************/
  100. void MCU_init()
  101. {
  102.         P0 = 0xff;
  103.         P1 = 0xff;
  104.         P2 = 0xff;
  105.         P3 = 0xf7;
  106.         IE0=1;
  107.         EX0=1;
  108.         EA=1;
  109. }

  110. /************************************************************************
  111. 功能描述: 延時函數(shù)
  112. 調(diào)用函數(shù):
  113. 入口參數(shù):
  114. 返回函數(shù):
  115. **************************************************************************/
  116. void  delay(unsigned long uldata)
  117. {
  118.         unsigned int j  =  0;
  119.         unsigned int g  =  0;
  120.         for (j=0;j<5;j++)
  121.         {
  122.                 for (g=0;g<uldata;g++)
  123.                 {
  124.                         _nop_();
  125.                         _nop_();
  126.                         _nop_();
  127.                 }
  128.         }
  129. }
  130. /************************************************************************
  131. 功能描述:         運行ASR識別流程
  132. 入口參數(shù):        none
  133. 返 回 值:  asrflag:1->啟動成功, 0—>啟動失敗
  134. 其他說明:        識別順序如下:
  135.                                                 1、RunASR()函數(shù)實現(xiàn)了一次完整的ASR語音識別流程
  136.                                                 2、LD_AsrStart() 函數(shù)實現(xiàn)了ASR初始化
  137.                                                 3、LD_AsrAddFixed() 函數(shù)實現(xiàn)了添加關(guān)鍵詞語到LD3320芯片中
  138.                                                 4、LD_AsrRun()        函數(shù)啟動了一次ASR語音識別流程                                       
  139.                                                 任何一次ASR識別流程,都需要按照這個順序,從初始化開始
  140. **************************************************************************/
  141. uint8 RunASR()
  142. {
  143.         uint8 i=0;
  144.         uint8 asrflag=0;
  145.         for (i=0; i<5; i++)                        //        防止由于硬件原因?qū)е翷D3320芯片工作不正常,所以一共嘗試5次啟動ASR識別流程
  146.         {
  147.                 LD_AsrStart();
  148.                 delay(100);
  149.                 if (LD_AsrAddFixed()==0)
  150.                 {
  151.                         LD_Reset();                        //        LD3320芯片內(nèi)部出現(xiàn)不正常,立即重啟LD3320芯片
  152.                         delay(100);                        //        并從初始化開始重新ASR識別流程
  153.                         continue;
  154.                 }
  155.                 delay(10);
  156.                 if (LD_AsrRun() == 0)
  157.                 {
  158.                         LD_Reset();                        //        LD3320芯片內(nèi)部出現(xiàn)不正常,立即重啟LD3320芯片
  159.                         delay(100);                        //        并從初始化開始重新ASR識別流程
  160.                         continue;
  161.                 }
  162.                 asrflag=1;
  163.                 break;                                        //        ASR流程啟動成功,退出當(dāng)前for循環(huán)。開始等待LD3320送出的中斷信號
  164.         }

  165.         return asrflag;
  166. }
  167. /************************************************************************
  168. 功能描述: 中斷處理函數(shù)
  169. 調(diào)用函數(shù):
  170. 入口參數(shù):
  171. 返回函數(shù):
  172. **************************************************************************/
  173. void ExtInt0Handler(void) interrupt 0  
  174. {         
  175.         ProcessInt0();                                //        LD3320 送出中斷信號,包括ASR和播放MP3的中斷,需要在中斷處理函數(shù)中分別處理
  176.         PrintCom("進入中斷/n"); /*text.....*/
  177. }



復(fù)制代碼

stm32代碼:
  1. /***************************樂聲電子科技有限公司****************************
  2. **  工程名稱:YS-V0.4語音識別開發(fā)板程序
  3. **        CPU: STM32f103RCT6
  4. **        晶振:8MHZ
  5. **        波特率:9600 bit/S
  6. **        配套產(chǎn)品信息:YS-V0.4語音識別開發(fā)板
  7. **  說明:本程序 具備語音識別、串口通信、開發(fā)板基本功能演示。
  8. /*************端口信息********************
  9. * 接線說明
  10. * RST      PB6
  11. * CS             PB8
  12. * WR/SPIS  PB9
  13. * P2/SDCK  PB3
  14. * P1/SDO   PB4
  15. * P0/SDI   PB5
  16. * IRQ      PC1
  17. * CLK  與單片機的晶振共用

  18. ***************************樂聲電子科技有限公司******************************/
  19. #include "includes.h"

  20. /* Private function prototypes -----------------------------------------------*/
  21. void RCC_Configuration(void);
  22. //void NVIC_Configuration(void);
  23. void  USART_Configuration(void);
  24. void PrintCom(USART_TypeDef* USARTx, uint8_t *Data);

  25. extern void  LD3320_main(void);
  26. /***********************************************************
  27. * 名    稱: 主函數(shù)
  28. * 功    能:        程序入口
  29. * 入口參數(shù):  無
  30. * 出口參數(shù):        無
  31. * 說    明:        無
  32. * 調(diào)用方法:         無
  33. **********************************************************/
  34. int main(void)
  35. {
  36.   /* System Clocks Configuration */
  37.   RCC_Configuration();  //外設(shè)時鐘配置
  38.   USART_Configuration();//USART 配置        
  39.         LD3320_main();                                //LD3320執(zhí)行函數(shù)
  40.         while (1)
  41.   {        
  42.         }
  43.         
  44. }
  45. /***********************************************************
  46. * 名    稱: void  USART_Configuration(void)
  47. * 功    能: 串口配置
  48. * 入口參數(shù):  
  49. * 出口參數(shù):
  50. * 說    明:
  51. * 調(diào)用方法:
  52. **********************************************************/
  53. void  USART_Configuration(void)
  54. {
  55.         USART_InitTypeDef USART_InitStructure;
  56.         GPIO_InitTypeDef GPIO_InitStructure;

  57.   USART_InitStructure.USART_BaudRate = 9600;
  58.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  59.   USART_InitStructure.USART_StopBits = USART_StopBits_1;
  60.   USART_InitStructure.USART_Parity = USART_Parity_No;
  61.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  62.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

  63.   /* Configure USART1 */
  64.   USART_Init(USART1, &USART_InitStructure);        //類似與GPIO口,配置完后初始化一次
  65.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  //使能接收 中斷
  66.   USART_ITConfig(USART1, USART_IT_TXE, ENABLE);  //使能發(fā)送 中斷
  67.   USART_Cmd(USART1, ENABLE);
  68.         
  69.         
  70.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;                 //USART1 TX
  71.          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  72.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;    //復(fù)用推挽輸出
  73.   GPIO_Init(GPIOA, &GPIO_InitStructure);                    //A端口

  74.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;                 //USART1 RX
  75.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //復(fù)用開漏輸入
  76.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  77.   GPIO_Init(GPIOA, &GPIO_InitStructure);                         //A端口
  78. }
  79. /***********************************************************
  80. * 名    稱:void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
  81. * 功    能:串口數(shù)據(jù)打印
  82. * 入口參數(shù):  
  83. * 出口參數(shù):
  84. * 說    明:
  85. * 調(diào)用方法:
  86. **********************************************************/
  87. void PrintCom(USART_TypeDef* USARTx, uint8_t *Data)
  88. {
  89.         
  90.                 while(*Data)
  91.                 {
  92.                         USART_SendData(USARTx, *Data++);    /*發(fā)送單個數(shù)據(jù) */
  93.                         while(USART_GetFlagStatus(USARTx, USART_FLAG_TC)==RESET);/* 檢查指定的USART標(biāo)志位即RESET=1時發(fā)送完成*/
  94.                 }                                                                                                        
  95. }

  96. /***********************************************************
  97. * 名    稱:void RCC_Configuration(void)
  98. * 功    能:配置外設(shè)時鐘
  99. * 入口參數(shù):  
  100. * 出口參數(shù):
  101. * 說    明:
  102. * 調(diào)用方法:
  103. **********************************************************/
  104. void RCC_Configuration(void)
  105. {
  106.   SystemInit();  
  107.   /* Enable USART1, GPIOA, GPIOx and AFIO clocks */
  108. ……………………

  109. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼


所有資料51hei提供下載:
YS-Mini語音識別模塊配套資料(0609).zip (12.96 MB, 下載次數(shù): 123)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:215523 發(fā)表于 2018-9-7 08:29 | 只看該作者
感謝   下來看看

回復(fù)

使用道具 舉報

板凳
ID:509983 發(fā)表于 2019-4-13 14:38 | 只看該作者
請問stm32F103ZET6和LD3320這樣接可以嗎?
回復(fù)

使用道具 舉報

地板
ID:509983 發(fā)表于 2019-4-13 14:39 | 只看該作者
dinel 發(fā)表于 2018-9-7 08:29
感謝   下來看看

請問stm32F103ZET6和LD3320這樣接可以嗎?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 手机在线不卡av | 日本成人片在线观看 | 91视频在线| 久久久久国产一区二区三区四区 | 自拍偷拍精品 | 中文字幕免费视频 | 99国产精品99久久久久久 | 欧美日韩国产精品一区二区 | 91在线最新 | 免费一区二区三区在线视频 | 亚洲va在线va天堂va狼色在线 | 欧美高清成人 | 91资源在线 | 日韩av在线一区二区三区 | 91新视频 | 日本一区二区影视 | 午夜精品一区二区三区在线观看 | 国产精品一区二区视频 | 亚洲福利在线观看 | 国产精品久久久久一区二区三区 | 99久久久国产精品免费消防器 | 自拍偷拍一区二区三区 | 国产一级片在线播放 | 欧美日韩久久精品 | 日韩在线中文字幕 | 国产亚洲精品区 | 欧美精品久久久久久久久久 | 免费午夜电影 | 国产精品久久久久久久久久久久久久 | 三级视频国产 | 老熟女毛片 | 青青草视频网站 | 国产精品久久免费观看 | 日韩在线视频免费观看 | 成人av免费看 | 免费观看毛片 | 国产精品视频一区二区三区四区国 | 人人人艹 | 888久久久| 一区二区av | 天天综合久久 |