当前位置: 首页 > news >正文

串口接收数据-控制LED灯

目标

通过串口接收数据,对数据分析,控制8个LED灯按照设定时间闪烁。

  1. 8个LED灯可以任意设计,是否闪烁。
  2. 闪烁时间按ms计算,通过串口发送,可设置1~4,294,967,296ms,也就是4字节数据
  3. 协议自拟,有数据报文头和尾

实现

串口接收8字节数据,2字节头+4字节time+1字节LED+1字节尾
数据协议定义:

765 4 3 210
0x550xA5time[31:0]ctrl[7:0]0xF0

分析到一帧完整数据就可是提取并设置LED闪烁样式。
模块划分:

  1. 串口接收
  2. 串口数据分析
  3. LED控制
  4. 顶层连接

硬件

串口GPIO:

在这里插入图片描述
在这里插入图片描述
LEDGPIO:
在这里插入图片描述

软件

/****************顶层********************/
uart_rx_ctrl_led(Clk,Reset_n,Led,uart_rx    );input Clk;input Reset_n;output wire[7:0]Led;input uart_rx;/****************led控制********************/wire [7:0] ctrl;wire [31:0] time_set;counter_led counter_led(.Clk(Clk),.Reset_n(Reset_n),.Ctrl_data(ctrl),.Time(time_set),.led(Led));
/****************串口接收********************/  wire [7:0]rx_data;wire rx_done;uart_rx uart_rx_in(.Clk(Clk),.Reset_n(Reset_n),.Baund_set(4),.uart_Rx(uart_rx),.Data(rx_data),.Rx_Done(rx_done));
/****************串口处理********************/uart_cmd uart_cmd(.Clk(Clk),.Reset_n(Reset_n),.rx_data(rx_data),.rx_done(rx_done),.ctrl(ctrl),.time_set(time_set));

注意

  1. 数据分析采用——检测缓冲区,不断去检测该缓冲区首尾,是否符合要求。
  2. 在进行时间赋值时,采用 if(tims_ms == time_set)进行清空,不好的地方就是time_ms>time_set时不会进行清空,直到计数溢出重新计到设定值,所以这地方要改成if( time_ms >= time_set )时对time_ms清空。
  3. 对于判断中有数字与变量的判断要养成把数字写在前的习惯,能避免if( time = 10)这种错误,if(10 = time)就会提示编译错误,而第一种会赋值然后条件为真直接运行里面的程序。
http://www.lryc.cn/news/152166.html

相关文章:

  • python面试题合集(一)
  • 论文浅尝 | 利用对抗攻击策略缓解预训练语言模型中的命名实体情感偏差问题...
  • springboot web开发springmvc自动配置原理
  • 发表于《自然》杂志:语音转文本BCI的新突破实现62字/分钟的速度
  • 微软 Turing Bletchley v3视觉语言模型更新:必应搜索图片更精准
  • Ubuntu 22.04 x86_64 源码编译 pytorch-v2.0.1 笔记【2】编译成功
  • IIR滤波器
  • 【QT】使用qml的QtWebEngine遇到的一些问题总结
  • 230902-部署Gradio到已有FastAPI及服务器中
  • Ubuntu本地快速搭建web小游戏网站,公网用户远程访问【内网穿透】
  • 【LeetCode-中等题】199. 二叉树的右视图
  • 【调试经验】Ubuntu22.04 安装和配置MySQL 8.0.34
  • Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上
  • 【自然语言处理】关系抽取 —— GDPNet 讲解
  • 【小沐学NLP】Python使用NLTK库的入门教程
  • Angular安全专辑之三 —— 授权绕过,利用漏洞控制管理员账户
  • 使用Sumo以及traci实现交叉口信号灯自适应控制
  • 自定义类型:结构体、枚举、联合
  • 如何使用ZIP方式安装MySQL:简单、快速、高效的安装方法
  • python嵌套循环
  • 一文速学-让神经网络不再神秘,一天速学神经网络基础(五)-最优化
  • 【AWS实验】 配置中转网关及对等连接
  • 47、springboot 的 国际化消息支持--就是根据浏览器选择的语言,项目上的一些提示信息根据语言的选择进行对应的显示
  • 重要变更 | Hugging Face Hub 的 Git 操作不再支持使用密码验证
  • 为什么删除Windows 11上的Bloatware可以帮助加快你的电脑速度
  • PCL点云处理之计算两条直线间最短连线的端点 (二百零三)
  • 纵行科技与山鹰绿能达成合作,提供物联网资产管理数据服务
  • 【2511. 最多可以摧毁的敌人城堡数目】
  • stm32f1xx单片机拦截中断源代码
  • C++(21):特殊工具与技术