自定協(xié)議:該協(xié)議分為頭部、數(shù)據(jù)部、尾部三個部分,默認狀態(tài)為高電平,協(xié)議頭部為持續(xù)4ms低電平,數(shù)據(jù)部為1-12ms的高電平(分別對應(yīng)不12個擋位),尾部為持續(xù)4ms的低電平。
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供網(wǎng)站制作、成都網(wǎng)站建設(shè)、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、成都小程序開發(fā)、公眾號商城、等建站開發(fā),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。接收:識別頭部、數(shù)據(jù)部分、尾部,并通過識別到的協(xié)議選擇擋位。
示意圖代碼 發(fā)送(CW32單片機)只是把關(guān)鍵函數(shù)寫出來供大家學(xué)習(xí),并沒有把整套代碼copy過來。
void Send_Protocol()
{if(Protocol_Status)
{if(Time_Send_Protocol >=1){ Protocol_cnt++;
Time_Send_Protocol = 0;
}
if(Protocol_cnt<= FIXED_4MS){//4ms
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
}
else if(Protocol_cnt<= Protocol_time + FIXED_4MS){//4ms + N ms
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
}
else if(Protocol_cnt<= (Protocol_time + 2 * FIXED_4MS)){//4ms + N ms +4ms
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_RESET);
}
else{ HAL_GPIO_WritePin(GPIOC,GPIO_PIN_5,GPIO_PIN_SET);
Protocol_Status = 0;
Protocol_time = 0;
}
}
}
接收(九齊單片機)//直接全程用延時
void Check_Protocol(void){
if(PORTBbits.PB2 == RESET)
{delay_time = 0;
recv_num = 0;
delay_500us();
while(PORTBbits.PB2 != SET)
{ delay_time++;
delay_1ms();
if(delay_time >= 20){ return;
}
}
if(delay_time<2|| delay_time>5)
{ return;
}
while(PORTBbits.PB2 == SET)
{ recv_num++;
delay_1ms();
if(recv_num >= 50){ return;
}
}
delay_time =0;
while(PORTBbits.PB2 != SET)
{ delay_time++;
delay_1ms();
if(delay_time >= 20){ return;
}
}
if(delay_time<2 || delay_time>5)
{ return;
}
}
if(PORTBbits.PB3 == RESET)
{
delay_time = 0;
recv_num = 0;
delay_500us();
while(PORTBbits.PB3 != SET)
{ delay_time++;
delay_1ms();
if(delay_time >= 20){ return;
}
}
if(delay_time<2|| delay_time>5)
{ return;
}
while(PORTBbits.PB3 == SET)
{ recv_num++;
delay_1ms();
if(recv_num >= 50){ return;
}
}
delay_time =0;
while(PORTBbits.PB3 != SET)
{ delay_time++;
delay_1ms();
if(delay_time >= 20){ return;
}
}
if(delay_time<2 || delay_time>5)
{ return;
}
}
//exc
if(recv_num != 0){iic_SwitchSend(recv_num);
recv_num = 0;
}
else{return;
}
}
數(shù)據(jù)選擋#define Gear0 (10)
#define Gear1 (20)
#define Gear2 (30)
#define Gear3 (40)
#define Gear4 (60)
#define Gear5 (80)
#define Gear6 (100)
#define Gear7 (120)
#define Gear8 (140)
#define Gear9 (160)
#define Gear10 (180)
#define Gear11 (250)
void iic_SwitchSend(uint8_t recv){iic_init(); //重新初始化
iic_sdin_set();
iic_sclk_set(); //先拉高,準備發(fā)送
delay_1ms();
switch(recv){case 1:
//Gear0
break;
case 2:
//Gear1
break;
case 3:
//Gear2
break;
case 4:
//Gear3
break;
case 5:
//Gear4
break;
case 6:
//Gear5
break;
case 7:
//Gear6
break;
case 8:
//Gear7
break;
case 9:
//Gear8
break;
case 10:
//Gear9
break;
case 11:
//Gear10
break;
case 12:
//Gear11
break;
default:
break;
}
}
該協(xié)議已經(jīng)上兩個單片機驗證過,沒有問題。
非常感謝各位的觀看!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧