CAN 简介

2023-05-16

1. 目的
本文主要介绍一部分 CAN 协议层 。
2. CAN 简介
这里的内容参考的是 1991.9 的 2.0 版本的官方 CAN 规格书 。
2.1 概述
CAN (控制器局域网) 是一种串行通讯协议 ,传输速度可达 1Mbit/s 。总线由单一可双向信号传送的通道组成 ,但此通道的物理层在协议层中未定义 ,可使用诸如差分线 、光缆等实现通信 ,其是多主机控制 。
CAN 的地址范围由识别符定义 ,标准格式有 11 个识别符 ,扩展格式有 29 个识别符 。
总线有两种逻辑值 :"显性”和“隐性”。这两种同时传送时 ,总线传送的是 “显性”,通常我们用逻辑 0 代表 “显性”,逻辑 1 代表 “隐性”。
对于 CAN ,报文传输由以下 4 种帧类型表示和控制 :
(1) 数据帧 :将数据从发送器发至接收器 ,数据帧优先级高于远程帧
(2) 远程帧 :发至总线 ,请求具有同一识别符的数据帧
(3) 错误帧 :任何单元检测到错误就发出错误帧
(4) 过载帧 :为前后的数据帧 / 远程帧之间提供一附加延时
2.2 数据帧
在这里插入图片描述
图 1 CAN 数据帧
如图 ,这是一帧数据帧 ,包含了帧起始 、仲裁域 、控制域 、数据域 、CRC 域 、应答域和帧结束 。
2.2.1 帧起始 (SOF)
由一个单独的“显性”位组成 。注意 :只有总线空闲才允许发送此信号 。
2.2.2 仲裁域
仲裁域包括识别符和远程发送请求位 (RTR) 。
(1) 标准格式中 :仲裁域由 11 位识别符和 RTR 位组成 。识别符位由 ID28~ID18 。如图2 。
(2) 扩展格式中 :仲裁域包括 29 位识别符 、SRR 位 、IDE 位 RTR 位 。识别符由 ID28~ID0 。
如图 3 。
这些识别符中最高七位必须不能全是 “隐性”。
RTR 位为远程发送请求位 ,在数据帧里为 “显性”,远程帧里为 “隐性”。
SRR 位为替代远程请求位 ,是一个 “隐性”位 。代替标准帧 RTR 位 (标准帧优先于扩展帧) 。
IDE 位为识别符扩展位 ,在标准帧里为 “显性”(此时在控制域) ,在扩展帧里为 “隐性”。
在这里插入图片描述
图 2 标准帧的仲裁域和控制域
在这里插入图片描述
图 3 扩展帧的仲裁域和控制域
2.2.3 控制域
由 6 位组成 ,如图 3 ,DLC 为数据长度 。其余皆为 “显性”。
2.2.4 数据域
数据帧允许 0~8 Byte ,最小单位为 Byte 。
2.2.5 CRC 域
由 CRC 序列与 CRC 界定符组成 ,如图 4 。 CRC 序列 15 位 ,CRC 界定符是一单独的 “隐性”位 。
在这里插入图片描述
图 4 CRC 域
2.2.6 应答域 (ACK 域)
由 2 个位组成 ,分别为应答间隙 (ACK SLOT) 和应答界定符 (ACK DELIMITER) 。在应答域里 ,发送端发送两个 “隐性”位 。
当接收端接收到有效报文 ,接收端就会在应答间隙 (ACK SLOT) 期间向发送端发送一 “显性”位以示应答 (即发送 ACK 信号) 。
在这里插入图片描述
图 5 应答域
应答间隙 :所有接收到匹配 CRC 序列的接收端会在应答间隙期间用一 “显性”的位写入发送端的 “隐性”位来做出应答 。
应答界定符 :必定为一 “隐性”位 。
2.2.7 帧结束
由7个 “隐性”位组成 。
2.3 远程帧
远程帧由帧起始 、仲裁域 、控制域 、CRC 域 、应答域 、帧结尾 。
远程帧与数据帧不同之处在于 :远程帧 RTR 位是 “隐性”的 ,且没有数据域故此数据长度代码 DLC 数值可为 0~8 ,因为其无意义 。
2.4 错误帧
由两个不同的域组成 ,第一个域是用不同节点提供的错误标志 (ERROR FLAG) 的叠加 。第二个域是错误界定符 ,如图 6 。
在这里插入图片描述
图 6 错误帧格式
为了正确终止错误帧 ,“错误被动”的节点要求总线至少有长度为 3 个位时间的总线空闲 。
有两种形式错误标志 ,如下 :
(1) 主动错误标志 :由 6 个连续的 “显性”位组成 。
(2) 被动错误标志 :由 6 个连续的 “隐性”位组成 ,除非被其他节点 “显性”位重写 。
检测到错误条件的主动错误节点通过发送主动错误标志指示错误 ,错误标志的形式破坏了从帧起始到 CRC 界定符的位填充规则 ,或者破坏了 ACK 域或帧结尾场的固定形式 。所有其他节点由此检测到错误条件并同时其中一部分发送错误标志 。“显性”位的序列由此导致了个别节点发送的不同的错误标志叠加在一起 。这个序列的总长度最小为 6 位 ,最长为 12 位 。
检测到错误的被动错误节点尝试发送被动错误标志指示错误 。开始被动错误标志后 ,“被动错误”的节点等待 6 个相同极性的连续位 。当此 6 个相同的位被检测到 ,被动错误标志发送完成 。
错误界定符 :包括 8 个 “隐性”位 。错误标志传送以后 ,节点就发送 “隐性”位并一直监视总线出现 “隐性”位 ,然后发送其他 7 个 “隐性”位 。
2.5 过载帧
由两个域组成 :过载标志和过载界定符 。
有三种情况会引发过载标志传送 :
(1) 接收端内部情况 (此接收端对下一个数据帧或远程帧要有一延时) 。
(2) 在间歇的第一和第二字节检测到一个 “显性”位 。
(3) 如果 CAN 节点在错误界定符或过载界定符的第 8 位 (最后一位) ,采样到一 “显性”位 ,节点会发送一个过载帧 ,错误计数器不增加 。
情况 1 引发的过载帧只允许起始于所期望的间歇的第一个位时间 ,情况 2 和情况 3 引发的过载帧应起始于所检测到 “显性”位之后的位 。
过载标志 :由 6 个 “显性”的位组成 。其所有形式与主动错误标志一样 。
过载界定符 :与错误界定符一样 。
在这里插入图片描述
图 7 过载帧格式
2.6 帧间空间
数据帧 / 远程帧与先行帧 (无论那种帧类型) 的隔离是通过帧间空间实现的 。
帧间空间包括间歇 、总线空闲这两个域 。如果 “被动错误”的节点已作为前一报文的发送端 ,帧空间还包括了挂起传送的域 ,如图 8 和图 9 。
在这里插入图片描述
图 8 帧间空间 (无挂起传送)
在这里插入图片描述
图 9 帧间空间 (有挂起传送)
间歇 :包括 3 个 “隐性”位 。间歇期间 ,所有节点不可传送数据帧或远程帧 (过载帧需注意第二种情况) 。如果有报文等待发送且节点在间歇第三位采集到 “显性”位 ,则此位被解释为帧的起始 。
总线空闲 :总线空闲是阿金任意 。若在其他报文发送期间 ,有报文被挂起 ,则会在间歇之后第一位发送 。
挂起传送 :在下一个报文开始传送或者总线空闲之前发出 8 个 “隐性”的位跟随在间歇的后面 。
2.7 仲裁与优先权
总线空闲时 ,任何节点都可以传送报文 ,任何节点都可以接收报文 (多播) ,具有较高优先权的报文可获得总线访问权 。(注意 :由于有报文滤波 ,即对于识别符有掩码 ,)
仲裁即在多个节点同时传送报文时 ,针对总线访问冲突的解决方法 。仲裁期间 ,每一个节点都对发送位的电平与被监控的总线电平进行比较 ,电平相同 ,则这个单元可以继续发送 ,如果不一致 ,则该节点仲裁失败 ,必须退出发送状态 。
2.8 编码
位流编码 :数据帧与远程帧的帧起始 、仲裁域 、控制域 、数据域 、CRC 序列 ,发送端只要检测到位流里有 5 个连续相同值的位 ,便自动在位流里插入一互补位 (即与连续相同值反相的逻辑电平) ,其余的 CRC 界定符 、 应答域和帧结尾还有错误帧和过载帧都不填充 。要注意 :填充的位在解析时要去掉 。
2.9 错误处理
有以下五种错误类型 (不会相互排斥) :
(1) 位错误 :除了在仲裁域的填充位流期间 (即等仲裁域结束) 或应答域的应答间隙期间发送 “隐
性”位和发送被动错误标志期间 ,其余时间如果发送值与监视值不一致时 ,则此位时间检测到一个位错误 。
(2) 填充错误 :如果需要位填充的信息中检测到连续 6 个相同的值 ,则出现填充错误 。
(3) CRC 错误 :如果接收端计算的 CRC 序列与发送端发送的 CRC 序列不符合 ,发生 CRC 错误
(4) 形式错误 :当一个固定形式的位域含有 1 或多个非法位,检测到形式错误
(5) 应答错误 :只要应答域应答间隙不为 “显性”,检测到应答错误
2.9.1 故障界定
每个节点状态可能为以下三个状态 :
(1) 错误主动 :正常参与总线通讯并可发出主动错误标注
(2) 错误被动 :可参与总线通讯 ,但只能发送被动错误标志 ,发送后 ,在下一次发送前处于等待
状态 (见挂起发送) 。
(3) 总线关闭 :不允许对总线有任何影响
界定节点是哪种状态 ,用到了以下两种计数 :
(1) 发送错误计数
(2) 接收错误计数
这两个按照以下规则改变 :
(1) 接收端检测到一个错误 ,接收错误计数加一 。发送主动错误标志或过载标志期间的位错误 ,接
收错误计数器值不加一
(2) 错误标志发送后 ,接收端检测到第一位为 “显性”时 ,接收错误计数值加 8
(3) 发送端发送错误标志时 ,发送错误计数值加 8 ,以下为例外情况 :
例外情况一 :
发送端为 “被动错误”,并检测到应答错误 (注 :此应答错误由检测不到“显性”应答和发送被动错误标志是检测不到“显性”位引起)
例外情况二 :
发送端因为填充错误而发送错误标志 (注 :此填充错误发生于仲裁期间 ,引起填充错误是由于
填充位位于 RTR 之前 ,并已经作为 “隐性”发送 ,但监视总线为 “显性”)
(4) 发送主动错误标志或过载标志时 ,如果发送端检测到位错误 ,发送错误计数加 8
(5) 发送主动错误标志或过载标志时 ,如果接收端检测到位错误 ,接收错误计数加 8
(6) 在发送主动错误标志 、被动错误标志或过载标志后 ,任何节点最多容许 7 个连续的 “显性”
位 。以下情况 ,每一发送端的发送错误计数加 8 ,每一接收端错误计数加 8 :
当检测到第 14 个连续的 “显性”位之后 (在发生主动错误标志或过载标志的情况下)
被动错误标志之后检测到第 8 个连续的 “显性”之后
每一个补充的 8 个连续 “显性”位序列之后
(7) 报文传输成功 ,应答无错 ,帧结束无措 ,发送错误计数器减一 ,除非其为零
(8) 如果接收错误计数介于 1 和127 之间 ,成功接收到报文后 ,及时发送出应答 ,接收错误计
数减一 ,为零则继续为零 ,如果超过 127 ,则设置为一个在 119~127 间的一个值
(9) 发送 / 接收错误计数等于或大于 128 ,节点变为被动错误节点 。造成节点这种转变的错误条
件发出主动错误标志
(10) 发送错误计数等于或大于 256 ,节点为总线关闭
(11) 发送 / 接收错误计数小于 128 ,节点重新变为错误主动节点
(12) 总线监视到 128 次有 11 个连续 “隐性”位之后 ,总线关闭节点转为错误主动节点 ,错误
计数设为 0
2.10 位时间
标称比特率 :标称比特率是理想发送端在没有重新同步的情况下每秒传输的位数。
标称位时间 := 1 / 标称比特率 ,即位的持续时间 ,如位时间是 0.2 μs ,则这个时间段内全是这个位所代表的电平 (全是 “隐性”或 “显性”)
可以将标称位时间视为划分为单独的非重叠时间段。 这些划分 :
(1) 同步段 (SYNC_SEG) :同步总线不同节点 ,这一段有个跳边沿
(2) 传播时间段 (PROP_SEG) :补偿网络内物理延时时间 ,是总线上输入比较器延时和输出驱动器
延时综合的两倍
(3) 相位缓冲段 1 (PHASE_SEG1) :用于补偿边沿阶段误差 ,可通过重新同步加长或缩短
(4) 相位缓冲段 2 (PHASE_SEG2) :用于补偿边沿阶段误差 ,可通过重新同步加长或缩短
在这里插入图片描述
图 10 位时间
采样点 :读总线电平并认为是每个位的值的一个时间点
信息处理时间 :以采样点位起始时间段 ,采样点用于计算后续位的位电平
时间份额 :派生于振荡器周期的固定时间单元 。存在一个可编程预比例因子 ,整体数值范围为 1~32 。时间份额 = m * 最小时间份额 (m 为预比例因子)
时间段长度 :同步段为 1 个时间份额 ,传播段长度可设置为 1~8 个时间份额 ,相位缓冲段 1 长度可设置为 1~8 个时间份额 ,相位缓冲段 2 为相位缓冲段 1 和信息处理时间之间最大值 ;信息处理时间小于或等于 2 个时间份额 。即一个位时间总时间份额可设置为 8~25 的范围 。
2.11 同步
2.11.1 硬同步
硬同步后 ,接收端的内部位时间从同步段重新开始 ,即跳变沿处于重新开始的位时间同步段之内 。
2.11.2 重新同步
位时间相位误差 :
一个沿的相位误差由相对于同步段的跳边沿出现的位置给出 ,以时间份额量度 。相位误差定义如下 :
e=0 跳边沿处于同步段里
e>0 跳边沿处于同步段之后 ,采集点之前
e<0 跳边沿处于同步段之前 ,上一个采集点之后
在这里插入图片描述

                      图 11 接收端位定时与同步

(注 :S 是同步段 ,P 是传播时间段 ,P1 是相位缓冲段 1 ,P2 是相位缓冲段 2)
重新同步结果 ,可能引起当前位相位缓冲段 1 增长或相位缓冲段 2 缩短 ,但这个增量有一个上限 ,就是由重新同步跳转宽度 (SJW)给出 。SJW 应设置在 1 和最小值 (4 和 相位缓冲段1中的最小值) 之间 。
当前位定时出现 e≠0 时 ,若相位误差不大于 SJW ,则
e>0 ,当前位时间的相位缓冲段 1 增加相位误差的绝对值个时间份额
e<0 ,当前位时间的相位缓冲段 2 减少相位误差的绝对值个时间份额
这里其实与硬同步的作用相同 。但若相位误差大于 SJW ,则增加或减少的时间份额就为 SJW 个 。
同步原则 :
① 在一个位时间里只允许一个同步 。
② 仅当采集点之前监测到的值与紧跟沿之后的总线值不相符合时 ,才将沿用作与同步 。
③ 总线空闲期间 ,有一“隐形”转变到 “显性”的沿 ,无论何时 ,硬同步都会被执行 。
④ 如果仅将 “隐性”转变为 “显性”的沿用作与重新同步 ,则其他符合规则 1 和规则 2 的从 “隐性”转变为 “显性”的沿可用作为重新同步 。但有一例外情况 : 当发送一显性位的节点不执行重新同步而导致 “隐性”转变为 “显性”沿 ,此沿具有正相位误差 ,不能作为重新同步使用 。
4. 参考资料
百度文库 :《CAN 20 A B 标准》
下载链接 :
https://wenku.baidu.com/view/549e1e15d4d8d15abf234e37.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CAN 简介 的相关文章

  • 四、数据转换、ros-CAN通讯

    1 CAN通讯 1 1驱动安装 1 1 1在我的gitee上下载test功能包 xff0c 将libusbcan so文件复制到 lib 其他位置 计算机 lib 目录下 1 2参考 我另一篇博客一 2 1 3 下载功能包 1 3 1 在我
  • STM32 CAN总线说明

    简介 xff1a CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986年率先提出 此后 xff0c CAN通过I
  • can't run '/etc/init.d/rcS': No such file or directory 最终解决方法

    drivers rtc hctosys c unable to open rtc device rtc0 end request I O error dev mtdblock2 sector 256 isofs fill super bre
  • Linux内核Socket CAN中文文档

    自己在年假中空闲之余翻译的内核中Socket CAN的文档 xff0c 原文地址在 xff1a http lxr linux no linux 43 v2 6 34 Documentation networking can txt 但是这篇
  • RS232/RS485/CAN_BUS 通信原理总结与通信波形分析

    分析一 xff1a 232串口信号 要点 xff1a RS232 xff0c 全双工 xff0c 采用三线制传输分别为TXD RXD GND xff0c 其中TXD为发送信号 xff0c RXD为接收信号 在RS232中任何一条信号线的电压
  • 一帧CAN数据需要多长时间发送

    1 CAN通讯速率 默认 500kbit s xff1b 2 xff1a 从下图CAN数据包的完整结构可知 xff0c 一包完整的扩展帧CAN数据总共包含 128bit xff1b 3 xff1a 发送一帧扩展帧CAN数据耗时 128 50
  • CAN通信数据帧介绍

    CAN通信有五个帧 xff0c 其中最重要的是数据帧 xff01 xff01 xff01 xff01 我们下面开始讨论数据帧 一 数据帧的格式 xff08 数据帧有七个段组成 xff09 xff0c 帧起始 表示数据帧开始的段 xff0c
  • Python 使用can模块(记录稿)

    直接安装 xff1a pip install python can 如果报这个错 更新一下pip pip3 install upgrade pip 或者是 pip install upgrade pip 再安装wrapt pip insta
  • CAN总线 标准帧/扩展帧滤波器设置

    在CAN协议里 xff0c 报文的标识符不代表节点的地址 xff0c 而是跟报文的内容相关的 因此 xff0c 发送者以广播的形式把报文发送给所有的接收者 节点在接收报文时 根据标识符 CAN ID 的值决定软件是否需要该报文 xff1b
  • CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比

    最近在研究CAN总线的驱动 xff0c 需要详细了解数据帧 标准帧 扩展帧 远程帧 错误帧这几种帧的详细组成格式 xff0c 于是收集了一下 xff0c 统一放在这里进行对比和记录 xff0c 以便日后需要时查阅 1 数据帧 标准帧 CAN
  • 解决ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)

    如何解决ERROR 2003 HY000 Can t connect to MySQL server on localhost 10061 1 登录到安装Mysql的主机 xff0c 打开cmd命令行工具 xff0c 执行命令mysql u
  • roscore报错: ‘ascii’ codec can’t decode byte 0xe6 in position 13: ordinal not in range(128)

    零 问题描述 使用ROS是 xff0c 执行roscore报一下错误 xff1a ascii codec can t decode byte 0xe6 in position 13 ordinal not in range 128 The
  • CAN报文格式简析

    Date xff1a 2022 5 11 Author xff1a MJQ Meta xff1a CAN CAN基础篇 CAN报文格式简析 1 Motornala和Intel格式 建议直接看图 xff0c 小白也能秒懂 xff01 注 xf
  • c#通过串口及CAN模块实现上位及下位机通讯

    目录 前言 一 串口 CAN总线 二 使用步骤 1 RS232串口通讯 xff08 指令下发与接收 xff09 2 CAN总线通讯 总结 前言 学习及工作中我们经常会遇到上位机与下位机通讯等工作 xff0c 结合场景使用不同的通讯方式实时通
  • CAN总线通信协议详讲

    CAN简介 CAN是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 由德国电气商博世公司在1986 年率先提出 此后 xff0c CAN 通过IS
  • STM32的CAN总线的接收双FIFO使用方法

    通过下面的框图我们可以看到 STM32F013有两个接收FIFO 但是实际的使用中如何让着两个FIFO都被使用呢 解决办法就在这里 1 STM32F103有0 13共14个过滤器组 每个过滤器组都可以绑定指定的FIFO 2 特别需要注意的一
  • CAN资料整理(三):CAN的位时间、同步、位定时

    目录 一 位时间 二 同步 1 硬同步 2 重新同步 三 位定时 1 传播段延迟时间的确定 2 位定时参数确定 由于CAN属于异步通讯 没有时钟信号线 连接在同一个总线网络中的各个节点会像串口异步通讯那样 节点间会使用约定好的波特率进行通讯
  • 各种通信接口的简单对比

    对比表 同步方式与异步方式的主要区别在于 是否传输时钟信号 只要是通訊前雙方需要設定相同波特率的 都是異步傳輸方式 异步传输 Asynchronous Transmission 每次异步传输的信息都以一个起始位开头 它通知接收方数据已经到达
  • CAN/CANFD 总线负载率及计算(源码和工具)

    CAN BUS的总线负载率是CAN总线架构协议设计时的一个重要的指标 一般建议负载率峰值不要高于80 平均负载率不要超过50 当然这只是一般建议 具体根据使用场景和系统设计而定 负载率定义 关于CAN负载率的定义和计算 很多文章写得不求甚解
  • STM32F407 CAN1 CAN2

    注意CAN1可以单独使用 CAN2要开启CAN1时钟才能使用 u8 CAN1 Mode Init u8 mode GPIO InitTypeDef GPIO InitStructure CAN InitTypeDef CAN InitStr

随机推荐

  • 小白自学PIX飞控学习笔记

    小白自学PIX飞控学习笔记 xff08 二 xff09 接触飞控什么是MCU xff1f PIX飞控与MCU xff1f 无人机飞控的作用飞控内部如何实现其功能 xff1f 接触飞控 作为未入门 小白 一枚 xff0c 也只是简单地接触过C
  • Nestjs 返回req报错

    返回req存在循环引用 报错 ERROR ExceptionsHandler Converting circular structure to JSON gt starting at object with constructor Sock
  • 设计方法的选用

    六大原则 创建好了之后算法不常变的 xff0c 比如计算器的加减乘除逻辑 xff0c 就可以用简单工厂模式 要是像商场收银机对打折等促销的处理 xff0c 若用简单工厂模式也可以 xff0c 不过要在工厂内创建多个具体的打折方案 xff0c
  • XXX测试用例设计?XXX怎么测试?(行李箱、电梯、水杯、笔、椅子)

    首先要知道 xff0c 答案要从下面6个方向考虑 xff1a 功能测试 界面测试 易用性测试 兼容性测试 安全性测试 性能测试 其次 xff0c 在回答问题前要向面试官表明 xff1a 我不知道XXX的具体需求 xff0c 所以会以我认知的
  • 面试——测试基础理论

    测试先导性知识 测试是什么 xff1f 在规定的条件下对程序进行操作去发现错误 xff0c 然后对软件质量进行评估的一个过程 需要注意的是 xff0c 软件是由文档 数据以及程序组成的 xff0c 所以对软件测试应该包括 xff1a 软件形
  • 【ubuntu16.04 LTS】 ping www.baidu.com不通

    想更新一个软件包 xff0c 发现ubuntu不能正常更新 xff0c 结果ping www baidu com不通 xff0c 但是ping ip 可能 xff0c 所以认为是DNS没有配置 解决方法 xff1a 1 xff0c 既然能p
  • 小鼠试毒问题(二进制)

    1000桶酒 xff0c 其中1桶有毒 而一旦吃了 xff0c 毒性会在1周后发作 问最少需要多少只老鼠可在一周内找出毒酒 如题 分析思路 xff1a 要用尽可能少的老鼠完成相对大的任务量 xff0c 要想到把问题进行对数分解 从而不难想到
  • wsl,Ubuntu,关于解决E: Could not read response to hello message from hook [ ! -f /usr/bin/snap ] || /usr/

    大坑 出现问题 xff1a 今天安装mysql xff0c sudo apt span class token operator span get install mysql span class token operator span s
  • wsl,win10子系统Ubuntu,安装mysql过程及坑

    一 安装 sudo apt span class token operator span get install mysql span class token operator span server 二 启动服务 注意 xff1a 先停止
  • 外接显示器调亮度解决方案(最低亮度后还是很亮)

    出现的问题 xff1a 手动调显示屏调亮度的键 xff0c 发现调到最低亮度后还是很亮 解决方案 xff1a 使用显卡设置来调整 win10 xff1a 桌面右键 英特尔显卡设置 显示器 颜色设置 选择显示器 应用
  • Java-线程,多线程同步安全案例,多窗口卖票一共有 50张票 ,4个窗口出售,打印出票售出的顺序。

    一共有 50张票 xff0c 4个窗口出售 xff0c 打印出票售出的顺序 span class token keyword package span com span class token punctuation span proble
  • tcp连接的select

    tcp的socket不同于udp tcp xff1a 建立socket的fd xff1b bind xff1b listen xff1b accept xff1b send or recv 另一端connect xff08 客户端 xff0
  • ROS NOETIC 思岚激光雷达A2M8启动历程

    Ubuntu20 04系统 xff0c 装的ROS对应为NOETIC版本 第一个bug 一直在catkin make这里出错 xff0c 我的工作空间 xff08 我也命名为catkin ws xff09 在catkin make之后 xf
  • 解决ubuntu网络调节助手之后打不开

    解决ubuntu安装deb文件之后打不开问题 xff08 安装libqtgui4 amd64 xff09 安装Ubuntu网络调试助手 链接 xff1a https pan baidu com s 1GSq pi1FOZxHFnY7PMBh
  • VSCODE中运行C语言(从安装到运行详细版)

    VSCODE中运行C语言 xff08 从插件安装到运行详细版 xff09 一 下载安装MinGW w64 官方下载网站 xff1a MinGW 64 往下来进入下一张页面图 xff0c 选择要下载的文件 二 环境变量配置 按照上面的步骤全部
  • 【ubuntu16.04 LTS】ping百度通,但浏览器打不开百度网页

    典型的DNS配置问题 1 xff0c 执行如下命令 span class token function sudo span span class token function vi span etc resolv conf 在文件最后添加
  • VLAN类型

    大家好呀 xff0c 我是请假君 xff0c 今天又来和大家一起学习数通了 xff0c 今天要分享的知识是VLAN类型 一 基于端口的VLAN xff1a 基于端口的VLAN是最简单 最有效的VLAN划分方法 xff0c 它按照设备端口来定
  • STM32开发(三) 使用printf 重定位到串口输出|CSDN创作打卡

    上一篇 主目录 下一篇 文章目录 背景 KEIL MDK环境下printf重定位串口输出 第一步 在KEIL MDK中使用MicroLIB如图中勾选 第二步 STM32Cube MX异步配置 第三步 KEIL代码演示 代码使用Cube 注意
  • 总线(二)CAN通讯协议介绍

    文章目录 CAN xff08 Controller Area Network xff09 是什么 xff1f 总线拓扑图CAN特征CAN协议数据帧遥控帧遥控帧和数据帧相关 xff1f 仲裁优先级决定数据帧和遥控帧的优先级标准格式和扩展格式的
  • CAN 简介

    1 目的 本文主要介绍一部分 CAN 协议层 2 CAN 简介 这里的内容参考的是 1991 9 的 2 0 版本的官方 CAN 规格书 2 1 概述 CAN 控制器局域网 是一种串行通讯协议 xff0c 传输速度可达 1Mbit s 总线