PWM:脉冲宽度调制,调节电压为方波。关键参数:占空比、周期。

UART:通用异步收发器。

参与通信的设备:主机host

通信的本质:数据的传递。

通信方式:

        单工:只能单向传递

        半双工:双向传递,但同时刻只能单向。

        全工:同时刻可双向

数据本身以电信号(二进制)方式存储在内存。

并行通信:两个设备间数据线有两根或以上进行数据传输。

关键参数:带宽(数据线个数),频率(每根数据线传输速率)。

串行通信:一位一位电信号传输。

usb统一串行总线。

UART串口:特殊串行通信方式,全双工。异步通信:无时钟线

两根数据线,一根收RXD,一根发TXD。

二者未通信时:高电平。

通信时有个起始位:低电平。

数据位:低位先行:bit0   LSB          bit7     MSB

校验位:奇偶校验

发送方统计数据位中 1 的个数。
② 根据奇/偶规则设置校验位(补 0 或 1 使总数满足奇/偶性)。
③ 接收方重新计算并比对校验位。

停止位:高电平

传输速率:波特率,bit per second   bit/s   每秒传输多少bit,常见:1200 2400 4800 9600 115200

9600 n 8  1 发960字节     n 无校验   e奇校验   o偶校验。

// 同步通信::I2C  半双工:  SDA数据线   SCL时钟线,用时钟线完成数据传输速率同步。

UART串口空闲时高电平(5V)。

不同的高低电平物理表现:

TTL:晶体管逻辑:通常指芯片引脚电压。

I电气电子工程师学会(IEEE),RS232规定 -3 ~  -15高电平, 3  ~ 15低电平

RS485:采用压差:高电平:+7 ~ +12   低电平: -7  ~   -12。双绞线传输远

程序下载:

  

ch340:串口信号转化为usb信号,windows识别串口comn。

UART里有个SBUF寄存器,包括两个缓冲区用于收发数据。

以下是添加注释后的代码,解释每个关键部分的含义:

初始化串口配置

void init_uart(void)
{// 配置串口控制寄存器SCON// 清除SM0和SM1位(模式选择位)SCON &= ~(3 << 6);// 设置为模式1(8位UART,可变波特率)并启用接收SCON |= (1 << 6) | (1 << 4);// 配置电源控制寄存器PCON// 确保SMOD0位为0(帧错误检测禁用)PCON &= ~(1 << 6);// 设置SMOD1位为1(波特率加倍)PCON |= (1 << 7);// 配置定时器1为模式2(8位自动重装)TMOD &= ~(0x0f << 4);TMOD |= (2 << 4);// 设置定时器1的初始值(波特率9600,晶振11.0592MHz)TL1 = 232;TH1 = 232;// 启动定时器1TCON |= (1 << 6);
}

发送单个字符

void send_char(char ch)
{// 将字符写入串口数据缓冲寄存器SBUFSBUF = ch;// 等待发送完成(检测TI标志位)while((SCON & (1 << 1)) == 0);// 清除发送中断标志位SCON &= ~(1 << 1);
}

发送缓冲区数据

void send_buffer(const char *p, unsigned int len)
{// 循环发送缓冲区中的每个字符while(len--){send_char(*p++);}
}

关键点说明

  • 波特率计算:当晶振为11.0592MHz时,定时器1重装值232对应9600波特率(SMOD1=1时加倍)。
  • 模式选择:SCON的SM0和SM1位组合选择串口工作模式(此处为模式1)。
  • 自动重装:定时器1模式2(8位自动重装)适合波特率生成。
  • TI标志:发送完成后需手动清除TI位,否则无法发送下一字节。

定义前加xdata的作用

在嵌入式系统中,xdata是Keil C51编译器中的一个存储类型修饰符,用于指定变量存储在外部RAM(Extended Data Memory)而非内部RAM中。内部RAM容量有限(通常为256字节),而外部RAM可扩展至64KB。通过xdata声明变量,可以避免内部RAM空间耗尽。

具体实现方法

直接使用xdata修饰变量定义:

xdata uint8_t buffer[1024];  // 将1024字节数组分配到外部RAM
xdata int sensor_value;      // 将整型变量分配到外部RAM

注意事项

  • 访问速度:外部RAM的访问速度比内部RAM慢,频繁操作的变量建议保留在内部RAM。
  • 硬件支持:需确保硬件已连接外部RAM芯片,且编译器配置正确(如XDATA段大小设置)。
  • 默认存储类型:未指定存储类型时,编译器可能根据内存模型(如Small/Compact/Large)自动分配,显式使用xdata可强制指定。

其他存储类型对比

  • data:直接寻址的内部RAM(0-127字节),访问最快。
  • idata:间接寻址的内部RAM(128-255字节)。
  • pdata:分页访问的外部RAM(256字节页)。

合理分配变量存储类型可优化性能和资源利用率。

定义前加xdata的作用

在嵌入式系统中,xdata是Keil C51编译器中的一个存储类型修饰符,用于指定变量存储在外部RAM(Extended Data Memory)而非内部RAM中。内部RAM容量有限(通常为256字节),而外部RAM可扩展至64KB。通过xdata声明变量,可以避免内部RAM空间耗尽。

具体实现方法

直接使用xdata修饰变量定义:

xdata uint8_t buffer[1024];  // 将1024字节数组分配到外部RAM
xdata int sensor_value;      // 将整型变量分配到外部RAM

注意事项

  • 访问速度:外部RAM的访问速度比内部RAM慢,频繁操作的变量建议保留在内部RAM。
  • 硬件支持:需确保硬件已连接外部RAM芯片,且编译器配置正确(如XDATA段大小设置)。
  • 默认存储类型:未指定存储类型时,编译器可能根据内存模型(如Small/Compact/Large)自动分配,显式使用xdata可强制指定。

其他存储类型对比

  • data:直接寻址的内部RAM(0-127字节),访问最快。
  • idata:间接寻址的内部RAM(128-255字节)。
  • pdata:分页访问的外部RAM(256字节页)。

合理分配变量存储类型可优化性能和资源利用率。

定义前加xdata的作用

在嵌入式系统中,xdata是Keil C51编译器中的一个存储类型修饰符,用于指定变量存储在外部RAM(Extended Data Memory)而非内部RAM中。内部RAM容量有限(通常为256字节),而外部RAM可扩展至64KB。通过xdata声明变量,可以避免内部RAM空间耗尽。

具体实现方法

直接使用xdata修饰变量定义:

xdata uint8_t buffer[1024];  // 将1024字节数组分配到外部RAM
xdata int sensor_value;      // 将整型变量分配到外部RAM

注意事项

  • 访问速度:外部RAM的访问速度比内部RAM慢,频繁操作的变量建议保留在内部RAM。
  • 硬件支持:需确保硬件已连接外部RAM芯片,且编译器配置正确(如XDATA段大小设置)。
  • 默认存储类型:未指定存储类型时,编译器可能根据内存模型(如Small/Compact/Large)自动分配,显式使用xdata可强制指定。

其他存储类型对比

  • data:直接寻址的内部RAM(0-127字节),访问最快。
  • idata:间接寻址的内部RAM(128-255字节)。
  • pdata:分页访问的外部RAM(256字节页)。

合理分配变量存储类型可优化性能和资源利用率。

定义前加xdata的作用

在嵌入式系统中,xdata是Keil C51编译器中的一个存储类型修饰符,用于指定变量存储在外部RAM(Extended Data Memory)而非内部RAM中。内部RAM容量有限(通常为256字节),而外部RAM可扩展至64KB。通过xdata声明变量,可以避免内部RAM空间耗尽。

具体实现方法

直接使用xdata修饰变量定义:

xdata uint8_t buffer[1024];  // 将1024字节数组分配到外部RAM
xdata int sensor_value;      // 将整型变量分配到外部RAM

注意事项

  • 访问速度:外部RAM的访问速度比内部RAM慢,频繁操作的变量建议保留在内部RAM。
  • 硬件支持:需确保硬件已连接外部RAM芯片,且编译器配置正确(如XDATA段大小设置)。
  • 默认存储类型:未指定存储类型时,编译器可能根据内存模型(如Small/Compact/Large)自动分配,显式使用xdata可强制指定。

其他存储类型对比

  • data:直接寻址的内部RAM(0-127字节),访问最快。
  • idata:间接寻址的内部RAM(128-255字节)。
  • pdata:分页访问的外部RAM(256字节页)。

合理分配变量存储类型可优化性能和资源利用率。

扩展内存有随机数。

上位机 pc控制多个下位机采取总线连接。上位机发送指令,发生应答的是下位机,主从应答。

校验码:末尾字节校验,结束码,主机发送指令格式如下,则从机以相同格式上报结果。

功能位最高位0表示主机发送,1表示从机上传。

crc校验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/88113.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/88113.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/88113.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能如何重塑教育体系:个性化学习的新时代

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;教育的“智能革命”正在发生 教育作为人类社会发展的基石&#xff0c;始终紧随技术进步不断演化。从印刷术带来知识…

【云原生】基础篇

​一、云原生 1.1 本质与核心技术体系​ 云原生&#xff08;Cloud Native&#xff09;是以容器化、微服务、声明式API和动态编排为核心的架构范式&#xff0c;旨在最大化利用云的弹性、可观测性和自动化能力。其技术栈分层如下&#xff1a; ​1.2、云原生核心技术栈​ ​层级…

实时反欺诈:基于 Spring Boot 与 Flink 构建信用卡风控系统

在金融科技飞速发展的今天&#xff0c;信用卡欺诈手段日益高明和快速。传统的基于批处理的事后分析模式已难以应对实时性要求极高的欺诈场景。本文将详细介绍如何利用 Spring Boot 和 Apache Flink 这对强大的组合&#xff0c;构建一个高性能、可扩展的实时信用卡反欺诈系统。 …

通过apache共享文件

有时候&#xff0c;vmware虚拟机的vmware tools总是安装失败&#xff0c;这样就不能在虚拟机和主机之间共享文件。此时可以利用apache通过文件上传和下载共享文件。 通过下面的php文件&#xff0c;虚拟机作为客户端访问此php&#xff0c;可以在虚拟机和主机之间共享文件。当然…

Maven生命周期,测试

测试 Junit入门 单元测试 单元测试&#xff1a;就是针对最小的功能单元(方法)&#xff0c;编写测试代码对其正确性进行测试。 JUnit&#xff1a;最流行的Java测试框架之一&#xff0c;提供了一些功能&#xff0c;方便程序进行单元测试&#xff08;第三方公司提供&#xff09…

H5调试工具vconsole和Eruda对比

VConsole与Eruda对比分析 VConsole和Eruda是两款主流的移动端JavaScript调试工具&#xff0c;它们在功能定位、使用场景和技术实现上有诸多差异。以下从多个维度进行对比&#xff0c;帮助你选择更适合的工具&#xff1a; 一、核心功能对比 功能维度VConsoleEruda基础日志输出…

Java经典编程题

题目 1&#xff1a;斐波那契数列 题目要求&#xff1a;编写一个方法&#xff0c;输入正整数n&#xff0c;输出斐波那契数列的第n项。斐波那契数列的定义是&#xff1a;F(0)0&#xff0c;F(1)1, 当n > 1时&#xff0c;F(n)F(n - 1)F(n - 2)。 答案&#xff1a; public cla…

BUG调试案例五十:“低级”设计BUG案例篇(持续更新中.........)

引言 回头看这些年硬件路,总有一些“低级Bug”一次次地在给我上课。它们不是复杂的架构设计,不是玄妙的信号完整性问题,而是最基础、最应该避免、却又最容易忽略的小细节。 每一次Bug的背后,都是教训,有的甚至让整个项目差点“翻车”。写下这篇文章记录那些“看似简单实…

DeepSeek中的提示库及其用法示例

《DEEPSEEK原生应用与智能体开发实践 图书》【摘要 书评 试读】- 京东图书 为了深入探索DeepSeek提示词样例的丰富内涵&#xff0c;充分挖掘其背后潜藏的无限可能&#xff0c;同时致力于为用户打造更为卓越、便捷且高效的使用体验&#xff0c;DeepSeek官网的API文档匠心独运地…

Node.js特训专栏-实战进阶:7.Express模板引擎选型与使用

&#x1f525; 欢迎来到 Node.js 实战专栏&#xff01;在这里&#xff0c;每一行代码都是解锁高性能应用的钥匙&#xff0c;让我们一起开启 Node.js 的奇妙开发之旅&#xff01; Node.js 特训专栏主页 专栏内容规划详情 Express模板引擎选型与使用全解析&#xff1a;打造动态We…

uniapp评价组件

组件目录 components/Evaluation.vue <template><view class"evaluation-container"><!-- 综合评价 --><view class"evaluation-item" tap"parentTap"><text class"label label-1">综合评价</text&…

SQL Server2022版详细安装教程(Windows)

一&#xff0c;下载SQL Server 可以浏览器自己搜索一下 2、安装 安装前需要先将防火墙和带杀毒软件的先退出关闭掉&#xff08;防止安装不成功&#xff09; 2.1、选择自定义安装 2.2、更改位置进行安装 2.3、等待安装 3、进行安装配置 当安装好后会弹出一个这样的页面 3.1、…

【图像】ubuntu中图像处理

一、环境设置 1、查看视频源 ls /dev/video* 2、查看摄像头的分辨率等参数 v4l2-ctl --device/dev/video0 --list-formats-ext 若未安装v4l-utils sudo apt install v4l-utils 3、测试摄像头能否正常工作 cheese

架构总结记录

1、架构模型解决的共同问题 1.1、高内聚低耦合&#xff1a;解耦外部依赖&#xff0c;分离业务复杂度和技术复杂度等。 1.2、信息孤岛和数据壁垒&#xff1a;单体架构垂直&#xff0c;没有相互调用和复用。逻辑抽象、能力下沉、多系统复用问题 1.3、熵增 2、‌单体架构与分布…

Python: file: encode: ‘gbk‘ codec can‘t encode character ‘\xe5‘ in position

错误 response requests.get(url, timeout5) # 请求一个网页 with open(‘response.txt’, ‘w’) as file: # 打开一个文件 file.write(response.text) # 向文件写入response 提示错&#xff1a; UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xe5’ in po…

PyTorch深度学习框架60天进阶学习计划 - 第59天模型鲁棒性(一):对抗样本生成机理与PGD攻击详解

PyTorch深度学习框架60天进阶学习计划 - 第59天模型鲁棒性&#xff08;一&#xff09;&#xff1a;对抗样本生成机理与PGD攻击详解 &#x1f3af; 第一部分&#xff1a;对抗样本的魔法世界 哈喽各位"反黑客"学员&#xff01;欢迎来到第59天的课程&#xff01;今天我…

kibana和elasticsearch安装

1、elasticsearch 6.8.23 安装包下载地址&#xff1a; Elasticsearch 6.8.23 | Elastic 通过网盘分享的文件&#xff1a;elasticsearch-6.8.23.zip 链接: https://pan.baidu.com/s/1D2SrJ8nVBlqC1QNswmMJXg?pwd1234 提取码: 1234 2、kibana 6.8.23 安装包下载地址&#xff…

vue3 el-table row-class-name 行字体颜色失效

在使用 Vue 3 中的 el-table 组件时&#xff0c;如果你遇到了 row-class-name 属性设置的行颜色失效&#xff0c;并被 el-table 的默认样式覆盖的问题&#xff0c;通常是因为 CSS 优先级或者样式冲突导致的。这里有几个方法可以帮助你解决这个问题&#xff1a; 1. 增加 CSS 优…

【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海

导语&#xff1a; 元宇宙概念虽经历起伏&#xff0c;但其底层支撑技术——信号处理&#xff08;Signal Processing&#xff09;与虚拟/增强现实&#xff08;VR/AR&#xff09; 的融合创新正蓬勃发展。从高保真音效定位、脑机接口信号解析&#xff0c;到实时三维重建与交互渲染&…

VMware 2025安装教程(附安装包)VMware 2025下载详细安装图文教程

文章目录 引言第A部分&#xff1a;vmware虚拟机安装包的获取与准备第1步&#xff1a;下载VMware虚拟机安装程序 第B部分&#xff1a;VMware虚拟机安装步骤第3步&#xff1a;启动安装向导第4步&#xff1a;同意软件许可协议第5步&#xff1a;设定程序安装路径第6步&#xff1a;配…