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

【沁恒蓝牙mesh】CH58x USB功能开发记录(三)

本博文主要记录 ,【沁恒蓝牙mesh】CH58x USB功能开发记录(三),数据收发基于寄存器级别解释

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎
  • 📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:沁恒蓝牙mesh二次开发 🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

【沁恒蓝牙mesh】CH58x USB功能开发记录(三)

      • 1. 数据收发寄存器级别解释
        • 1.1 【节点发送数据】
        • 1.2 【节点接收到数据】

【沁恒蓝牙mesh】CH58x USB功能开发记录(一)
【沁恒蓝牙mesh】CH58x USB功能开发记录(二)

1. 数据收发寄存器级别解释

1.1 【节点发送数据】

void USBSendData( uint8_t *SendBuf, uint8_t l)
{memcpy(pEP2_IN_DataBuf,SendBuf,l);   /*将发送数据,复制到 pEP2_IN_DataBuf  这个地址下*/DevEP2_IN_Deal( l );                 /*数据发送*/
}

参考: CH583 技术手册的 17.2.2 章节 设备寄存器描述,关于USB 功能寄存器的描述, CH582 USB Device CherryUSB 这篇博文描述的很详细

每组端点都具有一个控制寄存器 R8_UEPn_CTRL 和发送长度寄存器 R8_UEPn_T_LEN
(n=0/1/2/3/4/5/6/7),用于设定该端点的同步触发位、对 OUT 事务和 IN 事务的响应以及发送数据
的长度等

  • 发送数据时,各个端点准备发送的数据在各自的缓冲区中,准备发送的数据长度是独立设定在 R8_UEPn_T_LEN
    中;
  • 接收数据时,各个端点即将接收到的数据在各自的缓冲区中,但是接收到的数据长度都在 USB 接收长度寄存器
    R8_USB_RX_LEN 中,可以在 USB 接收中断时根据当前端点号区分。
  1. 将要发送的数据赋值到 端点2的 DMA buffer
/*pEP2_IN_DataBuf 是个什么地址???*/
#define R16_UEP2_DMA        (*((PUINT16V)0x40008018)) // endpoint 2 DMA buffer addressuint8_t *pEP2_RAM_Addr;
R16_UEP2_DMA = (uint16_t)(uint32_t)pEP2_RAM_Addr;#define pEP2_IN_DataBuf       (pEP2_RAM_Addr + 64)

image-20230808150306108

  1. 操作寄存器发送数据
void DevEP2_IN_Deal(uint8_t l)
{R8_UEP2_T_LEN = l;R8_UEP2_CTRL = (R8_UEP2_CTRL & ~MASK_UEP_T_RES) | UEP_T_RES_ACK;
}

1.2 【节点接收到数据】

同样的,节点接收到数据时,在端点2的 DMA Buffer 中的前64字节中存储着接收到的数据

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

相关文章:

【沁恒蓝牙mesh】CH58x USB功能开发记录(三)

本博文主要记录 ,【沁恒蓝牙mesh】CH58x USB功能开发记录(三),数据收发基于寄存器级别解释 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页&#xf…...

2023国赛数学建模D题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

linux 学习————LNMP之分布式部署

目录 一、概述 二、LNMP环境部署 三、配置nginx 四、 配置php使nginx能够解析.php 五、配置mysql 六、配置discuz进行登录论坛访问测试 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP,是一种常用的服务器架构。它由以下组件组成: Linux:作…...

第八课 双重所有格和不定代词

系列文章目录 文章目录 系列文章目录前言一、of s 的所有格1、of 有生命的名词 ’s2、of 名词性物主代词3、小结 二、反身代词1、作宾语和介词宾语2、作表语3、作固定惯语 三、相互代词四、指示代词 Such 和 Same 的用法 前言 一、of s 的所有格 1、of 有生命的名词 ’s 2、…...

使用xrdp协议远程桌面控制树莓派,无需公网IP!

远程桌面控制树莓派,我们可以用xrdp协议来实现,它内部使用的是windows远程桌面的协议。我们只需要在树莓派上安装xrdp,就可以在同个局域网下远程桌面控制树莓派。 而如果需要在公网下远程桌面控制树莓派,可以通过cpolar内网穿透&…...

数据结构【图的类型定义和存储结构】

数据结构之图 图的定义和概念图的定义图的术语 图的类型定义图的存储结构数组(邻接矩阵)表示法无向图的邻接矩阵表示法有向图的邻接矩阵表示法网(即有权图)的邻接矩阵表示法 邻接矩阵的ADT定义邻接表(链式)…...

PHP Smarty如何进行调试和错误处理?

欢迎来到PHP Smarty的世界。如果你在这里寻求如何调试和错误处理的方法,那么我可以向你保证,我们会让这个过程尽可能的有趣和轻松。 首先,让我们先来谈谈调试。在Smarty中,你可以使用以下几种方法来进行调试: 使用Sm…...

手搓vue3组件_0,打包配置

打包后引入项目是发现报错: Cannot read properties of null (reading isCE) TypeError: Cannot read properties of null (reading isCE)这个是由于vue版本冲突问题, 这里我引入了自己打包的ui组件库,但是ui组件库中打包进入了自己的vue,那么在此时使用时,如果你引入的自己的组…...

WebAssembly

WebAssembly(简称Wasm)是一种面向Web的二进制指令格式,用于在现代Web浏览器中运行高性能的可移植代码。它是一种跨平台、低级别的虚拟机技术,允许开发者将不同编程语言的代码编译成Wasm格式,然后在Web浏览器中运行。 …...

TM4C123库函数学习(2)--- LED闪烁,滴答定时器精准延时

前言 (1)阅读本文之前,需要先看TM4C123库函数学习(1)— 点亮LEDTM4C123的ROM函数简介keil开发环境搭建篇。 (2)TM4C123是M4的内核,拥有一个24位向下计数的SysTick定时器。&#xff0…...

Linux: network: tcp: back-off技术

当一个包需要重传的时候,会使用 exponential back-off来计算下一次重传的时间。 这个back-off的使用还是相当的广泛:《Adaptive Backoff Synchronization Technique》https://dl.acm.org/doi/pdf/10.1145/74926.74970 The general idea of backoff has …...

36 | 银行贷款数据分析

本文将以银行贷款数据分析为主题,深入探讨如何运用数据科学的方法,揭示银行贷款领域的内在规律和趋势。通过对贷款数据的分析,我们能够洞察不同类型贷款的分布情况、贷款金额的变化趋势,以及借款人的特征和还款情况等关键信息。 通过运用Python编程语言及相关的数据分析工…...

计算机网络-物理层(二)- 传输方式

计算机网络-物理层(二)- 传输方式 串型传输与并行传输 串行传输:是指数据是一个比特一个比特依次发送的,因此在发送端和接收端之间,只需要一条数据传输线路即可 并行传输:是指一次发送n个比特而不是一个比特,因此发送…...

超强台风“杜苏芮”来袭!如何实现安全可靠的通信?

暴雨来袭 超强台风“杜苏芮”是2023年太平洋台风季第5个被命名的台风,在我国东南沿海地区造成了巨大的影响,在7月28日登录福建省晋江市时,“杜苏芮”中心附近最大风力15级,达到了超强台风的等级;福州市区、闽侯、莆田…...

内网隧道—HTTP\DNS\ICMP

本文仅限于安全研究和学习,用户承担因使用此工具而导致的所有法律和相关责任! 作者不承担任何法律和相关责任! HTTP隧道 Neo-reGeorg Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目,目的是: 提高可用性&#xff0…...

QT mouseTracking

在Qt中要捕捉鼠标移动事件需要重写MouseMoveEvent,但是MouseMoveEvent为了不太耗资源在默认状态下是要鼠标按下才能捕捉到。要想鼠标不按下时的移动也能捕捉到,需要setMouseTracking(true)。 如果鼠标跟踪失效(默认),…...

java操作mongdb【超详细】

Java操作 搭建 搭建 依赖 <!--mongodb--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>配置文件 spring:data:mongodb:host…...

JavaScript函数

什么是函数&#xff1f; 在 JavaScript 中&#xff0c;函数是一段被封装起来用于特定任务的可重复使用的代码块。 例如&#xff1a; function logger() {console.log(IT知识一享); }这样就创造了logger()函数&#xff0c;后续可以重复利用这个函数让它输出日志&#xff0c;后…...

RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能

实验介绍&#xff1a; YCSB&#xff08;全称为Yahoo! Cloud Serving Benchmark&#xff09;&#xff0c;该性能测试工具由Java语言编写&#xff08;在之前的MC文章中也提到过这个&#xff0c;如果没看过的读者可以去看看之前MC那一期&#xff09;&#xff0c;主要用于云端或者…...

母婴即时零售行业数据可视化分析

对新晋父母来说&#xff0c;很多母婴用品如同一位贴心的助手&#xff0c;为他们的宝宝提供温暖和呵护。从婴儿床垫到可爱的拼图玩具&#xff0c;每一件用品都是为宝宝的成长和发展量身定制。对于繁忙的父母们而言&#xff0c;这些用品不仅帮助照顾孩子&#xff0c;更是为他们减…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者&#xff1a;来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗&#xff1f;了解下一期 Elasticsearch Engineer 培训的时间吧&#xff01; Elasticsearch 拥有众多新功能&#xff0c;助你为自己…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...