当前位置: 首页 > 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字节中存储着接收到的数据

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

http://www.lryc.cn/news/122674.html

相关文章:

  • 2023国赛数学建模D题思路分析
  • linux 学习————LNMP之分布式部署
  • 第八课 双重所有格和不定代词
  • 使用xrdp协议远程桌面控制树莓派,无需公网IP!
  • 数据结构【图的类型定义和存储结构】
  • PHP Smarty如何进行调试和错误处理?
  • 手搓vue3组件_0,打包配置
  • WebAssembly
  • TM4C123库函数学习(2)--- LED闪烁,滴答定时器精准延时
  • Linux: network: tcp: back-off技术
  • 36 | 银行贷款数据分析
  • 计算机网络-物理层(二)- 传输方式
  • 超强台风“杜苏芮”来袭!如何实现安全可靠的通信?
  • 内网隧道—HTTP\DNS\ICMP
  • QT mouseTracking
  • java操作mongdb【超详细】
  • JavaScript函数
  • RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能
  • 母婴即时零售行业数据可视化分析
  • 快速解决IDEA中类的图标变成J,不是C的情况
  • vue学习笔记
  • 难解的bug
  • 人文景区有必要做VR云游吗?如何满足游客出行需求?
  • 【字节跳动青训营】后端笔记整理-1 | Go语言入门指南:基础语法和常用特性解析
  • 3.解构赋值
  • ChatGPT在智能游戏和游戏AI中的应用如何?
  • 【安卓串口通信】
  • 电气测试相关
  • ProsperEx 的野望:借势 RWA 浪潮,构建全新的链上衍生品体系
  • Spring Data JPA 详解