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

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单片机调试工具在实现过程中离不开单线数据的传输&#xff0c;那么使用哪一种方式的数据编码会比较好呢&#xff1f; 我所了解的主要有以下三种&#xff1a; 1.UART&#xff08;串口&#xff09;&#xff0c;这种方式在单片机和pc之间进行传输都非常常见&#xff0c;效率比较…...

SWPU 2022 新生赛

webdog1__start if (isset($_GET[web])) {$first$_GET[web];if ($firstmd5($first)) md5 自等 web0e215962017 &#xff08;md5后也是 0e) 登入后得到提示&#xff0c;robots.txt 访问 f14g.php 返回包里发现 hint > if (isset($_GET[get])){$get$_GET[get];if(!strs…...

Java 基础到进阶企业技巧(二)

在 Java 学习的旅程中&#xff0c;我们逐步探索了其丰富的知识体系&#xff0c;从基础的数据类型、字符串操作&#xff0c;到流程控制、运算符的运用&#xff0c;每一步都为我们构建强大的编程能力奠定基石。同时&#xff0c;了解这些知识在 Java 全栈开发中的应用场景&#xf…...

【后端】【django】【related_name】`related_name` 的作用

related_name 的作用 related_name 用于 Django 的 ForeignKey 和 OneToOneField&#xff0c;用于 反向访问 关联模型的数据。 默认情况下&#xff0c;Django 会自动生成一个反向关系的名字&#xff0c;但如果多个外键指向同一个模型&#xff0c;就可能发生命名冲突。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释放出最新生图模型&#xff0c;在发布说明中提到&#xff1a; 2025年3月12日 在 Gemini-2.0-Flash-Exp 中发布原生图像输出功能 Gemini 2.0 Flash Experimental 模型发布&#xff0c;支持原生图像输出功能。开发者能够使用 Gemini 进行图像输出和…...

leecode695.岛屿的最大面积

跟求岛屿数量的题目差不多&#xff0c;依旧是深度搜索或者广度搜索问题 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>…...

助力字体管理,规避设计卡顿的得力工具

在设计领域&#xff0c;字体看似平常&#xff0c;却常常在关键时刻“掉链子”&#xff0c;让设计师们头疼不已。面对海量字体库&#xff0c;找到心仪那款宛如大海捞针&#xff0c;字体安装过多还会造成软件卡顿&#xff0c;这些麻烦事儿&#xff0c;频繁与字体打交道的朋友肯定…...

零基础上手Python数据分析 (4):Python数据结构精讲 - 列表、元组、字典、集合

写在前面 回顾一下,在之前的博客中,我们学习了 Python 的基本数据类型(数值、字符串、布尔值)和核心语法(运算符、变量、流程控制、函数、模块)。 现在,我们已经掌握了 Python 编程的基础知识。 接下来,我们将进入数据分析的关键环节: 数据组织。 在数据分析中,数据…...

数统院复试来啦,西电数学与统计学院—考研录取情况

4西安电子科技大学—数学与统计学院—考研录取统计 01、数学与统计学院各个方向 02、24数学与统计学院近三年复试分数线对比 数统院24年院线相对于23年院线增加高达30分&#xff0c;确实增长浮动比较高&#xff0c;接近30分的水平&#xff0c;因此大家更需要好好去努力&#xf…...

Windows功能之FTP服务器搭建

一、创作背景 之前有用linux系统搭建过ftp服务器&#xff0c;最近想着用windows系统也顺便搭建一个&#xff0c;看网上有第三方服务软件一键部署&#xff0c;记得windows可以不借助第三方软件就可以搭建&#xff0c;就想顺便操作试试&#xff0c;结果老是连接不上&#xff0c;费…...

leetcode hot100普通动态规划/基础DP

1️⃣1️⃣ 普通动态规划&#xff08;基础 DP&#xff09; 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 题解: 动态规划Dynamic Programming ,在观察动态中找到如何规划解题的步骤…...

基于Python的天气预报数据可视化分析系统-Flask+html

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.8数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;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是一种简化且高效的代码编辑器&#xff0c;同时支持诸如调试&#xff0c;任务执行和版本管…...

git报错:“fatal:refusing to merge unrelated histories“

新建仓库&#xff0c;克隆本地项目到新仓库&#xff0c;首次同步本地已提交的代码到远程时&#xff0c;报错&#xff1a;"fatal:refusing to merge unrelated histories" 。 报错意思是&#xff1a;致命的&#xff1a;拒绝合并无关的历史。 一、问题背景&#xff…...

前端面试笔试

前端面试笔试 1 相对路径和绝对路径的区别 区别&#xff1a;他们描述文件或目录位置的方式不同 ‌绝对路径‌&#xff1a;绝对路径是指从系统的根目录开始的完整路径&#xff0c;无论当前工作目录在哪个位置&#xff0c;绝对路径始终指向文件或目录的确切位置。绝对路径适用…...

目前人工智能的发展,判断10年、20年后的人工智能发展的主要方向,或者带动的主要产业

根据2025年的最新行业研究和技术演进趋势&#xff0c;结合历史发展轨迹&#xff0c;未来10-20年人工智能发展的主要方向及带动的产业将呈现以下六大核心趋势&#xff1a; 一、算力革命与底层架构优化 核心地位&#xff1a;算力将成为类似“新能源电池”的基础设施&#xff0c;…...

Redis基本命令手册——五大类型

目录 一&#xff1a;基本操作 二&#xff1a;字符串&#xff08;String&#xff09; 三&#xff1a;哈希&#xff08;Hash) 四&#xff1a;列表&#xff08;List&#xff09; 五&#xff1a;集合&#xff08;Set&#xff09; 六&#xff1a;有序集合&#xff08;Zset&…...

历年华中科技大学计算机考研复试上机真题

历年华中科技大学计算机考研复试上机真题 2022华中科技大学计算机考研复试上机真题 2021华中科技大学计算机考研复试上机真题 2019华中科技大学计算机考研复试上机真题 在线评测&#xff1a;https://pgcode.cn 八进制 题目描述 输入一个整数&#xff0c;将其转换成八进制数…...

Python----数据分析(Pandas二:一维数组Series,Series的创建,Series的属性,Series中元素的索引与访问)

一、一维数组Series Series&#xff1a;一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象&#xff0c;是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。 仅由一组数据也可产生简单的 Series 对象&#xff0c;用值列表生成 Series …...

java数据结构(复杂度)

一.时间复杂度和空间复杂度 1.时间复杂度 衡量一个程序好坏的标准&#xff0c;除了能处理各种异常&#xff0c;还有就是时间效率&#xff0c;当然&#xff0c;对于一些配置好的电脑数据处理起来就是比配置低的高&#xff0c;但从后期发展来看&#xff0c;当数据量足够庞大时&…...

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…...

HTML+CSS基础(了解水平)

html 的介绍 学习目标 能够知道html的作用 1. html的定义 2. html的定义 HTML 的全称为&#xff1a;HyperText Mark-up Language, 指的是超文本标记语言。 标记&#xff1a;就是标签, <标签名称> </标签名称>, 比如: <html></html>、<h1><…...

[设计模式]1_设计模式概览

摘要&#xff1a;设计模式原则、设计模式的划分与简要概括&#xff0c;怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用&#xff0c;后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则&#xff08;语言无关&#xff09; 本质原理图 原…...

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 系统要求&#xff1a; 配置&#xff1a;4核CPU / 4G…...

SFT数据处理部分的思考

SFT数据及处理的业内共识 1&#xff0e;prompt的质量和多样性远重要于数据量级&#xff0c;微调一个 30 b 量级的base model只需要 10 w 量级的数据即可 参考&#xff1a;《LIMA&#xff1a;Less Is More for Alignment》 2&#xff0e;合成数据很重要&#xff01;一般需要通过…...

netsh实现TCP端口转发

服务器&#xff1a;192.168.31.9 端口&#xff1a;56000 客户端&#xff1a;192.168.31.2 端口&#xff1a;5600 客户端&#xff08;本地端口5600&#xff09;通过TCP连接服务器的56000端口 PC&#xff1a;192.168.31.5&#xff0c;PC实现客户端和服务器之间56000端口转发 1. …...

数据分布偏移检测:保障模型在生产环境中的稳定性

数据分布偏移检测:保障模型在生产环境中的稳定性 引言 在机器学习系统从开发环境部署到生产环境的过程中,数据分布偏移问题是影响模型性能的主要挑战之一。当训练数据与生产环境中的数据分布不一致时,即使是经过精心调优的模型也可能表现出明显的性能下降。本文将深入探讨…...

leetcode 75.颜色分类(荷兰国旗问题)

题目描述 题目分析 本题是经典的「荷兰国旗问题」&#xff0c;由计算机科学家 Edsger W. Dijkstra 首先提出。 要想单独解决这道题本身还是很简单的&#xff0c;统计0、1、2的数量然后按顺序赋值&#xff0c;或者手写一个冒泡排序&#xff0c;whatever。 但是在这一题中我们主…...