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

STM32——CAN协议

文章目录

  • 一.CAN协议的基本特点
    • 1.1 特点
    • 1.2 电平标准
    • 1.3 基本的五个帧
    • 1.4 数据帧
  • 二.数据帧解析
    • 2.1 帧起始和仲裁段
    • 2.2 控制段
    • 2.3 数据段和CRC段
    • 2.4 ACK段和帧结束
  • 三.总线仲裁
  • 四.位时序
  • 五.STM32CAN控制器原理与配置
    • 5.1 STM32CAN控制器介绍
    • 5.2 CAN的模式
    • 5.3 CAN框图
  • 六 手册寄存器部分讲解
    • 6.1 DBF冻结功能和TTC时间戳
    • 6.2 ABOM自动离线管理和AWUM自动唤醒
    • 6.3 NART自动重传,RFLM锁定模式和TXFP报文发送优先级的判断方法
    • 6.4 波特率设置
    • 6.5 发送邮箱
    • 6.6 接收FIFO
    • 6.7 验收筛选器
  • 七.CAN的结构体设置讲解
    • 7.1 结构体总结
    • 7.2 初始化结构体
    • 7.3 发送结构体
    • 7.4 接收结构体
    • 7.5 筛选器结构体
  • 八.CAN的原理图和接线

一.CAN协议的基本特点

1.1 特点

在这里插入图片描述

1.2 电平标准

总结就是显性电平是0,隐性电平是1,很多单元设备挂在主设备上时,主单元是相当于总线,其他单元只要有一个输出0,总线就显示0,只要其他单元全部输出1,总线就是1

在这里插入图片描述

1.3 基本的五个帧

这里最重要的是数据帧,也是最复杂的
在这里插入图片描述

1.4 数据帧

串口的一帧率是10-11位,起始位,数据位8位(一字节),(校验位),停止位,而CAN的一帧是七个段组成的,如下图所示,帧起始就是跟串口起始位一样,仲裁段是表示优先级,也就是ID,控制段如下图,一帧数据段最多发送8字节(64位),CRC段就是检查上面的所有段有没有错误,ACK表示收到了正确的段,帧结束就是相当于串口的停止位。

在这里插入图片描述

二.数据帧解析

2.1 帧起始和仲裁段

帧起始是一位显性电平0,然后到11位的仲裁段(看蓝色区域,高低电平看ID号,高位在前,低位在后,这里ID11位的话,高7位是不能都是隐形电平1),然后仲裁段后面跟了一个RTR远程请求位0或者1和一个IDE标识符选择请求位0(这里没有显示出来,因为在控制段里面了),RTR如果是0就是数据帧,数据帧的意思就是后面的数据段是有数据的,如果是1,表示这是一个远程帧,远程帧的意思就是后面的数据段是不存在的,DLC控制段也是0的,远程帧用于请求其他节点发送数据帧。上面说的仲裁位都是标准格式,如果需要扩展,在仲裁位的基础下,把原来的RTR替换成SRR替代远程请求位1,IDE变成扩展标识符1。
在这里插入图片描述

2.2 控制段

标准格式下,IDE就是上面说的,在控制段里面为0,然后就是R0,发送的话必须是0,接受的话可以是1,再加上控制段DLC(0—8位),扩展格式下,先r1和r0两个保留位,也是发送必须是0,接受可以是1,再加上DLC控制端(0—8位)。
在这里插入图片描述

2.3 数据段和CRC段

(1).数据段的标准格式和扩展格式是一样的都是0-64位,然后数据段是从最高位(MSB),开始输出的,跟串口不一样,串口是低位(LSB)先输出,而CAN是高位先输出的。

(2).CRC段也是标准格式和扩展格式一致都是15位加上一位CRC界定符(用于分隔的位),CRC计算方法就是帧起始+仲裁段+控制端+数据段,最后校验得到这个。

在这里插入图片描述

2.4 ACK段和帧结束

(1).ACK段的标准格式和扩展格式是一致的,ACK段分为ACK槽和ACK界定,发送单元发给接受单元的数据没有错后(CRC检测没有错误以后),发送单元会接受到接受单元发送的发送单元ACK段11,发送单元接受到了接受单元发的ACK后,会有一个响应,就是接受单元ACK段0。

(2).帧结束的标准格式和扩展格式是一样的,由于7个位的1组成。
在这里插入图片描述

三.总线仲裁

(1).必须同时两个或者两个以上的单元发送数据给主单元,才能进行仲裁(优先级),在总线空闲时,最先发送的单元获得发送权,或者同时发送时,则连续输出0(ID)多的单元,则优先发送,如果ID一样,则比较RTR和SRR等位。

(2).例如下图,单元1和单元2同时发送,单元1在红色位置时发送1,而单元2还是发送0,所以,单元1从下一位开始就进入接受状态,单元2优先发送。
在这里插入图片描述

四.位时序

(1).位时序就是设置波特率(传输速度),位速率就是一个发送单元发送每秒的位数叫做位速率(传输速度),位速率又分成四个段(如下图一),CAN协议把每个数据位(数据位就是例如串口里面那个起始位,数据位什么的)都分解成了四段,每个段又由若干个Tq的最小时间单位构成,然后我们想设置波特率的话,就要知道位时间(传输每位的时间),想设置位时间的话,就要知道波特率,位时间=1/波特率。

(2).四个段如图二进行解析。

(3).同步段就是有多个连接在总线上的单元通过此段进行时序调整来同时发送和接受数据,时序都是1到0的一个下降沿,或者0到1的一个上升沿,如图三,这些跳变作为时间基准,用于进行时钟同步和数据位的采样,为1Tq。

(4).传播时间段就是总线上的信号传播延迟,接收单元的输入延迟和发送单元的输出延迟,这个传播时间段的时间为总线上的信号传播延迟,接收单元的输入延迟和发送单元的输出延迟的时间的和的2倍,通常是1—8Tq。

(5).相位缓冲段1的作用是当信号边沿不能被包含于同步段中时,可以用它来进行补偿,通常为1-8Tq。

(6).相位缓冲段2的作用就是各个单元以独立时钟工作时,细微的时钟累计起来就会造成误差,它的作用就可以吸收这个误差。可以通过相位缓冲段加减SJW(SJW名为再同步补偿宽度,用于时钟频率偏差,传送延迟等各个单元有同步误差,SJW可以补充此误差的最大值,SJW不属于这四个段的,为1—4Tq)来吸收误差,SJW加大以后允许误差加大,但是通信速度降低,相位缓冲段2通常为2—8Tq。

(7).在STM32上面传播时间段和相位缓冲段1是加在一起的BS1,然后相位缓冲段2是BS2,就只有这两个时间。

(8).图四是位时序的构成,是假设以1位=10Tq的构成,这个采样时间的加大或者减少的最大值就是SJW,也就是SJW可以调节采样点。

(9).我们只需要设置传播时间段,相位缓冲段1,相位缓冲段2和SJW的值,剩下的都是硬件自动去完成。

图一

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

图二
在这里插入图片描述

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

五.STM32CAN控制器原理与配置

5.1 STM32CAN控制器介绍

对于STM32F407过滤器组有28个,STM32F103就有14个。
在这里插入图片描述

5.2 CAN的模式

(1).CAN的模式分为工作模式,测试模式和调试模式,工作模式又分为三个模式,如图一,一开始就需要初始化模式,初始化后,设置正常模式(CAN控制器既可以向总线发也可以接收总线的数据),就可以开始工作了,睡眠模式主要用来降低功耗用的。

(2).测试模式的静默模式是指在STM32的CAN控制器中,静默模式通常是指CAN控制器只接收数据而不发送数据。在静默模式下,CAN控制器仍然能够接收总线上的数据帧,但它不主动发送数据,如图二,发送端一直都处于1的状态。

(3).在图三中,测试模式的环回模式可以往总线上面发送数据,但是总线发送数据过来不能接收,也就是他只能发送数据不能接收,然后怎么知道发送成功了呢,它内部有形成环路,可以检测把发送的数据,最后在接收端看有没有发送成功。

(4).最后在图四中,是环回静默模式,总线上不能发数据给它,它也不能接收总线上的数据,只能自己给自己发送,用来测试,用的很少。

图一
在这里插入图片描述

图二
在这里插入图片描述
图三
在这里插入图片描述
图四
在这里插入图片描述

5.3 CAN框图

(1).下图一中,在STM32F103里面只有互联型产品才有两个CAN,一个是主CAN,另一个是从CAN,其他的只要有一个主CAN,但是在STM32F407里面就有主从CAN。

(2).在图二中,主从CAN都有自己的内核(红色圈),也有各自的主从发送邮箱(蓝圈)和各自的主从接收FIFO(黄圈),都是相互独立的,互不影响,筛选器又称过滤器,STM32F407和STM32F103互联型的才有28个,两个主从CAN是共用一个过滤器的(绿圈),每个CAN的发送邮箱一共是有3个,发送报文的优先级可以使用软件进行控制,还可以记录发送时间,然后每个CAN拥有两个3级深度的接收FIFO,可以使用过滤功能只接收或者不接受某些ID号的报文,可以配置成自动重发,不支持使用DMA进行数据收发。

(3).在图中右下角写了一句话,CAN的开始滤波器编号n是通过写入CAN FMR寄存器的CAN2SB[5:0]配置,这个n是指,比如n是2,那你滤波器就从编号为2到27的硬件过滤器来匹配和过滤CAN消息,过滤器的使用范围并不包括编号为0和1的过滤器。

(4).CAN的内核就是设置那些工作模式什么什么等等,然后我们把需要发的报文发到发送邮箱存着,等到总线空闲就开始发送,有多个单元的话,就根据优先级进行发送,然后就是我们的接受FIFO,总线发送给接受FIFO的数据要结果筛选器(滤波器)才能存到接受FIFO里面,如果总线有很多很多数据要发送,我们节点只要接受某一类的信息数据,这个筛选器就可以筛选掉,就不需要全部收到接受FIFO里面在进行软件筛选。

(5).然后最重要的一点就是如果你只使用从CAN控制器,那也要使能主控制器的时钟,因为是由主CAN控制的。

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

六 手册寄存器部分讲解

6.1 DBF冻结功能和TTC时间戳

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

6.2 ABOM自动离线管理和AWUM自动唤醒

在这里插入图片描述

6.3 NART自动重传,RFLM锁定模式和TXFP报文发送优先级的判断方法

(1).在下图中的RFLM锁定模式,如果不锁定,每个CAN控制器有六个报文,在六个报文满了以后,他会继续发,0,1,2,3,4,5,他会把0给覆盖了。
(2).然后就是下图的TXFP,报文发送优先级判断,比如发送邮箱0,1,2,我们先存把要发的东西先存进0,再存1,再存2邮箱,然后存进来的ID号是0的优先级最高,然后到2,在到1邮箱,这时候,我们可以控制TXFP选择是先存进来的先发送还是看ID优先级发送。
在这里插入图片描述

6.4 波特率设置

(1).BS1就是下图的TS1,然后如果写2就等于2+1(Tq),BS2就等于下图的TS2,也是+1。
(2).一个数据位的时间时间如下图,Tplk=1/f,这里挂载在stm32f103的APB1,由于预分频系数为1,所以时钟为32Mhz。

(3).N就是一个数据位的时间T1bit。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
配置的流程,如下图
在这里插入图片描述

6.5 发送邮箱

(1.)下图手册的黄线是ID号,也就是STID,然后IDE是标识符选择,选择使用标准标识符11位还是扩展标识符29位,EXID对扩展标识符写的,这里没有使用,就不需要使用扩展标识符,对标识符寄存器中的CAN_TIxR中的TMIDxR_TXRQ置1,这样子邮箱发完数据后,会进行硬件清0。
在这里插入图片描述
在这里插入图片描述

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

6.6 接收FIFO

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

在这里插入图片描述

在这里插入图片描述

6.7 验收筛选器

(1).STM32F4有28组筛选器(滤波器),STM32F103有14个组筛选器,每组筛选器有2个32位寄存器,每个寄存器可以过滤一个ID号,STM32F103最多就可以滤掉28个ID号。

(2).在图一中,过滤的方法有两种,一种是标识符列表模式,就是要接收的报文列成一个表,要求报文ID与列表中的某一个标识符完全完全相同都可以接收,,它设置5—7组的ID,然后你发的5—7组的ID,正好与接收的要求一样,就可以了,如果6组不一样,就只接收5和7;另一种是掩码模式,意思就是接收报文设置几个关键字,例如设置高四位是1111剩下的是xxxxxxx什么的,只要你高四位是1111,就可以接收。

(3).筛选长度,每个筛选器组由2个32位寄存器组成,然后每个筛选器组可以设置成一个32位筛选器或者两个16位筛选器,然后,在图二中,这一个32位筛选器或者两个16位筛选器和标识符列表模式跟掩码模式又搭配成四种工作模式。

(4).一个32位筛选器和两个16位的筛选器的标识符掩码模式,比如输入的ID号是10101…,然后我们想要10101是关键字的话,就掩码为11111,然后后面的配置为0,就是不需要管后面,关键字就是前面的10101,如图三。

(5).两个32位的筛选器的标识符列表模式,,2个寄存器存储的都是要筛选的ID(这里因为一个筛选器组使用32位时就只使用了一个寄存器,所以这里两个寄存器就是两个筛选器组),它只包含2个要筛选的ID值,然后例如筛选器组0和筛选器组1的筛选的ID是6和7的话对应的是6和7就筛选成功,最后在存储进来接收FIFO里面。

图一
在这里插入图片描述

图二
在这里插入图片描述

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

七.CAN的结构体设置讲解

7.1 结构体总结

(1).初始化结构体就是设置波特率,工作模式,每个位有多长,构成。

(2).发送及接收结构体设置发送邮箱和接收报文FIFO。

(3).筛选器结构体可以设置筛选器过滤那些报文。

在这里插入图片描述

7.2 初始化结构体

(1).在图一中是初始化结构体全部的初始化。

(2).在图二中的参数是工作模式,从上往下分别是正常模式,环回模式,静默模式,环回静默模式。

(3).SJW是在文章四目录里面有记录,是再同步补偿宽度,设置1-4Tq,如图三。

(4).BS1也是文章目录四记录,参数如图四,计算波特率公式也在目录六的6.4。

(4).

图一
在这里插入图片描述
图二
在这里插入图片描述
图三
在这里插入图片描述
图四
在这里插入图片描述
图五
在这里插入图片描述

7.3 发送结构体

(1).图一是发送结构体的成员。

(2).想要发送数据时,可以调用图二的函数,第一个参数是选择使用哪个CAN(主从CAN),然后发送的报文就是第二个参数——结构体成员,然后发送数据时,它会存进去邮箱里面,然后在哪个邮箱空闲时,就先存进去哪个邮箱,返回值就是告诉你存进去了哪个邮箱里面——0,1,2邮箱,然后还有一给发送状态的函数,如图四,第一个参数是选择主从CAN,第二个参数是查找哪个邮箱,哪个邮箱就是图二函数的返回值进行查找,如果成功了,这个函数会返回返回值成功或者失败(图四中)。

(3).然后发送结构体的StdId就是标准标识符ID号,ExtId在手册上是扩展标识符ID号,但是这里的结构体ExtId是手册上的标准标识符ID号和扩展标识符ID号加在一起了,一共29位,然后IDE是选择是结构体StdId还是ExtId,在图三中是IDE的参数配置,从上到下是:标准标识符,扩展标识符和标准标识符+扩展标识符。

(4).RTR就是选择是数据帧还是远程帧(具体详解见目录二的2.1),然后图五从上到下的参数分别是数据帧和远程帧。

图一

在这里插入图片描述

图二
在这里插入图片描述
图三
在这里插入图片描述
图四
在这里插入图片描述
图五
在这里插入图片描述

7.4 接收结构体

(1).图一是接收结构体的成员

(2).如果想要接收报文,就使用图二这个函数,第一个参数选择主从CAN,第二个参数就是选择FIFO的号—0或者1,然后接收的报文就是第三个参数——结构体成员,接收结构体比发送结构体多了一个FMI结构体成员,FMI存储了筛选器的编号,表示是本报文是是经过哪个筛选器存储进来接收FIFO的。

(3).然后怎么知道是哪个FIFO里面有数据呢,就用图三的函数。

图一
在这里插入图片描述
图二
在这里插入图片描述
图三
在这里插入图片描述

7.5 筛选器结构体

(1).图一是筛选器结构体的成员。

(2).图二是筛选器结构体的初始化函数。

(3).在CAN_FxR1和CAN_FxR2寄存器中,结构体成员CAN_FilterIdHight,CAN_FilterIdLow,CAN_FilterMaskIdHight和,CAN_FilterMaskIdLow分别对应图四的红,黑,黄,绿。

(4).图五是剩下的结构体成员的参数设置。

图一
在这里插入图片描述
图二
在这里插入图片描述
图四
在这里插入图片描述

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

八.CAN的原理图和接线

这里我们的TJA1050是收发器,如果板子上面没有,需要自己买一个,这里我使用的是STM32f103的正点原子战舰板,需要将跳线帽PA11与CAN_RX,PA12与CAN_TX连接。

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

相关文章:

STM32——CAN协议

文章目录 一.CAN协议的基本特点1.1 特点1.2 电平标准1.3 基本的五个帧1.4 数据帧 二.数据帧解析2.1 帧起始和仲裁段2.2 控制段2.3 数据段和CRC段2.4 ACK段和帧结束 三.总线仲裁四.位时序五.STM32CAN控制器原理与配置5.1 STM32CAN控制器介绍5.2 CAN的模式5.3 CAN框图 六 手册寄存…...

数据结构-如何巧妙实现一个栈?逐步解析与代码示例

文章目录 引言1.栈的基本概念2.选择数组还是链表?3. 定义栈结构4.初始化栈5.压栈操作6.弹栈操作7.查看栈顶和判断栈空9.销毁栈操作10.测试并且打印栈内容栈的实际应用结论 引言 栈是一种基本但强大的数据结构,它在许多算法和系统功能中扮演着关键角色。…...

web前端之拖拽API、vue3实现图片上传拖拽排序、拖放、投掷、复制、若依、vuedraggable

MENU vue2html5原生dom原生JavaScript实现跨区域拖放vue2实现跨区域拖放vue2mousedown实现全屏拖动,全屏投掷vue3element-plusvuedraggable实现图片上传拖拽排序vue2transition-group实现拖动排序原生拖拽排序 vue2html5原生dom原生JavaScript实现跨区域拖放 关键代…...

第11章 GUI Page403~405 步骤三 设置滚动范围

运行效果: 源代码: /**************************************************************** Name: wxMyPainterApp.h* Purpose: Defines Application Class* Author: yanzhenxi (3065598272qq.com)* Created: 2023-12-21* Copyright: yanzhen…...

【Spring Security】打造安全无忧的Web应用--使用篇

🥳🥳Welcome Huihuis Code World ! !🥳🥳 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 🥳🥳Welcome Huihuis Code World ! !🥳🥳 一.Spring Security中的授权是…...

体验一下 CodeGPT 插件

体验一下 CodeGPT 插件 0. 背景1. CodeGPT 插件安装2. CodeGPT 插件基本配置3. (可选)CodeGPT 插件预制提示词原始配置(英文)4. CodeGPT 插件预制提示词配置(中文)5. 简单验证一下 0. 背景 看到B站Up主 “wwwzhouhui” 一个关于 CodeGPT 的视频,感觉挺有意思&#…...

深度学习 | 基础卷积神经网络

卷积神经网络是人脸识别、自动驾驶汽车等大多数计算机视觉应用的支柱。可以认为是一种特殊的神经网络架构,其中基本的矩阵乘法运算被卷积运算取代,专门处理具有网格状拓扑结构的数据。 1、全连接层的问题 1.1、全连接层的问题 “全连接层”的特点是每个…...

[字符编码]windwos下使用libiconv转换编码格式(二)

在http://t.csdnimg.cn/PLUuz笔记中实现了常用编码格式转换的功能,但这还是一个demo。因为代码中向libiconv库函数传递的字符串是存放在堆空间中的(我也是从网上找例子测试,是否一定要开辟堆空间存放还有待考证),如果一次性转换的字节数很巨大的话,就会导致内存空间不足,进而引…...

textile 语法

1、文字修饰 修饰行内文字 字体样式textile 语法对应的 XHTML 语法实际显示效果加强*strong*<strong>strong</strong>strong强调_emphasis_<em>emphasis</em>emphasis加粗**bold**<b>bold</b>bold斜体__italics__<i>italics</i…...

【快速开发】使用SvelteKit

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…...

【docker笔记】docker常用命令

1、帮助启动类命令 1.1 启动、重启、查询当前状态、停止 systemctl start docker systemctl stop docker systemctl restart docker systemctl status docker1.2 设置开机启动 systemctl enable docker1.3 查看docker概要信息 docker info1.4 查看docker帮助文档 docker -…...

API 接口怎样设计才安全?

设计安全的API接口是确保应用程序和数据安全的重要方面之一。下面是一些设计安全的API接口的常见实践&#xff1a; 1. 身份验证和授权&#xff1a; 使用适当的身份验证机制&#xff0c;如OAuth、JWT或基本身份验证&#xff0c;以确保只有经过身份验证的用户可以访问API。实施…...

网站被CC攻击了怎么办?CC攻击有什么危害

网络爆炸性地发展&#xff0c;网络环境也日益复杂和开放&#xff0c;同时各种各样的恶意威胁和攻击日益增多&#xff0c;其中网站被CC也是常见的情况。 CC攻击有什么危害呢&#xff1f; 被CC会导致&#xff1a; 1.访问速度变慢&#xff1a;网站遭受CC攻击后&#xff0c;由于…...

Docker - 镜像 | 容器 日常开发常用指令 + 演示(一文通关)

目录 Docker 开发常用指令汇总 辅助命令 docker version docker info docker --help 镜像命令 查看镜像信息 下载镜像 搜索镜像 删除镜像 容器命令 查看运行中的容器 运行容器 停止、启动、重启、暂停、恢复容器 杀死容器 删除容器 查看容器日志 进入容器内部…...

要参加微软官方 Copilot 智能编程训练营了

GitHub Copilot 是由 GitHub、OpenAI 和 Microsoft 联合开发的生成式 AI 模型驱动的。 GitHub Copilot 分析用户正在编辑的文件及相关文件的上下文&#xff0c;并在编写代码时提供自动补全式的建议。 刚好下周要参加微软官方组织的 GitHub Copilot 工作坊-智能编程训练营&…...

Python入门学习篇(五)——列表字典

1 列表 1.1 定义 ①有序可重复的元素集合 ②可以存放不同类型的数据 ③个人理解:类似于java中的数组1.2 相关方法 1.2.1 获取列表长度 a 语法 len(列表名)b 示例代码 list2 [1, 2, "hello", 4] print(len(list2))c 运行结果 1.2.2 获取列表值 a 语法 列表名…...

React尝鲜

组件 React的组件就是一个js函数&#xff0c;函数内部return一个由jsx语法创建的html代码片段。 //MyComp.js export default function MyComp(){return (<h1>我是新组件MyComp</h1>) } 在需要引入组件的地方import导入组件&#xff0c;并放在相应位置 //App.js…...

锯齿云服务器租赁使用教程

首先登陆锯齿云账号 网盘上传数据集与代码 随后我们需要做的是将所需要的数据集与代码上传到网盘&#xff08;也可以直接在租用服务器后将数据集与代码传到服务器的硬盘上&#xff0c;但这样做会消耗大量时间&#xff0c;造成资源浪费&#xff09; 点击工作空间&#xff1a;…...

HarmonyOS和OpenHarmony的区别

1.概要 众所周知&#xff0c;鸿蒙是华为开发的一款分布式操作系统。因为开发系统&#xff0c;最重要的是集思广益&#xff0c;大家共同维护。为了在IOS和Android之间生存&#xff0c;鸿蒙的茁壮成长一定是需要开源&#xff0c;各方助力才能实现。   在这种思想上&#xff0c;…...

Redis Stream消息队列之基本语法与使用方式

前言 本文的主角是Redis Stream&#xff0c;它是Redis5.0版本新增加的数据结构&#xff0c;主要用于消息队列&#xff0c;提供了消息的持久化和主备复制功能&#xff0c;可以让任何客户端访问任何时刻的数据&#xff0c;并且能记住每一个客户端的访问位置&#xff0c;还能保证…...

制造行业定制软件解决方案——工业信息采集平台

摘要&#xff1a;针对目前企业在线检测数据信号种类繁多&#xff0c;缺乏统一监控人员和及时处置措施等问题。蓝鹏测控开发针对企业工业生产的在线数据的集中采集分析平台&#xff0c;通过该工业信息采集平台可将企业日常各种仪表设备能够得到数据进行集中分析处理存储&#xf…...

[python]用python实现对arxml文件的操作

目录 关键词平台说明一、背景二、方法2.1 库2.2 code 关键词 python、excel、DBC、openpyxl 平台说明 项目Valuepython版本3.6 一、背景 有时候需要批量处理arxml文件(ARXML 文件符合 AUTOSAR 4.0 标准)&#xff0c;但是工作量太大&#xff0c;阔以考虑用python。 二、方…...

pdf 在线编辑

https://smallpdf.com/edit-pdf#rapp 参考 https://zh.wikihow.com/%E5%B0%86%E5%9B%BE%E5%83%8F%E6%8F%92%E5%85%A5PDF...

自然语言处理(NLP):理解语言,赋能未来

目录 前言1 什么是NLP2 NLP的用途3 发展历史4 NLP的基本任务4.1 词性标注&#xff08;Part-of-Speech Tagging&#xff09;4.2 命名实体识别&#xff08;Named Entity Recognition&#xff09;4.3 共指消解&#xff08;Co-reference Resolution&#xff09;4.4 依存关系分析&am…...

FastAPI使用loguru时,出现重复日志打印的解决方案

首先看图&#xff0c;发现每个日志都被打印了3条。其实这个和uvicorn日志打印的设计有关&#xff0c;在uvicorn中有多个logger&#xff0c;分别是uvicorn、uvicorn.error、uvicorn.access 而LOGGING默认有一个属性propagate&#xff0c;这个属性为True时&#xff0c;子日志记录…...

构建每个聚类的profile和deletion_mean特征

通过summarize_clusters函数构建每个聚类的protein[cluster_profile]和protein[cluster_deletion_mean]特征。目的是把extra_msa信息反映到msa中。 集成函数数据处理流程&#xff1a; sample_msa ->make_masked_msa -> nearest_neighbor_clusters -> summarize_clu…...

Milvus数据一致性介绍及选择方法

1、Milvus 时钟机制 Milvus 通过时间戳水印来保障读链路的一致性&#xff0c;如下图所示&#xff0c;在往消息队列插入数据时&#xff0c; Milvus 不光会为这些插入记录打上时间戳&#xff0c;还会不间断地插入同步时间戳&#xff0c;以图中同步时间戳 syncTs1 为例&#xff0…...

异常处理和单元测试python

一、实验题目 异常处理和单元测试 二、实验目的 了解异常的基本概念和常用异常类。掌握异常处理的格式、处理方法。掌握断言语句的作用和使用方法。了解单元测试的基本概念和作用。掌握在Python中使用测试模块进行单元测试的方法和步骤。 三、实验内容 编程实现如下功能&a…...

蓝牙物联网在汽车领域的应用

I、蓝牙的技术特点 ​ 1998 年 5 月&#xff0c;瑞典爱立信、芬兰诺基亚、日本东芝、美国IBM 和英特尔公司五家著名厂商&#xff0c;在联合拓展短离线通信技术的标准化活动时提出了蓝牙技术的概念。蓝牙工作在无需许可的 2.4GHz 工业频段 (SIM)之上(我国的频段范围为2400.0~248…...

用23种设计模式打造一个cocos creator的游戏框架----(二十二)原型模式

1、模式标准 模式名称&#xff1a;原型模式 模式分类&#xff1a;创建型 模式意图&#xff1a;用原型实例指定创建对象的种类&#xff0c;并且通过复制这些原型创建新的对象 结构图&#xff1a; 适用于&#xff1a; 1、当一个系统应该独立于它的产品创建、构成和表示时 2、…...

paddle 55 使用Paddle Inference部署嵌入nms的PPYoloe模型(端到端fps达到52.63)

Paddle Inference 是飞桨的原生推理库,提供服务器端的高性能推理能力。由于 Paddle Inference 能力直接基于飞桨的训练算子,因此它支持飞桨训练出的所有模型的推理。paddle平台训练出的模型转换为静态图时可以选用Paddle Inference的框架进行推理,博主以前都是将静态图转换为…...

自动化测试工具-Selenium:WebDriver的API/方法使用全解

我们上一篇文章介绍了Selenium的三大组件&#xff0c;其中介绍了WebDriver是最重要的组件。在这里&#xff0c;我们将看到WebDriver常用的API/方法&#xff08;注&#xff1a;这里使用Python语言来进行演示&#xff09;。 1. WebDriver创建 打开VSCode&#xff0c;我们首先引…...

如何通过蓝牙串口启动智能物联网?

1、低功耗蓝牙(BLE)介绍 BLE 技术是一种低成本、短距离、可互操作的鲁棒性无线技术&#xff0c;工作在免许可的 2,4 GHZ 工业、科学、医学(Industrial Scientific Medical&#xff0c;ISM)频段。BLE在设计之初便被定位为一种超低功耗(Ultra Low Power&#xff0c;ULP)无线技术&…...

Linux---基础操作命令

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…...

uniapp怎么动态渲染导航栏的title?

直接在接口请求里面写入以下&#xff1a; 自己要什么参数就写什么参数 本人仅供参考&#xff1a; this.name res.data.data[i].name; console.log(名字, res.data.data[i].name); uni.setNavigationBarTitle({title: this.name}) 效果&#xff1a;...

【机器学习】决策树

参考课程视频&#xff1a;https://www.icourse163.org/course/NEU-1462101162?tid1471214452 1 概述 样子&#xff1a; 2 分裂 2.1 分裂原则 信息增益 信息增益比 基尼指数 3 终止 & 剪枝 3.1 终止条件 无需分裂 当前节点内样本同属一类 无法分裂 当前节点内…...

[node] Node.js的全局对象Global

[node] Node.js的全局对象Global 什么是全局对象 & 全局变量全局对象与全局变量全局变量-- __filename全局变量-- __dirname全局函数-- setTimeout(cb, ms)全局函数-- clearTimeout(t)全局函数-- setInterval(cb, ms)全局变量-- consoleconsole 方法概览 全局变量-- proces…...

完整的 Meteor NPM 集成

在Meteor中&#xff0c;你只能使用包内的模块。你不能直接将模块与流星应用一起使用。此软件包解决了该问题 文章目录 源码下载地址安装定义软件包使用软件包在 Meteor 方法中使用 npm 模块的示例应用程序接口异步实用程序Async.runSync&#xff08;函数&#xff09;Meteor.sy…...

智能优化算法应用:基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于骑手优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.骑手优化算法4.实验参数设定5.算法结果6.…...

解决 MATLAB 遗传算法中 exitflg=4 的问题

一、优化问题简介 以求解下述优化问题为例&#xff1a; P 1 : min ⁡ p ∑ k 1 K p k s . t . { ∑ k 1 K R k r e q l o g ( 1 α k ∗ p k ) ≤ B b s , ∀ k ∈ K p k ≥ 0 , ∀ k ∈ K \begin{align} {P_1:}&\mathop{\min}_{\bm{p}}{ \sum\limits_{k1}^K p_k } \no…...

云卷云舒:云原生业务应用成熟度模型

笔者最近学习了信通院发布的《云原生应用成熟度的评估模型》&#xff0c;做如下解读&#xff1a; 一、概述 云原生业务应用成熟度模型从企业业务应用基础设施域、应用研发域以及服务治理域等三个能力域二十个过程域综合评估企业业务应用在弹性、高可用、自愈性、可观测性以及…...

STM32的以太网外设+PHY(LAN8720)使用详解(5):MAC及DMA配置

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册1 MAC及DMA配置 1.1 使能ETH时钟 stm32的ETH外设挂载在AHB1总线上&#xff0c;位于RCC_AHB1ENR的bit25-bit27&#xff1a; 相关语句如下&#xff1a; RCC_AHB1PeriphClockCmd(RCC_AHB1…...

GitHub、Gitee、Gitlab共用一个SSH密钥配置

目录 1. 说明2. 生成ssh2-1. 设置全局邮箱和用户名2-2. 生成全局ssh 3. Github、Gitee配置ssh3-1. Github配置3-2. Gitee配置 1. 说明 由于我的Github、Gitee、Gitlab用的邮箱不同&#xff0c;向不同的平台提交代码时都需要验证密码&#xff0c;非常麻烦所以配置了一个共用的S…...

ClickHouse(19)ClickHouse集成Hive表引擎详细解析

文章目录 Hive集成表引擎创建表使用示例如何使用HDFS文件系统的本地缓存查询 ORC 输入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表 查询 Parquest 输入格式的Hive 表在 Hive 中建表在 ClickHouse 中建表 查询文本输入格式的Hive表在Hive 中建表在 ClickHouse 中建表 资料…...

用C求斐波那契数列-----(C每日一编程)

斐波那契数列: 斐波那契数列是指这样一个数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89……这个数列从第3项开始 &#xff0c;每一项都等于前两项之和。 递推…...

在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器

在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器 背景 ExoPlayer与Media3的能力结合&#xff0c;为Android应用程序播放多媒体内容提供了强大的解决方案。在本教程中&#xff0c;我们将介绍如何设置带有Media3的ExoPlayer来支持使用M3U8 URL进行直播流。此外&#x…...

持续集成交付CICD:Jira 远程触发 Jenkins 实现更新 GitLab 分支

目录 一、实验 1.环境 2.GitLab 查看项目 3.Jira新建模块 4. Jira 通过Webhook 触发Jenkins流水线 3.Jira 远程触发 Jenkins 实现更新 GitLab 分支 二、问题 1.Jira 配置网络钩子失败 2. Jira 远程触发Jenkins 报错 一、实验 1.环境 &#xff08;1&#xff09;主机 …...

基于SSM的面向TCP_IP的网络互联实验平台

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SSM的面向TCP和IP的网络互联实验平台…...

【IDEA】try-catch自动生成中修改catch的内容

编辑器 --> 文件和代码模板 --> 代码 --> Catch Statement Body...

2024 十大AI预测

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...