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

杰发科技AC7840——SENT数据解析及软件Sent发送的实现

0. 测试环境

AC7840官方Demo板;

图莫斯0503

DSlogic U2Basic

使用引脚    输出脚:PB1    时钟:PB2,其他引脚可以不初始化,不接线

1. 数据解析

以下是SENT数据的格式(1tick以3us为例):

  1. 最小脉冲周期为12个时钟节拍=36us
  2. 每个脉冲,低电平持续时间最少为4个时钟节拍=12us
  3. 数据脉冲最低脉冲周期为12个时钟节拍/36us(对应半字节值0)
  4. 数据脉冲最低脉冲周期为27个时钟节拍/81us(对应半字节值15)
  5. Sync 同步脉冲,固定的56Ticks
  6. Status/Com 状态及通讯字段,12~27Ticks,即1个Nibble(4bit)
  7. Data 数据段,12~162Ticks,即1~6个Nibble
  8. CRC 校验字段,12~27Ticks,即1个Nibble
  9. Pause 暂停脉冲 12-768TICKs,早期的SENT协议无此字段或者一个周定长度TCKS,SENT2010之后,部分通讨此功能可以动态条件TICKS的个数,实现整个SENT协议是同一个固定长度TICKS

逻辑分析仪测试发送数据0符合上述数据

发送数据1如下所示

发送数据2如下所示

发送数据3如下所示

发送数据15如下所示

综上所述,主要区别在数据帧的高电平长度。

以下是发送0123456的数据格式,可以看到,数据位的长度为(21+3*N)

同步脉冲:格式固定为15uS+152uS=167uS的数据

2. SPI数据结构

测试在110K波特率的情况下,SPI发送一个位的时间为1uS。

以此为基准生成Sent的数据帧

SPI生成Sent数据

可以看到上面和我们用图莫斯发出来的波形一模一样。

最后一个FF是用来拉高电平,否则第一个从高到低的数据出不来。

可以看到,其中从F0开始是数据位,到第28个数据FE是数据位,后面是每个脉冲必须的4个tick的低电平,即12us

以下是0-F的校验码

发送2个字节

    while (1){g_spiTxBuff1[0] = 0;g_spiTxBuff1[1] = 0x3;for (int i = 0; i < 18; i++){g_spiTxBuff1[i + 2] = 0xff;}g_spiTxBuff1[20] = 0;g_spiTxBuff1[21] = 0x1;g_spiTxBuff1[22] = 0xff;g_spiTxBuff1[23] = 0xff;g_spiTxBuff1[24] = 0xf0;g_spiTxBuff1[25] = 0;g_spiTxBuff1[26] = 0x1f; // 00011111后5位参与数据位高电平g_spiTxBuff1[27] = 0xff; // 参与数据位高电平g_spiTxBuff1[28] = 0xfe; // 参与数据位高电平g_spiTxBuff1[29] = 0x00;g_spiTxBuff1[30] = 0x03;g_spiTxBuff1[31] = 0xff;g_spiTxBuff1[32] = 0xff;g_spiTxBuff1[33] = 0xf8;g_spiTxBuff1[34] = 0x00;g_spiTxBuff1[35] = 0x0f;g_spiTxBuff1[36] = 0xff;SPI_DRV_MasterTransfer(SPI_INSTANCE, g_spiTxBuff1, g_spiRxBuff1, 37); /*! SPI通信 */OSIF_TimeDelay(100);}

能识别到,就是校验码还需要再优化下

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Node.js基础04】包的理解与使用
  • 如何使用 API list 极狐GitLab 容器镜像仓库中的 tag?
  • SVN文件夹没有图标(绿钩子和红感叹号)
  • 【C# WInForm】将TextBox从输入框设置为文本框
  • Nginx笔记(一)
  • 在Mac M1上面使用Dockerfile打x86_64镜像
  • nng协议nni_taskq_sys_init(void) 对nni_taskq_systq 初始化
  • Python从0到100(四十三):数据库与Django ORM 精讲
  • LeetCode 129, 133, 136
  • 鸿蒙界面开发
  • Redis 主从搭建
  • 过滤出List集合的元素是Person对象,过滤出每个元素非null的name字段得到String类型的集合
  • vue侦听器(Watch)精彩案例剖析一
  • Redission中的Lua脚本写法、理解
  • Python面试题:Python中的单例模式及其实现
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • express.js的介绍及使用
  • IP路由与转发
  • JAVA 学习IO流
  • js如何打印object对象
  • leetcode388. Longest Absolute File Path
  • Magento 1.x 中文订单打印乱码
  • python3 使用 asyncio 代替线程
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • vue数据传递--我有特殊的实现技巧
  • Web Storage相关
  • 高性能JavaScript阅读简记(三)
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 扑朔迷离的属性和特性【彻底弄清】
  • 巧用 TypeScript (一)
  • 写给高年级小学生看的《Bash 指南》
  • 一些css基础学习笔记
  • 译自由幺半群
  • 应用生命周期终极 DevOps 工具包
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​【已解决】npm install​卡主不动的情况
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • ![CDATA[ ]] 是什么东东
  • #android不同版本废弃api,新api。
  • #数据结构 笔记一
  • $ is not function   和JQUERY 命名 冲突的解说 Jquer问题 (
  • ${factoryList }后面有空格不影响
  • (2024.6.23)最新版MAVEN的安装和配置教程(超详细)
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二十六)Java 数据结构
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks