CAN电压测试(电工Demo)

发布时间:2022-12-03 CAN 现场总线

这种是一般PLC上CAN的引脚定义。 5接屏蔽线

40米:    1 Mbps ( iso 11898_3)
逻辑1: H L 电压差 低于0.05V
逻辑0: H L 电压差 高于1.5V
电阻:  H L 负载电阻 (85Ω ~  130Ω) / 2   
                      一般120Ω  /2
实际负载电阻值:60Ω

 这图上说的是:隐性1的时候,H和L线都是2.5V,线压差是0v。

显性0的时候,H线3.5v,L线1.5v,线压差是2v(最低条件 >1.5v)。

可以理解为,没数据的时候,大家都是2.5v。

CAN总线:

一般用在汽车,伺服驱动器,步进驱动器,舵机,分布式io等设备上。

有以太网转CAN和4G网转CAN。(注意每秒帧数1M≈9700帧)

当然得到数据后,可以往RS485等上面传。

电源        DC5~36v 
默认网络    192.168.0.7
密码        admin
can1        20001(端口)用客户端模式
rs485        20003
can2        20005

RES位置是内置120Ω电阻;拨码开关朝下是接通内置电阻。2个开关对应2个CAN

电压:

H和L之间正电压,且大于1.5v:逻辑0

H和L是负电压或0v时 :逻辑1

空闲的时候:

H是+1.46v

L是+1.46v (我把L线电压下降1V是为了方便观看,实际波形是完全重叠的)

所以 H线和L线之间没有电压差,是逻辑1

 

这个是截取工作状态的波形。

H线和L线出现电压差大于1.5v(2.8v),表示逻辑0 

这就相当于,没有数据的时候一直逻辑1(H线电压就是L线电压)。有数据的时候会逻辑0(出现电压差2.8v)

工作流程:

所有设备都并联 CAN总线,终端两边各并联120Ω电阻(万用表量HL电阻60Ω),大家都没发报文时,HL线没有电压差,当主站发报文时,HL出现电压差。如果大家全在发报文,HL电压差占空比越大,接近于一直保持2.8v压差。虽然手册说隐性状态下HL应该同时保持在2.5v(实际1.46v),电压差0v,理论和实际总会有点差距。

开始测试:

只需要2根线:GND线可不用,gnd用于检修。

H和L线,终端各并联120Ω电阻。(断电,用万用表测 60Ω)

21拨码都朝下 

CAN1和CAN2是并联的,并且开启了2个内置120Ω电阻(拨码朝下)。

设备ip我改的是77,默认ip是192.168.0.7 

 现在要记住 148字节的样式,一会要用。它不能像串口那样单独发一个字节。

20001端口是 Can1

20005端口是 Can2(端口和ip都是可以修改的,在网页192.168.0.7密码admin)

1 4 8 样式的字节,

总共13个字节。 由于我设备是以太网转CAN,所以每帧固定发13字节。

★1 表示帧信息:占1字节(bit7,bit6,bit3~0)

7      6           54   3210
0 标准 0 数据帧    00   1000
1 扩展 1 远程           0~8有效字节数

调试结果:CAN2发,CAN1监视

08h  标准,数据帧, 8字节(监视88h帧)
48h  标准,远程  , 0字节(监视C8h帧)
88h  扩展,数据帧, 8字节(监视88h帧)
C8h  扩展,远程  , 0字节(监视C8h帧)

远程帧:8字节数据全是00h

★4表示帧id信息:占4字节(COB_ID)

新手:只需要记住是占4个字节就行了。比如 12 34 56 78,不用考虑意义,再加上后
面8字节,CAN就能发送出去。

//=======老司机=================
这个4字节的内容会影响后面8字节的定义。
这个4字节也可以理解为:功能码+从站id地址
标准帧:(只使用里面的11bit,功能码4bit + 从站地址7bit)
扩展帧:4字节内使用29bit(22bit+7bit)
优先级:数据帧首次出现隐性电平的帧,优先级低。(COB_ID 00000000最高)

int cobid  =  功能码<<7;
    cobid |=  从站id地址;
return  cobid;

//======标准帧============================
COB_ID:(11bit)

          功能码(4bit)+ 从站地址(7bit)
                          从站最大  0x7F  是 0~127
                      
                      COB_ID值
NMT 网络管理   0000    0x00
同步对象       0001    0x80
紧急           0001    0x80+从站地址
TXPDO1(发送)   0011    0x180+地址
RXPDO1(接收)   0100    0x200+地址
TXPDO3(发送)   0111    0x380+地址
RXPDO3(接收)   1000    0x400+地址
TXPDO4(发送)   1001    0x480+地址
RXPDO4(接收)   1010    0x500+地址

TSDO(服务器发送)1011    0x580+地址(get回帧)
RSDO(客户发送)  1100    0x600+地址(set到驱动器)

NMT 错误控制   1110    0x700+地址

//======参考==============
cobid(4字节)         b0                  b1
00h  网络管理          01启用远程伺服节点      从站地址00广播(所有伺服)
                       02停止远程伺服节点
                       80预操作
                       81节点复位          01从站
                       82通讯复位
//======参考==============
cobid(4字节)         无b0
80h  同步报文          空

//======参考================
cobid(4字节)                  b0                  
700h + 从站地址(回帧 NMT)     00 Boot_up   心跳?
                                04 停止
                                05 操作
                                7F 预操作

★8表示帧数据字节:占8字节 就算没数据,也得发8个0x00

下面我发送:84 12345678 11 22 33 44 55 66 77 88

84 12345678 11 22 33 44 55 66 77 88

接收

[2022-11-27 12:41:50.229] 84 12 34 56 78 11 22 33 44 00 00 00 00 

看出区别了吗? 在第一字节是    控制byte, 4表示帧数据(在8个字节里只有4个字节有效。)

再来看下:

发:  88 12345678 11 22 33 44 55 66 77 88
收:  88 12 34 56 78 11 22 33 44 55 66 77 88 

 这个案例,必须熟记。C#写业务的时候要用。

//========================================================== 

到这里,发送的数据帧就学完了。下面开始上硬菜。

需要 EDS 对象字典  http://www.leisai.com/     

参见《CANopen 技术指导手册》

从驱动器发送出来的 PDO 即为 TPDO

DM-CAN 系列系列驱动器目前最多可以支持 4 组 TPDO(驱动器TX) 和 4 组 RPDO(驱动器RX) 。
SDO 的传输效率要低于 PDO。

SDO做初始化参数用。

DM-CAN 系列驱动器的 CAN 地址总共有 7 位,最大地址 127。
站点地址不可设置为 0
驱动器地址=高 2 位地址+低 5 位地址;
其中低 5 位地址由拨码开关 SW1~SW5 设定(off表示1)
,高 2 位地址通过对象字典 2150 来设置,2150 默认值为 0,范围是 0~3。
2150=1,表示增加地址32;
2150=2,表示增加地址 64。
2151 使用默认值0;0:地址来自拨码器,1地址来自2150寄存器
保存     1010+04 = 0x65766173;  // 保存,重启生效(23 10 10 04 73 61 76 65)
恢复出厂 1011+04 = 0x64616f6c; //驱动器恢复出厂设置  8字节数据(23 11 10 04 6c 6f 61 64)

驱动器控制字(对象字典 6040h) 的 bit0-bit3、 bit7 位来控制(PV速度,HM回原点,PP位置)
      状态字(对象     6041h) 的 bit0~bit3、 bit5、 bit6 显示

 我也有考虑用can舵机,袖带方便,无奈价格吓退我,我花了80块买了这个步进驱动器。学习过程中,试错成本太高,猴年马月能回本????生活压力大。

449元,广州那边发常州,东西还在路上。。

下次更新

驱动器接好后,会收到个心跳包。

 

7      6          54   3210

0 标准 0 数据帧   00   0001
1 扩展 1 远程          0~8有效字节数

回帧是  01h
标准,数据帧,长度1字节

分析: 标准,数据帧,1字节,COB_帧id:0x0000 0707   ,数据  0x7f    //  07是驱动器地址

 光看心跳包01,大概知道,通讯用的是  标准  数据帧       0000  0001

还得做测试,之前驱动器地址是0x07,我现在改成0x03地址,看看是什么心跳包。

注意:驱动器OFF位置拨码表示1

 那148里 4的最后一字节是驱动器地址了(实际是 功能码4bit + 从站地址7bit)。

     00 00 07 03这里03是驱动器地址,07还不知道是什么意思,继续看手册。

帧id:占4字节( COB_ID )功能码4bit + 从站地址7bit

SDO发 600h+
SDO收 580h+

1字节     4字节 COB_ID     8字节
00        0000 0000        00 00 00 00 00 00 00 00

00        0000 0080        空                       同步数据帧

02        0000 0000        81 01                    复位节点,从站01
02        0000 0000        01 00                    启动远程控制,从站00广播
01        0000 0701        00                       回帧,心跳
08        0000 0601        23 00 14 01 00 00 00 80  SDO,写32bit
                                                     0x1400子01=0x8000 0000;
08        0000 0581        60 00 14 01 00 00 00 00  回帧SDO 60成功,0x1400子01
08              601        2F 00 16 00 00 00 00 00  SDO写8bit,0x1600子00,=0x00
                581        60 00 16 00              回帧SDO,60成功0x1600子00
08              601        2F 00 14 02 01           SDO写8bit,0x1400子02=0x01;
                581        60 00 14 02              回帧SDO,60成功1400子02
08              601        2B 00 14 03 90 01        SDO写16bit,1400子03=0x0190;40.0ms
                581        60 00 14 02              回帧SDO,60成功1400子02

帧头1字节:8bit

7      6          54   3210

0 标准 0 数据帧   00   1000
1 扩展 1 远程          0~8有效字节数
COB_ID :占4字节:只用低11bit(功能码4bit + 从站地址7bit)

COB_ID的值,直接影响后面数据8字节的功能。 

 C#设计的时候,COB_ID:  功能码  <<  7 ,然后或上从站地址

int cobid  =  功能码<<7;
    cobid |=  从站地址;
return  cobid;
//==================================
COB_ID:(11bit)

功能码(4bit)+ 从站地址(7bit)
                从站最大0x7F 是 0~127
NMT 网络管理   0000
同步对象       0001    0x80+地址0
紧急           0002    0x80+地址
TXPDO1(发送)   0011    0x180+地址
RXPDO1(接收)   0100    0x200+地址
TXPDO3(发送)   0111    0x380+地址
RXPDO3(接收)   1000    0x400+地址
TXPDO4(发送)   1001    0x480+地址
RXPDO4(接收)   1010    0x500+地址

TSDO(服务器发送)1011    0x580+地址(get回帧)
RSDO(客户发送)  1100    0x600+地址(set到驱动器)

NMT 错误控制   1110    0x700+
COBID        B0            B1

00000000h    01启动远程    01从站地址
             02停止远程    00广播
             80预操作
             81节点复位
             82通讯复位
 SDO操作:写/读
580h+    TSD0 (get回帧)
600h+    RSD0 (set到驱动器)

GOB_ID    B0             B1B2                  B3        B4B5B6B7
601(600h+从站地址)

          2F写  8bit     1032寄存器(0x3210)  10子索引  10 (0x10)设定值
          2B写 16bit     1032寄存器(0x3210)  10子索引  10 32 (0x3210)
          27写 24bit     1032寄存器(0x3210)  10子索引  10 32 54(0x543210)
          23写 32bit     1032寄存器(0x3210)  10子索引  10 32 54 76 (0x76543210)

          40读 16bit     1032寄存器(0x3210)  10子索引  空

                         1032寄存器地址(0x3210)

                                               10子索引(0x10是16,一般是0~3)

                                                          数值10 32 54 76(0x76543210)

  

SDO结果: 驱动器回帧

580h+    TSD0 (get回帧)
600h+    RSD0 (set到驱动器)

GOB_ID    B0        B1B2    B3    B4B5B6B7
581(580+从站地址)

          60写入成功
          80写入异常

          4F一字节(回帧有效字节)
          4B二字节
          47三字节
          43四字节
            
                    1032寄存器(0x3210)

                           10子索引(0x10是16,一般是0~3)

                                  数值10 32 54 76(0x76543210)

报文8字节:跟COB_ID配合使用

8字节报文详解:维修电工祁成

B0    B1B2    B3    B4B5B6B7
0功能码

      1寄存器地址 10 32  低字节在前  ( 0x3210 )

              3子索引 01 ( 0x01 )一般是0x00

                     4数据值 10 32 54 76   低字节在前(0x76543210)


B0功能码:
读:
40读寄存器   0132(寄存器0x3210) 10子索引(0x10 是16,一般子索引用0x00)
//样例: 08  0000 0601  40 10 32 00 //SDO到驱动器1从站40读寄存器 0x3210,子索引0
//                      40 03 30 00 // 40读寄存器,寄存器0x3003子索引0
4B二字节寄存器结果
//  4B 03 30 00 5A 5A 00 00  //报文应该是:08  0000 0581   4B  03 30 00 5A 5A 00 00  

SDO相当于去黄焖鸡单个点吃的,子索引相当于这个菜的基础上加辣?加香菇?加百叶?

PDO相当于点套餐,后面的值是套餐的编号。这样可以省去一个个点菜的麻烦。(一个套餐要是有200多道菜,你用SDO一个个点,很浪费时间)

(1)通讯类对象字典,如 1000H,1400H,1A00H 等对象字典,其详细说明参见附录;
(2)厂家自定义对象字典,如 2000H-2130H,关于参数的详细说明参见附录;

6000H~~~9FFFH 标准DSP CiA 402

案例:运动模式   6060+00  =  3 //速度模式

运动模式(0x6060)= 1 位置
                    3 速度
                    4 转矩
                    6 回零模式

1      4            8
08     0000 0601    2f 6060 00 03    // 2F写8bit,寄存器0x6060,子索引00,数值03

案例2:保存   0x1010子索引1 = 0x65766173;

1             4            8

08            0601         23 10 10 01 73 61 76 65
注:
23            写32bit
1010          寄存器0x1010
01            子索引 0x01
73 61 76 65   寄存器数值 0x65766173;


数据帧:

08  0000 0601   23 10 10 01 73 61 76 65
标准数据帧:8字节长度
帧id:      0x0601(SDO操作600h + 01h从站)
写32bit:   23h
寄存器:    10 10 (低字节在前)
子索引:    01h
数据8字节: 73 61 76 65 (0x65766173)

案例3:电机放向   2051+ 00  = 0;    //   0不变,1反方向

1             4                 8

08            0000 0601         23 51 20 00 00 00 00 00
注:
23            写32bit
51 20          寄存器0x2051
00            子索引 0x00
00 00 00 00   寄存器数值 0x00000000;


数据帧:

08  0000 0601   23 51 20 00 00 00 00 00
标准数据帧:8字节长度
帧id:      0x2051
数据8字节: 23   5120   00    00000000

  

用 C# 写上位机,控制读写数据帧,看我写的下篇。

更多相关推荐


【独立帧、首帧、连续帧、流控桢】4种CAN报文类型分析

发布时间:2022-09-19 MCU CAN CONSECUTIVE FRAME FIRST FRAME
1.Can帧种类       根据ISO-TP中的描述,Can帧主要分四类:单帧(Singalframe,SF),首帧(Firstframe,FF),连续帧(Consecutiveframe,CF),流控帧(Flowcontrolframe,FC);单帧:值为0,其长度可为8个字节(value值占1个字节+7个表示正常地址字节,一般我们遇到主要就是类型的)或7个字节(value值占1个字节+6个扩...

最小时间份额

发布时间:2020-06-24 CAN 最小时间份额
比如12M晶振时钟周期是1/12M如上文所述,在CAN的位定时中,一个CAN时钟周期称为一个时间量子—TqCAN时钟周期=2×晶振时钟周期×BRP...

Capture Modules:车载网络报文捕获模块

(以下所有图片均来源于Technica官网)TechnicaEngineering的新一代硬件设备,即CaptureModules,提供了五种变体以涵盖不同带宽的车载以太网(100BASE-T1和1000BASE-T1)以及常见的IVN技术(CAN、CANFD、FlexRay和LIN)。CaptureModules旨在解决记录系统丢失信息的问题。此外,它根据802.1AS引入了时间同步功能,允许同...

CAN总线【4】--CAN协议过载帧和帧间隔

发布时间:2022-07-11 嵌入式硬件 CAN
提示:本篇文章仅供学习参·一、过载帧对于过载帧的帧结构我们可以这样理解:接收节点Node_A达到接收极限时,就会发出过载帧到总线上,显然,过载标志的6个连续显性位会屏蔽掉总线上其它节点的发送,也就是说这个时候Node_A通过发送过载帧的方式来破坏其它节点的发送,这样在Node_A发送过载帧期间,其它节点就不能成功发送报文,于是就相当于把其它节点的发送推迟了,也就是说Node_A在其发送过载帧的这段...

CAN总线【1】--基础知识

发布时间:2022-07-09 嵌入式硬件 CAN
提示:本编文章仅供学习一、CAN的一些基本概念1.1什么是CAN总线CAN是ControllerAreaNetwork的缩写,是ISO国际标准化的串行通信协议。通俗来讲,CAN总线就是一种传输数据的线,用于在不同的ECU之间传输数据。CAN总线有两个ISO国际标准:ISO11898和ISO11519。其中:ISO11898定义了通信速率为125kbps~1Mbps的高速CAN通信标准,属于闭环总线...

CAN收发器TJA1050与MCP2551的对比

发布时间:2017-03-30 CAN
http://blog.sina.com.cn/s/blog_5eaf7cb90100ch1y.html目前世界上使用最广泛的CAN收发器当属NXP(原飞利浦半导体)的各种收发器了。过去的一些PCA82C250/251就不说了,在很多场合都已经有很广泛的应用。通过工艺改造和技术创新,前些年,飞利浦推出了TJA1050和TJA1040两款升级的CAN收发器。也在各种场合得到了很广泛的使用。    M...

OBD 诊断与 UDS 诊断有什么区别?

发布时间:2019-08-12 UDS CAN 汽车通信CAN OBD
OBD(全称:OnBoardDiagnostics),即车载自动诊断系统,是汽车排放和驱动性相关故障的标准化诊断规范,有严格的排放针对性,其实质就是通过监测汽车的动力和排放控制系统来监控汽车的排放。当汽车的动力或排放控制系统出现故障,有可能导致一氧化碳(CO)、碳氢化合物(HC)、氮氧化合物(NOx)或燃油蒸发污染量超过设定的标准,故障灯就会点亮报警。首先,OBD是面向汽车排放问题而制定的规范,也...

【UDS】ISO14229之0x31服务

-&gt;返回总目录&lt;-前言简称:“RoutineControl”,例程控制功能:该服务执行指定的步骤操作并获取相关结果,相比0x2F服务,具有较大的灵活性,可用于较为复杂类型的控制。一般应用包括清除内存(多数用在更新ECU软件),重置或学习自适应数据,运行自检,方向盘角度零点标定等。一、理论描述程序控制类型的定义如下表:01:若响应消息是肯定或否定,表示请求已经执行或即将执行,则需在完成0...

【UDS】ISO14229之0x2F服务

-&gt;返回总目录&lt;-前言简称:“InputOutputControlByIdentifier”,根据标识符控制输入输出功能:根据标识符控制输入输出服务用于替换输入信号的值、电控单元内部参数或控制电子系统的输出值。一、理论描述通俗解释:在诊断模式下,通过请求2F服务直接控制开关发出指定的信号。例如:我想要让左转向灯亮,那么就可以通过该服务跳过硬件电路的检测直接软件里操作并替换想要控制的左转...

《诊断服务》禁止功能寻址

发布时间:2022-10-28 自动驾驶 AUTOSAR AUTOSAR实战营 CAN 汽车
前言本章基于DaVinCi禁止功能寻址的办法。DaVinCi默认支持功能寻址,因此需要特殊处理。一、功能寻址是什么?诊断报文的CANidentifier分为物理寻址和功能寻址。前者针对整车上一个ECU会指定一个物理寻址ID。例如物理寻址ID为0x716,功能寻址ID为0x7DF(均由整车厂定义)物理寻址:通过诊断仪发送物理寻址0x716的报文时,只有被指定的某个ECU可以接收到这个报文,类似单播模...

SIT1028是一款内部集成高压LDO稳压源的本地互联网络(LIN)物理层收发器 TJA 1028T

发布时间:2022-11-05 车灯 LIN CAN 汽车 收发器件
SIT1028是一款内部集成高压LDO稳压源的本地互联网络(LIN)物理层收发器,可为外部ECU(ElectronicControlUnit)微控制器或相关外设提供稳定的5V/3.3V电源该LIN收发器符合LIN2.0、LIN2.1、LIN2.2、LIN2.2A、ISO17987-4:2016(12V)和SAEJ2602标准。主要适用于使用1kbps至20kbps传输速率的车载网络。SIT1028...

CAN基础知识

发布时间:2021-05-06 CAN
简述可以参考:CAN总线学习(2018-5.31)这里做一些补充1.CAN通信波特率与每秒收发帧数先来看看CAN数据帧格式:由上图可得:一个满负荷的标准帧(Data段为64bit),一共有“108bits”数据。假设波特率为1Mbit/s,那么传输1个bit用时1us。这个结论看下面这张图:所以一个满负荷的标准帧(108bit)全部发送完需要108us参考:CAN通信波特率与每秒收发帧数...

[工业互联-2]:工业有线互联总线之CAN总线

目录第1章CAN总线概述1.1概述1.2CAN总线的优点1.3应用广泛1.4CAN总线的发展历史 1.5传输距离与传输速度的关系第2章CAN总线的网络拓扑2.1总线拓扑2.2星形拓扑2.3 树形拓扑2.4环形第3章CAN总线设备的硬件连接方式3.1单个网络节点的硬件连接框图3.2多个网络节点的连接方式第4章CAN总线的网络协议栈4.1ISO七层协议与CAN总线协议栈4.2CAN协议栈4.3CAN总...

使用CANdb++创建DBC文件详细指引(小白看完都会)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档前言提示:使用CANdb++创建DBC文件指引CANdb++3.1安装包获取https://download.csdn.net/download/weixin_44081256/86862300?spm=1001.2014.3001.5503提示:以下是本篇文章正文内容,下面案例可供参考1.安装CANdb++3.1获取CANdb的软件...

Microchip的10M以太网解决方案

(以下所有图片均来源于Microchip官网)一为什么需要10M车载以太网目前车载百兆以太网(100Base-T1)和千兆以太网(1000Base-T1)技术较为成熟,但如果直接用100Base-T1/1000Base-T1来替代目前被广泛使用的CAN/CANFD/LIN/FlexRay等低速车载总线,就会出现带宽利用率低、成本和功耗过高等问题。二EspressoT1S10BASE-T1S是在IE...

MDK3358平台QT示例-CAN收发演示

发布时间:2013-12-14 QT MDK3358 CAN SOCKET 335X示例
MDK3358平台QT示例-CAN收发演示ByMcuzone硬件平台:MDK3358平台+7寸触摸屏QT版本:4.8.3关键字:SocketCAN、MDK3358、Qt示例简要说明:本例使用Linux下SocketCAN实现简单CAN收发功能运行截屏实物图...

23、STM8 CAN总线数据转发实验

发布时间:2022-05-27 STM8S STM8S单片机学习笔记 CAN
1、CAN控制器原理图2、实验目的  把CAN总线控制器接收到的数据直接发送出去。包括:标准数据帧、扩展数据帧、标准远程帧、扩展远程帧。3、推荐采样点位置采样点=((1+BS1)/(1+BS1+BS2))*100%当CAN总线波特率大于800K时,推荐采样点位置75%。当CAN总线波特率大于500K时,推荐采样点位置80%。当CAN总线波特率小于等于500K时,推荐采样点位置87.5%。过程。4、...

J-LINK_v6.50b操作指南

发布时间:2022-11-09 驱动开发 嵌入式硬件 CAN BMS
提示:J-LINK_v6.50b操作指南提示:以下是本篇文章正文内容,下面案例可供参考1、软件安装软件获取:https://download.csdn.net/download/weixin_44081256/86930312?spm=1001.2014.3001.5503执行Setup_J-Link_v6.50b.exe;按缺省方式,若先前安装过Keil5,则最后会有一个勾选项需要选择。2、程序...

【UDS】ISO14229之0x85服务

-&gt;返回总目录&lt;-前言简称:“ControlDTCSetting”,控制诊断故障代码设置功能:该服务用于停止或重启ECU诊断故障代码状态位的更新一、理论描述控制类型的定义如下表:01:当ECU接受到子功能参数为关的控制诊断故障代码设置请求时,ECU应暂停诊断故障代码状态位的任何更新(即冻结当前数值),直到功能被重新使能。02:当ECU接收到子功能参数为开的控制诊断故障代码服务请求,或进...

基于K60-EK开发板CAN总线数据收发

基于K60-EK开发板CAN总线数据收发byMcuzone   飞思卡尔Kinetis系列微控制器MK60DN512ZVLQ10片内集成了2个CAN控制器,分别是FlexCAN0和FlexCAN1。它支持CAN2.0B数据传输协议,即支持标准帧和扩展帧数据传输。支持0~8字节的数据长度,可编程的数据传输速率高达1Mb/s。  本例中,我们使用的是K60-EK开发板,该开发板引出了2路CAN,分别是...

【CAN】CANopen简介

发布时间:2022-10-19 网络 CAN 常用接口方式
CANopen在OSI层级中的位置从OSI的7层网络模型的角度来看同,CAN(ControllerAreaNetwork)现场总线仅仅定义了第1层(物理层,见ISO11898-2标准)、第2层(数据链路层,见ISO11898-1标准);而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)或固件(Firmware),只要了解如何调用相关的接口和寄存器,即可完成对C...

【CAN】CAN通信基础

发布时间:2022-10-19 嵌入式硬件 CAN 单片机 常用接口方式
1、CAN总线与CANopen概述CAN(ControllerAreaNetwork)总线是BOSCH为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。这种按数据块编码的方式,还可使不同的节点同时接收到相同的数据,这一点在分...

CAN与CANOpen(六)

发布时间:2018-05-09 CAN
CAN与CANOpen(一)基本概念 CAN与CANOpen(二)报文格式 CAN与CANOpen(三)错误处理CAN与CANOpen(四)CANOpen对象字典 CAN与CANOpen(五)PDO和SDOCAN与CANOpen(六)网络管理和CANFD4.网络管理CANOpen的网络管理使用了master/slave结构。Master通过模块控制服务,可以控制slave的状态:{STOPPED,...

CAN测量模块总线负载率,你关注了吗?

一背景随着新能源汽车的飞速发展,整车系统日趋复杂,整车性能的可靠性也越来越重要。在车辆测试过程中,为应对更加多样的试验需求,传感器的种类和数量会随着测量种类而增加,由此数据量变得越发庞大,使得海量数据传输超出了CAN总线承载率,从而导致数据丢失的问题逐渐凸显,因此需要对总线负载率进行控制。二案例说明这里以一个热管理试验来进行负载率的实际计算。实验目标:需要针对热管理散热系统测试系统水阻、水流量、散...

在linux2.6.37上添加MCP251x驱动

发布时间:2012-11-26 LINUX内核 LINUX CAN SOCKETCAN MCP251X
SocketCAN对CANprotocol做了封装,对CAN设备的读写变成了类似tcp/ip的读写网络(socket操作)。目标环境:linux2.6.37,i.mx27开发板带mcp2515首先注册spidevice和mcp2515device: 代码&lt;!--CodehighlightingproducedbyActiproCodeHighlighter(freeware)http://w...

CANopen通信设备

发布时间:2015-11-18 CAN CANOPEN
   要理解CANopen规范,核心是要理解CANopen的设备模型和各类型的通讯对象。一个CANopen设备由 3 部分构成,分别是通讯部分、对象字典和应用部分,此设备一端接到CAN总线,另一端接到应用相关的I/O数据端口,如下图所示:   其中通讯接口部分根据CANopen协议的要求在总线上收发CAN报文,不同的CANopen设备间的通信都是通过交换通信对象完成的。应用部分由用户根据实际的应用...

25、STM8 CAN总线接收命令控制LED灯实验

发布时间:2021-10-30 STM8S STM8S单片机学习笔记 CAN
1、实验目的  判断接收到的报文类型,根据报文类型和命令控制LED发光二极管,可以同时控制LED1、LED2、LED3发光二极管同时点亮与熄灭。2、代码实现/********************************************************************************@文件名:main.c*@作者:JayYang*@版本:V1.0.0*@日期:20...

ds402 protocol

发布时间:2022-11-22 CAN
 6.2.37ProgramcontrolInitiatesfirmwaredownloadrelatedcommandsandreadsbackinformationontherunningapplication.Whilethebootloaderisactive,onlyasubsetofobjectsissupportedandonlyonecommunicationinterfaceca...

车用总线技术 | CAN总线哪个节点在通讯?发送了什么信息?(一)

发布时间:2020-11-02 汽车诊断 CAN 车辆网络 CAN总线
作者:SteveSmith最近关于CAN总线哪个模块在通讯以及传输了什么信息的讨论非常多,因此我想和大家分享用PicoScope6Automotive软件处理这个问题的一些方法。众所周知,要想将CAN总线信号正确有效地译码并不容易。虹科Pico汽车示波器4425A的优异性能可以帮我们很好地观察和分析CAN信号。如图1所示,在CANbus总线上测得两个CAN数据包。CAN高3.5V动态电压,CAN低...

Motorola格式CAN报文 与 数值 互相转换C#

发布时间:2022-10-16 C# CAN DBC CAN C# DBC
本文属于DBC通讯解析的部分1、DBC文件信号信息数据格式解读每条报文消息里面有多个报文信号,报文信号的信息的起始标识为"SG_",它以一个"BO_"开始至下一"BO_"之间的内容止,详细报文消息以缩进1或2个空格符形式类似树图子节点的方式呈现。举例:一条消息下的一个信号的信息,此处缩进一个空格SG_EMS_SPEED:0|13@1+(1,0)[0|7000]“rpm”TCU解释:SG_     ...

SocketCAN

发布时间:2018-12-14 CAN
转载请注明出处:https://blog.csdn.net/flymachine/article/details/7194154谢谢! FromWikipedia,thefreeencyclopedia  (RedirectedfromSocketcan)Jumpto:navigation,searchFreesoftwareportalSocketCANisasetofopensourceCAN...

【DBC文件解析】

发布时间:2022-10-23 网络 CAN 网络协议 服务器
目录结构如下1、基础介绍2、DBC文件2.0、先来一篇全貌2.1、开头是Version和new_symbols两个Tag。2.2、波特率定义2.3、网络节点的定义2.4、报文帧的定义2.5、信号的定义2.6、注解部分2.7、特征(属性)定义部分:2.8、数值表部分protuesjzy写过两篇dbc文件的介绍https://blog.csdn.net/u012923807/article/detai...

对于UDS协议的传输控制协议ISO15765的学习记录

发布时间:2022-11-20 学习 网络 CAN
参考:UDS网络层/TP层(ISO15765-2)的解读讲的很非常好。can报文一帧只能最多传输8个字节,但是UDS协议要求最多能传输4095字节,因此就产生了ISO15765协议。数据单元(N_PDU)有四种类型,即单帧(SF)、首帧(FF)、连续帧(CF)、流控制帧(FC),用于建立对等实体间的通信。这四种类型的数据,是通过一种叫PCI的东西来区分的。对于这四种类型的数据单元是通过协议控制信息...

详解CAN总线:什么是CAN总线?

目录   1、CAN总线简介2、CAN节点组成3、CAN总线结构4、CAN总线物理电气特性在之前的博文中分享过一系列一文搞懂:SPI协议、I2C协议、PID算法、Modbus协议等文章,也考虑过是否可以出一篇介绍CAN总线协议的文章,但是在之后的学习研究中,发觉CAN总线协议比较庞大和复杂,做为刚刚进入汽车电子行业的开发小白,一篇文章难以讲解清晰,所以决定在汽车电子专栏中连载分享关于CAN总线协议...

在linux下使用socket_can进行编程

发布时间:2022-10-21 CAN 运维 LINUX 服务器
在linux下使用socketcan进行编程参考原文:https://www.kernel.org/doc/Documentation/networking/can.txt4.怎么使用socketcan使用socket:像TCP/IP那样,我们收线需要创建一个socket用于can通信。在linux中新增了协议族PF_CAN,可以用作socket函数的第一个参数。目前有两个can协议可用:raws...

CAN总线应用开发接口

发布时间:2015-10-16 CAN 通讯
CAN总线配置 在Linux系统中,CAN总线接口设备作为网络设备被系统进行统一管理。在控制台下, CAN总线的配置和以太网的配置使用相同的命令。 在控制台上输入命令: 1. ifconfig –a  可以得到以下结果: 1. can0   Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00   2. ...

关于CAN通信速率在某些频段下不通的解决办法

发布时间:2022-11-03 CAN 通信 硬件工程
现象描述我在某个项目的时候遇到CAN通信只能够在50k、100k、800k和1000k下进行。而我要在500k通信速率下进行收发,但是现在在500k的速率下无法完成收发,会出现总线错误的问题:报错如下:can0:bus-off由于在特定的速率下也能够正常进行通信,可以基本排除硬件问题,所以我从时钟频率和软件驱动开始查找。将PS核中CAN的驱动时钟更改为40M、50M、100M进行实验,发现可用的通...

SIT2515T-I/SO 完美兼容MCP2515T-I/SO 带SPI接口的独立CAN控制器 适用CAN2.0B 1.0Mb/s的速度

发布时间:2021-11-19 芯力特 CAN
特点:>芯片功能与MCP2515完全一致>适用CAN2.0B1.0Mb/s的速度0-8字节长度数据场支持标准帧扩展帧和远程帧>接收缓存、掩码与过滤码两个带有存储优先级的接收缓存器6个29位过滤码2个29位掩码>采用前两个字节的数据进行报文过滤>三个带有发送优先级和取消发送机制的发送缓存器>高速SPI接口(10MHz)SPI0.0和1.1模式>单次传输模式确保报文只发送一次>可编程的时钟预分频引脚>...

【如何学习CAN总线测试】——CAN物理层测试

🔸【如何学习CAN总线测试】👉——👉1️⃣CAN物理层测试🔸【如何学习CAN总线测试】👉——👉2️⃣CAN数据链路层测试🔸【如何学习CAN总线测试】👉——👉3️⃣CAN交互层测试🔸【如何学习CAN总线测试】👉——👉4️⃣鲁棒性测试🔸【如何学习CAN总线测试】👉——👉5️⃣AUTOSAR网络管理测试🔸【如何学习CAN总线测试】👉——👉6️⃣AUTOSAR网络管理自动化测试(含源码)🔸【如何学习CAN...

【如何学习CAN总线测试】——CAN数据链路层测试

🔸【如何学习CAN总线测试】👉——👉1️⃣CAN物理层测试🔸【如何学习CAN总线测试】👉——👉2️⃣CAN数据链路层测试🔸【如何学习CAN总线测试】👉——👉3️⃣CAN交互层测试🔸【如何学习CAN总线测试】👉——👉4️⃣鲁棒性测试🔸【如何学习CAN总线测试】👉——👉5️⃣AUTOSAR网络管理测试🔸【如何学习CAN总线测试】👉——👉6️⃣AUTOSAR网络管理自动化测试(含源码)🔸【如何学习CAN...

Python控制继电器

前言车载CAN网络常用到本地(IGON)唤醒功能,在进行CAN自动化测试开发时就需要用到继电器来实现该操作。一、环境搭建python3.8pipinstallserial继电器继电器调试助手安装二、继电器调试助手使用调试助手生成继电器控制指令:0110000300020400040003B27A(打开延迟0.3秒)三、Python控制继电器脚本#-*-coding:utf-8-*-importse...

关于瑞萨R7 的CANFD切换为经典CAN

发布时间:2022-11-20 RENESAS CAN 瑞萨
    首先,R7的CANFD是兼容CAN通讯的,在R7芯片他们公用相同的寄存器,至于发出来的帧是CANFD还是CAN取决于协议的不同。    CANFD是可变速率数据段为可变长度,扩展到64Byte,仲裁段和数据段的速率不相同。CANFD新增了FDF,BRS,ESI。FDF表示是CAN报文还是CANFD报文,为隐性时速率可变;BRS为位速率转换;ESI表示错误状态,主动错误发送显性位。 在兼容性...

【Linux】SocketCAN设备调试与开发(模拟器)

大家都知道,车辆底盘系统是通过CAN进行通信的,而常见的有USB-CAN和SocketCAN两种,前者是通过USB口接入PC的,代表的有周立功、创芯等(较便宜),后者是通过网口接入PC的,代表的有Kvaser。USB-CAN一般Windows端的资料会多些,有做好的上位机和Qt、C#、MATLAB等二次开发接口,但Linux的支持只有一个测试样例,需要自己去写;SocketCAN对全平台支持都很好...

【HAL库】STM32CubeMX开发----STM32F407----CAN通信实验

STM32CubeMX下载和安装详细教程【HAL库】STM32CubeMX开发----STM32F407----目录CAN通信----基本原理----详细介绍前言本次实验以STM32F407VET6芯片为MCU,使用25MHz外部时钟源。CAN通信波特率为500Kbps。CAN通信引脚与MCU引脚对应关系如下:CAN通信引脚MCU引脚TXPB9RXPB8一、使用STM32CubeMX----新建C...