最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

KT148A語(yǔ)音芯片使用一線串口的使用方法,分為三步調(diào)試

2022-10-15 16:02 作者:清月電子  | 我要投稿

一、簡(jiǎn)介

KT148A是受主MCU控制的,使用的是單線通訊的方式,也就是俗稱(chēng)串口通信,注意不是UART通信,通信的協(xié)議也是非標(biāo)準(zhǔn)的,詳細(xì)的可以看看芯片說(shuō)明書(shū)



二、詳細(xì)說(shuō)明

2.1 我們給出的參考代碼

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

?- 函數(shù)說(shuō)明:一線通數(shù)據(jù)發(fā)送【注意調(diào)試的時(shí)候,用示波器或者邏輯分析儀看一下脈沖寬度】

?- 隸屬模塊:內(nèi)部

?- 參數(shù)說(shuō)明:dat = 待發(fā)送的數(shù)據(jù)

?- 返回說(shuō)明:無(wú) -- 這里對(duì)應(yīng)的就是PA6這個(gè)GPIO? ,不同的MCU,對(duì)于IO口的操作不同,這個(gè)自己理解了

?- 備注:整體的通訊邏輯如下:

1、先把數(shù)據(jù)線DATA,也就是ONELINE,拉低 6ms 后,發(fā)送 8 位數(shù)據(jù),先發(fā)送低位,再發(fā)送高位。

2、使用高電平和低電平比例來(lái)表示每個(gè)數(shù)據(jù)位的值。

3、推薦使用 200us:600us。取值范圍:窄脈沖=[150us--400us]? ? 寬脈沖[500us--1000us]

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

#define IO1_HIGH() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT |=? BIT(6);? ? ?//PA6輸出高電平

#define IO1_LOW() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT &= ~BIT(6);? ? ?//PA6輸出低電平

void oneline_send_one_data(u8 dat)?

{

? ? u8 i = 0 ;

? ? IO1_LOW() ;/*現(xiàn)將總線拉低*/

? ? udelay(5000) ;/*延時(shí)6MS --- 這里就是發(fā)起通訊的起始信號(hào)------注意不同的芯片延時(shí)不一樣,請(qǐng)自行測(cè)試*/

? ? OS_ENTER_CRITICAL();//關(guān)中斷--芯片不同,可能接口不同

? ? for(i=0 ; i<8 ;i++){

? ? ? ? if(dat & 0x01){

? ? ? ? ? ? IO1_HIGH() ;

? ? ? ? ? ? udelay(500);/*延時(shí)600us*/

? ? ? ? ? ? IO1_LOW();

? ? ? ? ? ? udelay(170) ;/*延時(shí)200us*/

? ? ? ? }else{

? ? ? ? ? ? IO1_HIGH() ;

? ? ? ? ? ? udelay(170);/*延時(shí)200us*/

? ? ? ? ? ? IO1_LOW();

? ? ? ? ? ? udelay(500) ;/*延時(shí)600us*/

? ? ? ? }

? ? ? ? dat = dat >> 1 ;/*發(fā)送的時(shí)候,先發(fā)送最高位,再發(fā)送次高位,以此類(lèi)推*/

? ? }

? ? IO1_HIGH() ;/*空閑時(shí)將該腳拉高即可*/

? ? OS_EXIT_CRITICAL();//開(kāi)中斷

? ? /*同時(shí)注意,芯片初始化的時(shí)候,請(qǐng)將信號(hào)腳拉高。*/

}

程序調(diào)用的接口如下:

oneline_send_one_data(0x05);//對(duì)應(yīng)播放第5段聲音?

發(fā)不同的命令,就請(qǐng)對(duì)照詳細(xì)的手冊(cè),有描述的,耐心看看 ,詳細(xì)看看手冊(cè)的章節(jié)三和章節(jié)四


/******************************例程可能出現(xiàn)的疑惑********************************

1、為什么按照例程發(fā)的數(shù)據(jù),沒(méi)反應(yīng)呢?

==》面對(duì)這個(gè)問(wèn)題,應(yīng)該是借助儀器:示波器、邏輯分析儀等等儀器來(lái)測(cè)試你的波形

==》而不是來(lái)問(wèn)我們什么原因,我們也沒(méi)法給出意見(jiàn),最好用儀器看一下,找出問(wèn)題來(lái)


2、為什么程序里面,需要關(guān)中斷、再來(lái)開(kāi)中斷呢?

==》這樣的目的,是為了保證波形的完整性,因?yàn)槟愕?,注意是你的mcu運(yùn)行時(shí)候,可能存在

多種中斷交替,這樣就會(huì)導(dǎo)致在發(fā)送波形的途中,被打斷,導(dǎo)致時(shí)間變長(zhǎng),或者其他

==》這個(gè)就看你具體的程序邏輯了,其實(shí)這樣的問(wèn)題我們也不想回答,這是您應(yīng)該知道的

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


2.2 參考波形圖--邏輯分析儀

注意點(diǎn):

1、起始信號(hào)一定不能低于6ms ,請(qǐng)嚴(yán)格按照這個(gè)去寫(xiě)程序

2、遇到問(wèn)題,第一時(shí)間,請(qǐng)用工具,用工具,不要一開(kāi)始就問(wèn)我們?cè)趺窗l(fā)數(shù)據(jù)了,沒(méi)反應(yīng),很崩潰的

3、另外很多的工程師,可能不習(xí)慣于用邏輯分析儀,都喜歡拿示波器去量。真的實(shí)在是太痛苦了



2.3 關(guān)于芯片待機(jī)5秒自動(dòng)進(jìn)入待機(jī)


1、由于芯片要兼容低功耗的應(yīng)用,所以不得不設(shè)計(jì)一個(gè)低功耗的機(jī)制

2、芯片一旦進(jìn)入空閑,計(jì)時(shí)超過(guò)5秒之后,自動(dòng)待機(jī),功耗為25uA左右。進(jìn)入待機(jī)之后芯片所有的外設(shè)都是關(guān)閉的,包括busy腳也是弱上拉的狀態(tài)

3、進(jìn)入待機(jī)之后,芯片的data腳,設(shè)置的是下降沿喚醒,所以當(dāng)主MCU發(fā)送數(shù)據(jù)的時(shí)候,為什么前面需要6ms的起始信號(hào),很大一部分的原因,是因?yàn)樾酒瑔拘阎蟮秸Wx取一線的數(shù)據(jù),中間需要大概2-3ms的時(shí)間 。所以起始信號(hào)一定要給足6ms




2.4 關(guān)于芯片低功耗的F0指令說(shuō)明


1、如果需要芯片的功耗再低,則需要發(fā)送F0指令,任何狀態(tài)下都可以

2、芯片接收到F0指令之后,就會(huì)進(jìn)入關(guān)機(jī)狀態(tài),功耗維持在1.7uA左右

3、如果需要芯片再次接收指令,必須先將dat信號(hào)拉低40ms,讓芯片被喚醒,再發(fā)送數(shù)據(jù)就可以了

==》這里的主MCU發(fā)送40ms的低電平之后,再緊接著將data腳拉高就可以了

==》此時(shí)如果需要發(fā)指令,就再延時(shí)個(gè)15ms就可以了,合計(jì)也就是65ms左右了



KT148A語(yǔ)音芯片使用一線串口的使用方法,分為三步調(diào)試的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
滨海县| 陆川县| 新乡县| 新野县| 东阿县| 平潭县| 和田市| 大荔县| 旬邑县| 宜州市| 绥德县| 淮阳县| 郴州市| 寿阳县| 永德县| 南安市| 明星| 青川县| 休宁县| 包头市| 鹤岗市| 北辰区| 双鸭山市| 安新县| 成都市| 双鸭山市| 无为县| 苏尼特左旗| 抚州市| 本溪市| 武威市| 太原市| 杂多县| 平阴县| 饶河县| 米林县| 武隆县| 衡水市| 新安县| 万荣县| 阿巴嘎旗|