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