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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1868|回復: 13
收起左側

唯創芯片WT588H16-16S芯片一線串口控制,DAC沒有檢測出波形是什么問題,求解

[復制鏈接]
ID:858009 發表于 2021-12-14 13:09 | 顯示全部樓層 |閱讀模式
本帖最后由 qwettyuio 于 2021-12-14 16:48 編輯

#include <reg52.h>
#define UC8 unsigned char
#define UI16 unsigned int
#define one_line_DATA  P1
void Line_1A_WT588H(UI16 USER_DATA)
{
        UC8 i;
        bit B_DATA;
        UC8 num_temp=0;
        UI16 ddata_temp ,pdata_temp;
        ddata_temp = USER_DATA;
        pdata_temp = ddata_temp& 0X00FF;
        ddata_temp>>= 8;
        pdata_temp<<= 8;
        ddata_temp |= pdata_temp;//用戶數據賦值
        num_temp = 16;
        one_line_DATA = 0;
        Delay_10us(500); //延時 5MS
        B_DATA = (bit)(ddata_temp&0X0001);
        for(i=0;i<num_temp;i++)
        {
                if(i==8)
                {
                        one_line_DATA = 1;
                        Delay_10us(200); //延時 2MS
                        one_line_DATA = 0;
                        Delay_10us(500); //延時 5MS
                }
                one_line_DATA = 1; //拉高數據傳輸線,準備傳輸數據
                if(B_DATA==0)
                { /*表示邏輯電平 0*/
                        Delay_10us(20); // 延時 200us
                        one_line_DATA = 0;
                        Delay_10us(60); // 延時 600us
                }
                else
                { /*表示邏輯電平 1*/
                        Delay_10us(60); // 延時 600us
                        one_line_DATA = 0; Delay_10us(20); // 延時 200us
                }
                ddata_temp = ddata_temp>>1;
                B_DATA = (bit)(ddata_temp&0x0001);
        }
        one_line_DATA = 1;
}


原理圖.png
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 15:13 | 顯示全部樓層
你先用我給你的代碼試試,可能的話,監測一下BUSY口是否有信號,然后再考慮 DAC輸出的問題。

P.S. 你如果要連續發送兩條指令的話,根據我的經驗,兩條指令之間應該間隔30ms以上。才能確保兩條指令都被接受并且執行,
                                Line_1A_WT588H(0x0001);     //播放1地址音樂
                                Line_1A_WT588H(0xFFF2);     //循環1地址播放
你這樣寫,很可能會作為噪音被直接拋棄。
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 15:57 | 顯示全部樓層
188610329 發表于 2021-12-14 15:13
你先用我給你的代碼試試,可能的話,監測一下BUSY口是否有信號,然后再考慮 DAC輸出的問題。

P.S. 你如 ...

試用了一下代碼,連接P17引腳LED不斷變化,但是busy引腳沒有變化,一直是高電平
#include <reg52.h>
#define u8 unsigned char
#define u16 unsigned int
#ifndef _WT588_C_
#define _WT588_C_

sbit WT588IO = P1^7;

void Delay25us(u8 DelayTime)
{
        u8 t;
    while(DelayTime--)
    {
                t = 147;
        while (--t);      
        }
}
void   SendByte_WT588(u8 ByteDat)
{
        u8 i;
        WT588IO  = 0;
    Delay25us(200);                //delay 5ms
    WT588IO  = 1;
    for(i=0;i<8;i++)
    {
                Delay25us(8);      //delay 200us
        ByteDat>>= 1;
        WT588IO= CY;       //設置1/0
        Delay25us(16);     //delay 400us
        WT588IO= 0;        //IO低電平
        Delay25us(8);      //delay 200us
        WT588IO= 1;        //IO高電平
     }
}
void  SendOrder_WT588(u16 WTOrder)
{
        SendByte_WT588(WTOrder >> 8);  //發送高八位指令
    Delay25us(80);                 //delay 2ms
    SendByte_WT588(WTOrder);       //發送低八位指令
}
void main()
{
        while(1)
        {
                SendOrder_WT588(0x0010);                               
        }
}
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 16:35 | 顯示全部樓層
不是啊, 我用的是  P17 你應該  sbit 到你的 IO上才對吧? 你實際連接的的是單片機哪個IO?  P01?
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 16:38 | 顯示全部樓層
188610329 發表于 2021-12-14 16:35
不是啊, 我用的是  P17 你應該  sbit 到你的 IO上才對吧? 你實際連接的的是單片機哪個IO?  P01?

P17連接到data端口
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 16:41 | 顯示全部樓層
188610329 發表于 2021-12-14 16:35
不是啊, 我用的是  P17 你應該  sbit 到你的 IO上才對吧? 你實際連接的的是單片機哪個IO?  P01?

這是官方給的控制函數,和以前我使用的STM32一鍵連接JQ8400-FLJQ8900語音模塊不一樣,不知道那一步驟出現了問題
/*-------------------------------------- ;模塊名稱:
Line_1A_WT588H(UI16 USER_DATA) ;
功 能:實現一線串口通信函數 ;
入 參:USER_DATA ;
出 參: ; one_line_DATA
//數據線 ;-------------------------------------*/
#define UC8 unsigned char
#define UI16 unsigned int
#define one_line_DATA P1

void Line_1A_WT588H(uint USER_DATA)
{
        uchar i;
        bit B_DATA;          
        ddata_temp = USER_DATA;
        pdata_temp = ddata_temp& 0X00FF;
        ddata_temp>>= 8;
        pdata_temp<<= 8;
        ddata_temp |= pdata_temp;//用戶數據賦值
        num_temp = 16;
        one_line_DATA = 0;
        Delay_10us(500); //延時 5MS
        B_DATA = (bit)(ddata_temp&0X0001);
        for(i=0;i<num_temp;i++)
        {
                if(i==8)
                {
                        one_line_DATA = 1;
                        Delay_10us(200); //延時 2MS
                        one_line_DATA = 0;
                        Delay_10us(500); //延時 5MS
                }
                one_line_DATA = 1; //拉高數據傳輸線,準備傳輸數據
                if(B_DATA==0)
                { /*表示邏輯電平 0*/
                        Delay_10us(20); // 延時 200us
                        one_line_DATA = 0;
                        Delay_10us(60); // 延時 600us
                }
                else
                { /*表示邏輯電平 1*/
                        Delay_10us(60); // 延時 600us
                        one_line_DATA = 0; Delay_10us(20); // 延時 200us
                }
                ddata_temp = ddata_temp>>1;
                B_DATA = (bit)(ddata_temp&0x0001);
        }
        one_line_DATA = 1;
}
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 16:44 | 顯示全部樓層
那你就要確認,你的 聲音文件又沒有正確燒錄到  Flash 里面了。 如果 Flash 里面空的也是無法播放的。
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 16:46 | 顯示全部樓層
最關鍵的是:
測試的話,要這樣寫……
你之前那樣寫, 不停的在發指令, WT588 壓根沒機會執行指令。

void main()
{
                Delay25us(200);
                Delay25us(200);
                Delay25us(200);
                SendOrder_WT588(0x0010);                                
                while(1);
}
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 16:47 | 顯示全部樓層
188610329 發表于 2021-12-14 16:44
那你就要確認,你的 聲音文件又沒有正確燒錄到  Flash 里面了。 如果 Flash 里面空的也是無法播放的。

官方燒錄進去才發貨給我的,地址是1地址
回復

使用道具 舉報

ID:858009 發表于 2021-12-14 16:50 | 顯示全部樓層
188610329 發表于 2021-12-14 16:46
最關鍵的是:
測試的話,要這樣寫……
你之前那樣寫, 不停的在發指令, WT588 壓根沒機會執行指令。

現在最頂層的就是他們給的一線串口通信函數
回復

使用道具 舉報

ID:624769 發表于 2021-12-14 17:42 | 顯示全部樓層
qwettyuio 發表于 2021-12-14 16:50
現在最頂層的就是他們給的一線串口通信函數

反正,我這邊是可以用的, 你delay25us 里面的步進有沒有根據你單片機實際 速度修改? 我這個147, 是在STC15系列 24MHz 情況下的設置。 你難道也是?
回復

使用道具 舉報

ID:858009 發表于 2021-12-15 09:49 | 顯示全部樓層
188610329 發表于 2021-12-14 17:42
反正,我這邊是可以用的, 你delay25us 里面的步進有沒有根據你單片機實際 速度修改? 我這個147, 是在S ...

不是,修改了延時的
回復

使用道具 舉報

ID:858009 發表于 2021-12-15 09:51 | 顯示全部樓層
188610329 發表于 2021-12-14 17:42
反正,我這邊是可以用的, 你delay25us 里面的步進有沒有根據你單片機實際 速度修改? 我這個147, 是在S ...

我用的是89c51,修改了延時的
回復

使用道具 舉報

ID:624769 發表于 2021-12-15 13:22 | 顯示全部樓層
本帖最后由 188610329 于 2021-12-15 13:28 編輯
qwettyuio 發表于 2021-12-15 09:51
我用的是89c51,修改了延時的

要是實在不行, 你先試試看兩線串口協議能不能驅動? WT588H好像不支持按鍵操作, WT588D還能用按鍵測試一下。方便判斷芯片是否正常工作。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线视频91 | 在线观看av不卡 | 在线精品一区二区三区 | 国产一区二区三区视频 | 成人免费在线观看 | 欧美精品一区二区三区在线 | 久草色播| 日韩美女一区二区三区在线观看 | 久久久久久久久久久久久九 | 国产无人区一区二区三区 | 在线观看成人小视频 | 国产精品激情 | 欧美视频免费在线观看 | 美女爽到呻吟久久久久 | 久久国产精品一区二区 | 欧美日韩精品一区二区三区四区 | 在线观看中文字幕 | 国产www成人 | 国产日本精品视频 | 中文字幕福利视频 | av在线一区二区三区 | 日本爱爱视频 | 日日夜夜天天 | 天天操天天射综合 | 日韩欧美一级精品久久 | 欧美一区二区黄 | 91欧美精品成人综合在线观看 | 奇米影视首页 | 国产 欧美 日韩 一区 | 99精品国自产在线 | 亚洲成网 | 亚洲精品国产综合区久久久久久久 | 午夜视频一区二区 | 毛片一级黄色 | 久久久久国产 | 欧美啪啪 | 国产在线麻豆精品入口 | 欧美日韩高清一区 | 久久国产一区二区三区 | 成人在线观 | 91天堂网 |