3.一線通訊協(xié)議
目前芯片支持一線串口通訊協(xié)議,采用的也是高低電平時(shí)間寬度來(lái)確定0或者1 。
3.1 通訊格式
注意:必須高電平在前,低電平在后。
推薦使用 200us:600us。取值范圍:窄脈沖=[150us--400us] 寬脈沖[500us--1000us]
注意使用 3:1 和 1:3 電平比例以保障通訊穩(wěn)定。
注意起始的6ms低電平,初次調(diào)試時(shí),盡量用示波器或者邏輯分析儀看一下,誤差在10%左右都能接受
1、0x00H到0xDFH為聲音地址碼或定義功能碼。
2、0xFE為語(yǔ)音停止碼,發(fā)送該命令可以停止播放語(yǔ)音。
3、編碼之間的間隔須大于20ms
3.2 通訊指令
4.參考例程
/*******************************************************************************
- 函數(shù)說(shuō)明:一線通數(shù)據(jù)發(fā)送【注意調(diào)試的時(shí)候,用示波器或者邏輯分析儀看一下脈沖寬度】
- 隸屬模塊:內(nèi)部
- 參數(shù)說(shuō)明:dat = 待發(fā)送的數(shù)據(jù)
- 返回說(shuō)明:無(wú)
********************************************************************************/
#define IO1_HIGH() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT |= BIT(6);
#define IO1_LOW() JL_PORTA->DIR &= ~BIT(6);JL_PORTA->OUT &= ~BIT(6);
void oneline_send_one_data(u8 dat)
{
u8 i = 0 ;
IO1_LOW() ;/*現(xiàn)將總線拉低*/
udelay(5000) ;/*延時(shí)6MS --- 這里就是發(fā)起通訊的起始信號(hào)*/
CPU_SR_ALLOC();//關(guān)中斷--芯片不同,可能接口不同
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)腳拉高。*/
}
oneline_send_one_data(0x05);//對(duì)應(yīng)播放第5段聲音
4.1通訊舉例F2--循環(huán)播放
void oneline_test_CMD_F2(void){
oneline_send_one_data(0x01) ;
udelay(20) ;/*延時(shí)25ms*/
oneline_send_one_data(0xF2) ;
udelay(20) ;/*延時(shí)25ms*/
} 實(shí)現(xiàn)的效果,就是第一段聲音,循環(huán)播放,不停止。如果需要停止,可以發(fā)送FE指令
4.2 通訊舉例F3--組合播放
void oneline_test_CMD_F3(void){
oneline_send_one_data(0xF3) ;
udelay(20) ;/*延時(shí)25ms*/
oneline_send_one_data(0x01) ;
udelay(20) ;/*延時(shí)25ms*/
oneline_send_one_data(0x02) ;
udelay(20) ;/*延時(shí)25ms*/
oneline_send_one_data(0x03) ;
udelay(20) ;/*延時(shí)25ms*/
} 組合播放第1段、第2段、第3段聲音,依次按照順序播放。如果需要停止,可以發(fā)送FE指令
同時(shí),在組合播放的過(guò)程中,接收到新的組合播放數(shù)據(jù),會(huì)停止當(dāng)前的組合播放,轉(zhuǎn)去播放新的指令
4.3 通訊指令F0描述【超低功耗】
1、專(zhuān)用于芯片進(jìn)入超低功耗,因?yàn)樾酒诓シ沤Y(jié)束之后,會(huì)自動(dòng)進(jìn)入待機(jī)狀態(tài),功耗維持在25uA 。
2、如果需要芯片的功耗再低,則需要發(fā)送F0指令,任何狀態(tài)下都可以
3、芯片接收到F0指令之后,就會(huì)進(jìn)入關(guān)機(jī)狀態(tài),功耗維持在1.7uA左右
4、如果需要芯片再次接收指令,必須先將dat信號(hào)拉低40ms,讓芯片被喚醒,再發(fā)送數(shù)據(jù)就可以了
4.4 通訊細(xì)節(jié)注意事項(xiàng)
1、控制MCU上電之后,第一時(shí)間就要將通訊IO,也就是ONELINE腳設(shè)置為高電平輸出
2、盡量和KT148A芯片的通訊之間,串1K的電阻,來(lái)適配不同的電平
3、芯片的2腳PB9,在播放的時(shí)候,電壓大概是3.1V左右 。一旦進(jìn)入空閑狀態(tài),此IO會(huì)變成2.8V左右
因?yàn)樾酒瑑?nèi)部有一個(gè)空閑進(jìn)入低功耗待機(jī)的機(jī)制。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
455文章
50714瀏覽量
423142 -
通訊協(xié)議
+關(guān)注
關(guān)注
10文章
273瀏覽量
20351 -
串口控制
+關(guān)注
關(guān)注
0文章
26瀏覽量
9861
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論