UART通信实现与验证(RS485)

前言

        UART是一种常用的串行通信协议,RS485则是一种用于长距离和抗干扰的物理层标准。结合UART和RS485可以实现可靠的数据传输,特别是在多点通信和长距离应用中。通过合适的硬件连接、软件配置和验证测试,可以确保这一通信系统的稳定性和数据完整性。

正文

一、UART通信实现与验证(RS485)

        1.项目需求

A板通过按键控制B板led灯进行流水灯效果或呼吸灯效果,反过来也可以实现

        2.技术介绍

        RS-485是双向、半双工通信协议,信号采用差分传输方式,允许多个驱动器和接收器挂接在总线上,其中每个驱动器都能够脱离总线。适合远距离传输(最远1200米,最快10MB/s),RS232适合一主机一从机,RS485允许多主机和多从机的连接,抗干扰能力强。        

        RS485工作时,通过差分信号线检测传输到来的电平信号,通常检测该电平信号有专用的RS485收发器芯片,该类芯片可以检测到低至200MV的电平信号,不同于RS232收发器芯片的是该芯片需要有一使能信号进行数据传入/传出使能。在帧结构上于RS232相同,1波特起始位,8波特数据位,1波特停止位。

        因为帧结构上于RS232相同,故利用RS232工程的收发模块,对其简单调整,即可实现RS485通信。完成实验任务还需要按键消抖,呼吸灯,流水灯模块。对接受到的帧数据另外需用一个模块对接收串并处理后的数据进行抽位判断,并将呼吸灯,流水灯显示效果按照判断结果进行选择输出,以上完成实验任务。

        3.顶层架构

        为方便仿真,在连线时调用按键消抖,但是按键直接给到flag上,并未使用按键消抖,如果需要实物验证,可将连线自行连接。

        4.端口描述

clk 时钟(50Mhz)
rst_n 复位按键(低电平有效)
rx 数据接收端口
key_w 按键(流水灯)
key_y 按键(呼吸灯)
tx 数据发送端
re RS485收发器芯片使能信号
led[3:0] led灯输出

二、代码验证

data_led:状态选择模块

module data_led(

	input 				clk		,
	input					rst_n		,
	input					flag_w	,//按键有效信号,持续一个时钟
	input					flag_y	,//按键有效信号,持续一个时钟
	input					led		,//呼吸灯
	input			[3:0]	led_da	,//流水灯
	input 		[7:0]	data		,//收模块处理后的数据
			
	output reg	[3:0] led_out	,//LED选择结果
	output wire  		po_flag	,//发模块使能
	output wire [7:0]	po_data	//发数据	
	
);

reg	    w_en;//流水灯工作输出
reg 	y_en;//呼吸灯工作输出

always@(posedge clk,negedge rst_n)//按键按下后,划分工作状态
begin
	if(rst_n == 0)
		w_en <= 1'b0;
	else
		if(flag_y == 1'b1)//相互清零,避免影响
			w_en <= 1'b0;
		else
			if(flag_w == 1'b1)//按下一次,流水灯,按下2次,led输出清零
				w_en <= ~w_en;
			else
				w_en <= w_en;
end

always@(posedge clk,negedge rst_n)//按键按下后,划分工作状态
begin
	if(rst_n == 0)
		y_en <= 1'b0;
	else
		if(flag_w == 1'b1)//相互清零,避免影响
			y_en <= 1'b0;
		else
			if(flag_y == 1'b1)//按下一次,流水灯,按下2次,led输出清零
				y_en <= ~y_en;
			else
				y_en <= y_en;
end

always@(posedge clk,negedge rst_n)//对收到的数据进行检测
begin
	if(rst_n == 0)
		led_out <= 4'b0000;
	else
		if(data[0] == 1'b1)
			led_out <= led_da;//流水灯
		else
			if(data[1] == 1'b1)//呼吸灯
				led_out <= {led,led,led,led};
			else
				led_out <= 4'b0000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张明阳.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值