OTP单片机调试工具之—单线数据编码
OTP单片机调试工具在实现过程中离不开单线数据的传输,那么使用哪一种方式的数据编码会比较好呢?
我所了解的主要有以下三种:
1.UART(串口),这种方式在单片机和pc之间进行传输都非常常见,效率比较高,但是受标准波特率的条件限制,必须配合相应的晶体才能达到比较高的速率;其实要是单片机与单片机之前进行数据传输,那么可以无视标准波特率限制,可以自定义波特率。
这里用应广单片机为例,用应广的IDE可以生成通信代码。
/*这一段是通过宏定义和预编译,检测在当前时钟下,是否可以实现标准波特率通信*/
System_Clock => 8000000;
FPPA_Duty => _SYS(INC.FPPA_NUM); // Single FPPA = 1, Mult FPPA = 2 or 4/8/...
.errnz FPPA_Duty > 2 // Only for 1 /2 FPPA, not for more FPPAs
Baud_Rate => 115200;
/*
UART_Delay => (System_Clock / FPPA_Duty) / Baud_Rate;
if System_Clock = 8,000.000 Hz
FPPA_Duty = /16
so FPPA_Clock = System_Clock / FPPA_Duty = 500.000 Hz
if Baud_Rate = 19200
so UART_Delay = 500.000 / 19200 = 26.0416...
so match, 26 cycles send one bit. < 0.5%
if Baud_Rate = 38400
so UART_Delay = 500.000 / 38400 = 13.02083...
so match, 13 cycles send one bit. < 0.5%
if Baud_Rate = 56000
? so UART_Delay = 500.000 / 56000 = 8.9285... < 1.0%
if Baud_Rate = 57600
X so UART_Delay = 500.000 / 57600 = 8.6805... : fail
*/
UART_Delay => ( (System_Clock / FPPA_Duty) + (Baud_Rate/2) ) / Baud_Rate;
// + (Baud_Rate/2) : to round up or down
Test_V0 => System_Clock / 1000 * 995;
Test_V1 => UART_Delay * Baud_Rate * FPPA_Duty;
Test_V2 => System_Clock / 1000 * 1005;
#if (Test_V1 < Test_V0) || (Test_V1 > Test_V2)
.echo %Test_V0 <= %Test_V1 <= %Test_V2
.error Baud_Rate do not match to System Clock
#endif
UART_Out BIT PB.0;
UART_In BIT PB.1;
/*实际发送代码*/
static void UART_Send (void)
{
BYTE cnt;
BYTE UART_Data_Out;
UART_Data_Out = A;
// Start Bit
set0 UART_Out; // 1
#if FPPA_Duty == 1
cnt = 8; // 2 ~ 3
.Delay 3; // 4 ~ 6
do
{ // Data Bit * 8
.Delay UART_Delay - 10;
sr UART_Data_Out; // 7
if (CF)
{
nop; // 10
UART_Out = 1; // 1
}
else
{
UART_Out = 0; // 1
.delay 2; // 2 ~ 3
}
} while (--cnt); // 4 ~ 6
.Delay UART_Delay - 5;
#else
.Delay UART_Delay - 4;
cnt = 8; // 2 ~ 3
// Data Bit * 8
do
{
sr UART_Data_Out; // 4 4
swapc UART_Out; // 1
.Delay UART_Delay - 4;
} while (--cnt); // 2, 3
.Delay 2; // 3 ~ 4
#endif
// Stop Bit
set1 UART_Out; // 1
.Delay 2 * UART_Delay - 2;
} // 2
主要是为了能够适配标准波特率,看起来代码不少,实际核心代码不多。如果是自定义波特率,那么会简单很多,只要是时序对得上就好了。这种方式的好处就是效率比较高,但是要求收发双方要时钟同步。
2,使用类1-wire总线协议,实现方式如下

/*1wire 发送*/
void Wire1_Send_Byte(void)
{
byte ucCnt;
ucCnt=8;
while(ucCnt)
{
/*起始位*/
UART_Tx=1;
/*移位*/
src UartTxBuf;
/*根据需要传输的数据输出对应电平*/
swapc UART_Tx;
.delay 6;
/*输出低电平*/
UART_Tx=0;
ucCnt--;
}
}
这种方式是使用了归零码,这种方式的好处就是能够自同步,方便接端进行解码。但是效率不高
3.使用红外遥控编码,其实这种方式和上述类单总线方式很相像,感觉好像是高低电平反过来就是了。

发送实现方式:用这个Wire1_Send_Byte()代码改一下就好了。
以上就是3种常见的单线数据传输方式,可以根据实际需要,选择其中一种方式作为数据传输使用。感谢!
相关文章:
OTP单片机调试工具之—单线数据编码
OTP单片机调试工具在实现过程中离不开单线数据的传输,那么使用哪一种方式的数据编码会比较好呢? 我所了解的主要有以下三种: 1.UART(串口),这种方式在单片机和pc之间进行传输都非常常见,效率比较…...
SWPU 2022 新生赛
webdog1__start if (isset($_GET[web])) {$first$_GET[web];if ($firstmd5($first)) md5 自等 web0e215962017 (md5后也是 0e) 登入后得到提示,robots.txt 访问 f14g.php 返回包里发现 hint > if (isset($_GET[get])){$get$_GET[get];if(!strs…...
Java 基础到进阶企业技巧(二)
在 Java 学习的旅程中,我们逐步探索了其丰富的知识体系,从基础的数据类型、字符串操作,到流程控制、运算符的运用,每一步都为我们构建强大的编程能力奠定基石。同时,了解这些知识在 Java 全栈开发中的应用场景…...
【后端】【django】【related_name】`related_name` 的作用
related_name 的作用 related_name 用于 Django 的 ForeignKey 和 OneToOneField,用于 反向访问 关联模型的数据。 默认情况下,Django 会自动生成一个反向关系的名字,但如果多个外键指向同一个模型,就可能发生命名冲突。related…...
Deepseek-R1大模型微调实战技术深度解析
一、Deepseek-R1架构特性与微调适配性分析 1.1 核心架构创新对微调的影响 Deepseek-R1基于Deepseek-V3-Base架构,通过MoE(Mixture-of-Experts)与MLA(Multi-Head Latent Attention)的协同设计,实现了参数规模与计算效率的平衡。其6710亿参数总量中,每个token仅激活37B参…...
Google最新生图模型Gemini-2.0-Flash-Exp免费用
Google发布新生图模型 Google释放出最新生图模型,在发布说明中提到: 2025年3月12日 在 Gemini-2.0-Flash-Exp 中发布原生图像输出功能 Gemini 2.0 Flash Experimental 模型发布,支持原生图像输出功能。开发者能够使用 Gemini 进行图像输出和…...
leecode695.岛屿的最大面积
跟求岛屿数量的题目差不多,依旧是深度搜索或者广度搜索问题 class Solution { private:int maxAreaOfIsland(vector<vector<int>>& grid,vector<vector<bool>>& visited,int x,int y){if(x<0||x>grid.size()||y<0||y>…...
助力字体管理,规避设计卡顿的得力工具
在设计领域,字体看似平常,却常常在关键时刻“掉链子”,让设计师们头疼不已。面对海量字体库,找到心仪那款宛如大海捞针,字体安装过多还会造成软件卡顿,这些麻烦事儿,频繁与字体打交道的朋友肯定…...
零基础上手Python数据分析 (4):Python数据结构精讲 - 列表、元组、字典、集合
写在前面 回顾一下,在之前的博客中,我们学习了 Python 的基本数据类型(数值、字符串、布尔值)和核心语法(运算符、变量、流程控制、函数、模块)。 现在,我们已经掌握了 Python 编程的基础知识。 接下来,我们将进入数据分析的关键环节: 数据组织。 在数据分析中,数据…...
数统院复试来啦,西电数学与统计学院—考研录取情况
4西安电子科技大学—数学与统计学院—考研录取统计 01、数学与统计学院各个方向 02、24数学与统计学院近三年复试分数线对比 数统院24年院线相对于23年院线增加高达30分,确实增长浮动比较高,接近30分的水平,因此大家更需要好好去努力…...
Windows功能之FTP服务器搭建
一、创作背景 之前有用linux系统搭建过ftp服务器,最近想着用windows系统也顺便搭建一个,看网上有第三方服务软件一键部署,记得windows可以不借助第三方软件就可以搭建,就想顺便操作试试,结果老是连接不上,费…...
leetcode hot100普通动态规划/基础DP
1️⃣1️⃣ 普通动态规划(基础 DP) 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 题解: 动态规划Dynamic Programming ,在观察动态中找到如何规划解题的步骤…...
基于Python的天气预报数据可视化分析系统-Flask+html
开发语言:Python框架:flaskPython版本:python3.8数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 系统登录 可视化界面 天气地图 天气分析 历史天气 用户管理 摘要 本文介绍了基于大数据…...
【鸿蒙开发】Hi3861学习笔记-Visual Studio Code安装(New)
00. 目录 文章目录 00. 目录01. Visual Studio Code概述02. Visual Studio Code下载03. Visual Studio Code安装04. Visual Studio Code插件05. 附录 01. Visual Studio Code概述 vscode是一种简化且高效的代码编辑器,同时支持诸如调试,任务执行和版本管…...
git报错:“fatal:refusing to merge unrelated histories“
新建仓库,克隆本地项目到新仓库,首次同步本地已提交的代码到远程时,报错:"fatal:refusing to merge unrelated histories" 。 报错意思是:致命的:拒绝合并无关的历史。 一、问题背景ÿ…...
前端面试笔试
前端面试笔试 1 相对路径和绝对路径的区别 区别:他们描述文件或目录位置的方式不同 绝对路径:绝对路径是指从系统的根目录开始的完整路径,无论当前工作目录在哪个位置,绝对路径始终指向文件或目录的确切位置。绝对路径适用…...
目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业
根据2025年的最新行业研究和技术演进趋势,结合历史发展轨迹,未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势: 一、算力革命与底层架构优化 核心地位:算力将成为类似“新能源电池”的基础设施,…...
Redis基本命令手册——五大类型
目录 一:基本操作 二:字符串(String) 三:哈希(Hash) 四:列表(List) 五:集合(Set) 六:有序集合(Zset&…...
历年华中科技大学计算机考研复试上机真题
历年华中科技大学计算机考研复试上机真题 2022华中科技大学计算机考研复试上机真题 2021华中科技大学计算机考研复试上机真题 2019华中科技大学计算机考研复试上机真题 在线评测:https://pgcode.cn 八进制 题目描述 输入一个整数,将其转换成八进制数…...
Python----数据分析(Pandas二:一维数组Series,Series的创建,Series的属性,Series中元素的索引与访问)
一、一维数组Series Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。 仅由一组数据也可产生简单的 Series 对象,用值列表生成 Series …...
java数据结构(复杂度)
一.时间复杂度和空间复杂度 1.时间复杂度 衡量一个程序好坏的标准,除了能处理各种异常,还有就是时间效率,当然,对于一些配置好的电脑数据处理起来就是比配置低的高,但从后期发展来看,当数据量足够庞大时&…...
windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC
大家好,我是国货系创始人张云泽,最近不少小伙伴在后台问:“听说Windows协议要到期了?我的电脑会不会变砖?”还有人说:“华为笔记本以后用不了Windows了?鸿蒙系统能用吗?”今天咱们就…...
HTML+CSS基础(了解水平)
html 的介绍 学习目标 能够知道html的作用 1. html的定义 2. html的定义 HTML 的全称为:HyperText Mark-up Language, 指的是超文本标记语言。 标记:就是标签, <标签名称> </标签名称>, 比如: <html></html>、<h1><…...
[设计模式]1_设计模式概览
摘要:设计模式原则、设计模式的划分与简要概括,怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用,后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则(语言无关) 本质原理图 原…...
ClickHouse总体学习
文章目录 一、简介1、OLAP 与 OLTP 的对比2、列式储存的好处3、DBMS 的功能4、多样化引擎5、高吞吐写入能力6、数据分区与线程级并行 二、Explain 查看执行计划三、建表优化1、数据类型2、分区和索引3、表参数4、写入和删除优化 四、常见配置CPU资源内存资源存储 五、ClickHous…...
Elasticsearch集群与日志系统实战部署指南
一、环境规划与初始化配置 1. 服务器资源分配 IP地址部署服务主机名172.25.23.7ES Kafka Zookeeper Kibananode1172.25.23.8ES Kafka Zookeeper Filebeatnode2172.25.23.9Kafka Zookeeper Apache Logstashnode3 系统要求: 配置:4核CPU / 4G…...
SFT数据处理部分的思考
SFT数据及处理的业内共识 1.prompt的质量和多样性远重要于数据量级,微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考:《LIMA:Less Is More for Alignment》 2.合成数据很重要!一般需要通过…...
netsh实现TCP端口转发
服务器:192.168.31.9 端口:56000 客户端:192.168.31.2 端口:5600 客户端(本地端口5600)通过TCP连接服务器的56000端口 PC:192.168.31.5,PC实现客户端和服务器之间56000端口转发 1. …...
数据分布偏移检测:保障模型在生产环境中的稳定性
数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...
leetcode 75.颜色分类(荷兰国旗问题)
题目描述 题目分析 本题是经典的「荷兰国旗问题」,由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的,统计0、1、2的数量然后按顺序赋值,或者手写一个冒泡排序,whatever。 但是在这一题中我们主…...
