自定义协议——CW32与九齐051f-创新互联

协议内容:

自定协议:该协议分为头部、数据部、尾部三个部分,默认状态为高电平,协议头部为持续4ms低电平,数据部为1-12ms的高电平(分别对应不12个挡位),尾部为持续4ms的低电平。

创新互联致力于互联网网站建设与网站营销,提供网站制作、成都网站建设、网站开发、seo优化、网站排名、互联网营销、成都小程序开发、公众号商城、等建站开发,创新互联网站建设策划专家,为不同类型的客户提供良好的互联网应用定制解决方案,帮助客户在新的全球化互联网环境中保持优势。

接收:识别头部、数据部分、尾部,并通过识别到的协议选择挡位。

示意图

在这里插入图片描述

代码 发送(CW32单片机)

只是把关键函数写出来供大家学习,并没有把整套代码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;
	}

}
数据选挡
#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();			//先拉高,准备发送
	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;
	}

	
}

该协议已经上两个单片机验证过,没有问题。
非常感谢各位的观看!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧

当前题目:自定义协议——CW32与九齐051f-创新互联
文章链接:https://www.cdcxhl.com/article30/djsepo.html

成都网站建设公司_创新互联,为您提供移动网站建设网站策划商城网站微信公众号软件开发面包屑导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设