DSP28335 eCAN(增强型控制器局域网)

一、概述

1.1 特征

  • can协议2.0 ,高达1Mbps
  • 32个邮箱  1)—可配置接收或发送—可配置标准或扩展标识符—接收标识符屏蔽功能—支持数据和远程帧—支持0到8字节的数据帧—在接收和发送的消息上使用32位时间戳(发送接收计时器)—接收新消息保护—允许动态可编程的发送消息优先级—采用具有两个中断级别的可编程中断方案—在发送或接收时采用可编程中断超时
  • 低功耗模式•可编程唤醒总线活动(总线唤醒)•自动回复远程请求消息•在仲裁或错误丢失的情况下自动重传帧•由特定消息同步的32位时间戳计数器(与邮箱16一起通信)(邮件时间戳同步)•自测模式-以环回模式接收自己的消息。提供了自生成的确认,从而消除了另一个节点提供确认位的需要。
  • CPK:打包CAN协议 3.3V-CAN Transiever电平转换  差分信号传输数据

1.2 CAN模块和网络

控制器局域网(CAN)采用串行多主通信协议,有效支持分布式实时控制,具有高可靠性,通信速率高达1mbps。CAN总线非常适合在电气噪声环境中运行的应用,例如需要可靠通信的汽车和其他工业领域。
可以使用仲裁协议和错误检测机制在多主机串行总线上发送数据长度最多为8字节的优先级消息,以实现高水平的数据完整性。

1.2.1 CAN协议概述

CAN协议支持四种不同的帧类型用于通信:

CAN总线上的帧CAN总线传输数据的最小单位是帧

CAN总线用消息标识符代替了设备地址,总线上所有设备都接收到相同的数据,并对比数据中所包含的消息标识符,选择是否采用当前数据。

•将数据从发送节点传输到接收节点的数据帧

•由节点传输的远程帧,用于请求传输具有相同标识符的数据帧。

•任何节点在检测到错误条件时传输的错误帧。

•在前一帧和后一帧或远程帧之间提供额外延迟的过载帧。

此外,CAN规范版本2.0B定义了标识符字段长度不同的两种不同格式:

  • 具有11位标识符的标准帧  CAN标准数据帧长度为44 ~ 108位  在一个标准数据帧中最多可以插入23个数据位(数据流编码) 标准帧的总最大数据帧长度为131位
  • 具有29位标识符的扩展帧。CAN扩展数据帧长度为64 ~ 128位  在一个扩展数据帧中最多可以插入28个数据位(数据流编码) 扩展帧为156位。

组成标准或扩展数据帧的位字段及其位置如图13-2所示,包括:

•帧开始(起始段)

•包含标识符和发送消息类型的仲裁字段

•表示传输字节数的控制字段
•最多8字节的数据

•循环冗余校验(CRC)(CPT单元自动打包,不需要人为干预)

•应答

•帧结束位(停止)

 

1.3 CAN模块总览

eCAN具有内部32位架构。

eCAN模块包括:

•CAN协议内核(CPK)

•消息控制器包括:

—内存管理单元(MMU),包括CPU接口、接收控制单元(接收过滤)和定时器管理单元

—邮箱RAM(可存储32条消息)

—控制和状态寄存器

在CPK接收到有效消息后,消息控制器的接收控制单元确定是否必须将收到的消息存储到邮箱RAM的32个消息对象之一中。接收控制单元检查所有消息对象的状态、标识符和掩码,以确定适当的邮箱位置。接收到的邮件存储到通过接受筛选的第一个邮箱中。如果接收控制单元找不到任何邮箱来存储接收到的邮件,则丢弃该邮件。

消息由11位或29位标识符、控制字段和最多8字节的数据组成。

 

当必须传输消息时,消息控制器将消息传输到CPK的传输缓冲区中,以便在下一个总线空闲状态开始消息传输。当必须传输多个消息时,准备传输的具有最高优先级的消息将由消息控制器传输到CPK中。如果两个邮箱具有相同的优先级,则优先传输编号较高的邮箱。

计时器管理单元包括时间戳计数器,并对接收或发送的所有消息设置时间戳。当消息在一段允许的时间(超时)内没有被接收或发送时,它会产生中断。时间戳特性仅在eCAN模式下可用。

要发起数据传输,必须设置传输请求位(TRS.n)。然后在没有CPU参与的情况下执行整个传输过程和可能的错误处理。如果邮箱已配置为接收消息,则CPU可以使用CPU读取指令轻松读取其数据寄存器。邮箱可以配置为在每次成功发送或接收消息后中断CPU。

1.3.1 标准CAN控制器(SCC)模式

SCC模式是eCAN的简化功能模式。在这种模式下,只有16个邮箱(0到15)可用。时间戳功能不可用,可用的接受掩码数量减少。默认选择该模式。使用SCB位(CANMC.13)选择SCC模式或全功能eCAN模式。

1.3.2 内存映射

eCAN模块在内存中映射了两个不同的地址段。第一个段用于访问控制寄存器、状态寄存器、接受掩码、时间戳和消息对象的超时。对控制寄存器和状态寄存器的访问被限制为32位宽访问。本地接受掩码、时间戳寄存器和超时寄存器可以被8位、16位和32位宽访问。第二个地址段用于访问邮箱。


这个内存范围可以访问8位,16位和32位宽。如图13-4所示,这两个内存块中的每一个都使用512字节的地址空间。


消息存储由可由can控制器或CPU寻址的RAM实现。


CPU通过修改RAM或附加寄存器中的各种邮箱来控制CAN控制器。各种存储元素的内容用于执行接收过滤、消息传输和中断处理等功能。


eCAN中的邮箱模块提供32个8字节数据长度的消息邮箱、一个29位标识符和几个控制位。每个邮箱都可以配置为发送或接收。在eCAN模式下,每个邮箱都有其单独的接受掩码。

Note:在应用程序中未使用的LAMn、MOTSn和MOTOn寄存器和邮箱(在CANME寄存器中禁用)可能被CPU用作通用数据内存。

1.3.2.1 32位访问控制和状态寄存器

如第13.4.2节所述,只允许对控制寄存器和状态寄存器进行32位访问。对这些寄存器的16位访问可能会损坏寄存器内容或返回错误数据。TI发布的C2000Ware文件采用影子寄存器结构,有助于32位访问。以下是影子寄存器结构如何用于执行32位读写的几个示例:

 步骤1:执行32位读操作,将整个寄存器复制到它的影子中;

步骤2:修改影子中所需的位;

步骤3:执行32位写操作,将修改后的影子复制到原始寄存器中。

像TAn和RMPn这样的位通过向其写入1来清除。应注意不要无意中清除碎片。在步骤1之前将阴影寄存器初始化为零是一个很好的做法

在上面的示例中,需要检查TA25位的值。这是通过首先将整个CANTA寄存器复制到其影子(使用32位读取),然后检查相关位,重复此操作直到满足该条件来完成的。不应使用以下声明检查TA25位:

DSP28335一个地址16位,两个地址就是一个字(32位)一个邮箱四个字 4*32(bit)

邮箱ID寄存器只能在该邮箱被禁止时,才能修改

 1.4 消息对象

eCAN模块有32个消息对象(邮箱)。
可以将每个消息对象配置为发送或接收。每个消息对象都有自己的接受掩码(在eCAN模式下;不在SCC模式)。
一个消息对象由一个消息邮箱组成,包含:

•29位消息标识符

•消息控制寄存器

•8字节消息数据

•29位接受掩码

•32位时间戳

•32位超时值

此外,寄存器中相应的控制位和状态位允许对消息对象进行控制

1.5 消息邮箱

消息邮箱是在接收到CAN消息之后或发送之前实际存储CAN消息的RAM区域。
CPU可以使用消息邮箱的RAM区域,该区域不用于作为普通内存存储消息。

每个邮箱包含:

•消息标识符- 29位扩展标识符- 11位标准标识符

•标识符扩展位,IDE (MSGID.31)•

接受掩码启用位,AME (MSGID.30)

•自动应答模式位,AAM (MSGID.29)

•传输优先级级别,TPL (MSGCTRL.12-8)

•远程传输请求位,RTR (MSGCTRL.4)

•数据长度码,DLC (MSGCTRL.3-0)

•最多8个字节的数据字段

每个邮箱都可以配置为四种消息对象类型之一(参见表13-1)。发送和接收消息对象用于一个发送方和多个接收方之间的数据交换(1对n通信链路),而请求和应答消息对象用于建立一对一的通信链路。邮箱内存布局如表13-2所示。

 

 1.5.1 发送邮箱

CAN的消息优先级如果一直比较低,可能发不出去:缺点

CPU将需要传输的数据存储在配置为发送邮箱的邮箱中。将数据和标识符写入RAM后,如果设置了相应的TRS[n]位,则通过设置相应的CANME使邮箱启用,则发送消息。n。


如果配置了多个邮箱作为发送邮箱,并且设置了多个对应的TRS[n],则从优先级最高的邮箱开始,按降序依次发送消息。


在scc兼容模式下,邮箱的传输优先级取决于邮箱号。


最高的邮箱号(=15)代表最高的发送优先级。


在eCAN模式下,邮箱传输的优先级取决于消息控制域(MSGCTRL)寄存器中TPL字段的设置。TPL中值最高的邮箱首先被发送。只有当两个邮箱在TPL中具有相同的值时,编号较高的邮箱才会首先传输。

如果由于仲裁丢失或错误导致传输失败,则将重新尝试发送消息。在重新尝试传输之前,CAN模块检查是否有其他传输请求。如果在发送缓冲区中的消息丢失仲裁之前,已经设置了高优先级邮箱(由MBX号或相关的TPL值决定)的TRS位,则发送缓冲区的内容将被替换为高优先级邮箱的内容,并且在仲裁丢失后发送高优先级邮箱。但是,如果该TRS位是在发送缓冲区中的消息失去仲裁之后设置的,则只有在发送缓冲区中的当前消息被发送之后,才会发送更高优先级的MBX。

1.5.2 接受邮箱

使用适当的掩码将每个传入消息的标识符与接收邮箱中持有的标识符进行比较。当检测到相等时,接收到的标识符、控制位和数据字节被写入匹配的RAM位置。同时,设置相应的receive- messagending位RMP[n] (RMP.31-0),如果使能则产生接收中断。如果没有检测到匹配,则不存储消息。


当收到消息时,消息控制器开始在邮箱号最高的邮箱处查找匹配标识符。在SCC兼容模式下,eCAN的邮箱15的接收优先级最高;在eCAN模式下,邮箱31的接收优先级最高。


RMP[n] (RMP.31-0)在读取数据后需要被CPU复位。如果该邮箱已经收到第二条消息,并且已经设置了receive-message-pending位,则设置相应的messagelost位(RML[n] (RML.31-0))。在这种情况下,如果覆盖保护位OPC[n] (OPC.31-0)被清除,则存储的消息将被新数据覆盖;否则,将检查下一个邮箱。


如果将邮箱配置为接收邮箱,并设置了RTR位,则该邮箱可以发送远程帧。发送远程帧后,CAN模块将清除邮箱的TRS位。

1.5.3 CAN模块在正常配置下运行

如果CAN模块处于正常配置(即不处于自检模式),则网络上应该至少还有一个CAN模块,配置为相同的比特率。另一个CAN模块不需要配置为实际从发送节点接收到邮箱RAM中的消息。


但是,它应该配置为相同的比特率。这是因为发送CAN模块期望CAN网络中至少有一个节点确认正确接收了发送的消息。根据CAN协议规范,接收到消息的任何CAN节点都将进行确认(除非确认机制已显式关闭),而不管它是否已被配置为存储接收到的消息。在eCAN模块中不可能关闭确认机制。


不存在其他节点对自检模式的要求。在这种模式下,发送节点产生自己的确认信号。唯一的要求是将节点配置为任何有效的比特率。也就是说,位计时寄存器不应该包含CAN协议不允许的值。


通过将CANTX和CANRX引脚连接在一起(如SCI/SPI/McBSP模块),不可能在外部实现直接数字环回。在自检模式(self-test mode, STM)下可以进行内部环回。

1.6 ECAN 配置

1.6.1 CAN模块初始化

CAN模块在被使用前必须初始化。只有当模块处于初始化模式时才可以进行初始化。流程如图13-6所示。
Programming CCR (CANMC.12) = 1设置初始化模式。只有当CCE (CANES.4) = 1时,才能进行初始化。然后,可以写入配置寄存器。
仅限SCC模式:

•为了修改全局接受掩码寄存器(canam)和两个本地接受掩码寄存器[LAM(0)和LAM(3)], CAN模块也必须设置为初始化模式。


•通过编程CCR(CANMC.12) = 0再次激活模块。


•硬件复位后,初始化模式处于激活状态。

Note:如果CANBTC寄存器被编程为零值,或者留下初始值,CAN模块永远不会离开初始化模式,即CCE (CANES.4)位在清除CCR位时保持为1

 Note:初始化模式和正常模式之间的转换与CAN网络同步进行。也就是说,CAN控制器等待,直到它检测到总线空闲序列(= 11隐性位)之前,它改变模式。在卡到主导总线错误的情况下,CAN控制器无法检测总线空闲状态,因此无法执行模式转换。

1.6.2 CAN位定时配置

CAN协议规范将标称位时间划分为四个不同的时间段:

SYNC_SEG:这部分位时间用于同步总线上的各个节点。在这个区段内预计会有一个边缘。此段始终为1 TIME QUANTUM (TQ)。


PROP_SEG:这部分比特时间用于补偿网络中的物理延迟时间。它是信号在总线上的传播时间、输入比较器延迟和输出驱动器延迟之和的两倍。此段可从1到8时间量子(TQ)进行编程。


PHASE_SEG1:这个相位用来补偿正边相位误差。此段可编程从1到8时间量子(TQ),并可以通过重新同步延长。


PHASE_SEG2:此相位用于补偿负边缘相位误差。该段可编程从2到8时间量子(TQ),并可以通过重新同步缩短。

在eCAN模块中,CAN总线上的位长度由参数TSEG1 (BTC.63)、TSEG2 (BTC.2-0)和BRP (BTC.23.16)决定。


TSEG1结合了CAN协议定义的PROP_SEG和PHASE_SEG1两个时间段。seg2定义了时间段PHASE_SEG2的长度。


IPT(信息处理时间)对应于处理所读比特所需要的时间。IPT对应两个TQ单位

在确定位段值时,必须满足以下位定时规则:

•TSEG1(min)≥TSEG2

•IPT≤TSEG1≤16 TQ

•IPT≤TSEG2≤8 TQ

•IPT = 3/BRP(得到的IPT必须四舍五入到下一个整数值)

•1 TQ≤SJW min[4 TQ, TSEG2] (SJW =同步跳变宽度)

•为了利用三次采样方式,必须选择BRP≥5

1.6.3 CAN比特率计算 

其中bit-time为每比特的时间量子数(TQ)。SYSCLKOUT为设备时钟频率,与CPU时钟频率一致。BRP为BRPreg + 1的值(CANBTC.23-16)。

在上面的等式中,TESG1reg和TSEG2reg表示在CA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/39304.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现代控制原理

一、在状态空间中,建立控制系统的数学模型 如:有单输入(U)--单输出(Y)控制系统,其状态方程和输出方程如下图: 二、画状态结构图 将上述状态方程转化为状态结构图有: 三、高阶控制系统的状态方…

【Git】基础使用

Git基础使用 基础配置工作区-暂存区-版本库添加文件修改文件版本回退撤销修改删除文件分支管理强制删除分支 基础配置 初始化仓库: git init # 此时就会生成一个 .git 的文件夹,切勿修改或删除文件夹里的内容配置仓库——名字: git config…

系统与网络安全------网络应用基础(2)

资料整理于网络资料、书本资料、AI,仅供个人学习参考。 交换机 认识交换机 交换机,Switch 用户将多台计算机/交换机连接在一起,组建网络 交换机负责为其中任意两台计算机提供独享线路进行通信 非网管型交换机 即插即用交换机 即插即用&…

【xiaozhi赎回之路-2:语音可以自己配置就是用GPT本地API】

固件作用 打通了网络和硬件的沟通 修改固件实现【改变连接到小智服务器的】 回答逻辑LLM自定义 自定义了Coze(比较高级,自定义程度比较高,包括知识库,虚拟脚色-恋人-雅思老师-娃娃玩具{可能需要使用显卡对开源模型进行微调-产…

蓝桥杯——嵌入式学习日记

因为lED和LCD共用PC8~PC15引脚,要通过锁存(LE)和(GPIOC->ODR)来避免LED和LCD引脚冲突 修改点: main.c中,GPIO初始化引脚后,LE(PD2引脚低电平锁存,退出透明模式&…

Liunx系统Microsoft SQL Server数据库还原

1.确认Linux系统已安装SQLServer服务并启动 2.在Windows中使用SSMS连接原数据库与Linux远程数据库服务 3.备份 成功备份如下 4.上传bak文件到远程Linux服务器 登陆Linux服务并创建数据库文件夹 退出Linux服务

【学习资源】多元时序分析问题和时序图模型

工业数据分析领域中,多元时序数据分析是一个广泛的问题。今天和大家简单介绍多元时序预测、聚类、分类、时序图模型和相应的深度学习库。 图片来源:https://www.researchgate.net/publication/349207209_Multivariate_Time-Series_Anomaly_Detection_via…

QT二 QT使用generate form 生成常用UI,各种UI控件

一 。没有使用general form 和 使用 general form 后,file层面和代码层面的不同比较 file层面的不同 代码层面的不同, 在 使用了general form之后,在主界面的构造方法中,使用ui->setupUi(this),就完成了所有UI的处理。 而之…

Haption力反馈遥操作机器人:6自由度高精度技术,定义远程操作新标准

Haption在力反馈遥操作机器人技术领域展现了强大的创新能力。其核心技术——力反馈技术,通过提供高度逼真的触觉反馈,显著提升了远程操作的精确性与用户体验。这种技术在工业、医疗等高要求场景中表现出色,同时也为科研和教育领域提供了有力支…

魔塔社区的torch_empty错误问题的解决办法

前言 我在运行魔塔社区(modelscope)的ZhipuAI/chatglm3-6b模型(智谱)的实例程序的时候,碰到了一个奇怪的错误(torch.empty),我尝试解决了一下。 (当前采用的Python版本…

全面了解 Cookies、Session 和 Token

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

51c自动驾驶~合集26

我自己的原文哦~ https://blog.51cto.com/whaosoft/11968755 #大模型/Sora/世界模型之间是什么关系 1 什么是大模型 人工智能大模型(Artificial Intelligence Large Model,简称AI大模型)是指具有庞大的参数规模和复杂程度的机器学习模…

分布式环境下的重复请求防护:非Redis锁替代方案全解析

目录 引言 方案一:前端防护策略 方案二:后端协同控制 方案三:流量控制与过滤 滑动窗口限流 布隆过滤器 方案四:基于框架的实践方案 多层防护策略与最佳实践 总结 引言 在Web应用开发中,防止用户重复点…

4.1 C#获取目录的3个方法的区别

C#中常用有如下3个获取目录的方式如下 1.Directory.GetCurrentDirectory():获取当前工作目录,工作目录可能被用户或其他代码修改。尽量少用。(似乎只要在运行中使用另存为或者打开某个文件夹,当前工作目录就修改) 2.Application…

【漏洞复现】Next.js中间件权限绕过漏洞 CVE-2025-29927

什么是Next.js? Next.js 是由 Vercel 开发的基于 React 的现代 Web 应用框架,具备前后端一体的开发能力,广泛用于开发 Server-side Rendering (SSR) 和静态站点生成(SSG)项目。Next.js 支持传统的 Node.js 模式和基于边…

MCU-芯片时钟与总线和定时器关系,举例QSPI

时钟源: 时钟源为系统时钟提供原始频率信号,系统时钟则通过(分频、倍频、选择器)成为整个芯片的“主时钟”,驱动 CPU 内核、总线(AHB、APB)及外设的运行。 内部时钟源: HSI&#x…

使用 ByteDance 的 UI-TARS Desktop 探索 AI 驱动的 GUI 自动化新前沿

文章目录 UI-TARS Desktop 是什么?技术亮点应用场景如何快速上手?与其他技术的对比未来展望结语 随着人工智能技术的快速发展,AI 正在从单纯的文本生成和图像识别迈向更复杂的交互场景。ByteDance 近期推出的 UI-TARS Desktop(基于…

DockerFile制作镜像(Dockerfile Creates an Image)

DockerFile制作镜像 hub.docker.com 搜索到的 Redis官方镜像,提示我们可以创建自己的 DockerFile 来添加 redis.conf 文件: 于是,我准备进行首次 DockerFile 的制作尝试。 一、准备工作 1.1 下载 redis.conf 我的方案是从 GitHub 上下载 …

C++List模拟实现|细节|难点|易错点|全面解析|类型转换|

目录 1.模拟代码全部 2.四大块代码理解 1.最底层&#xff1a;ListNode部分 2.第二层&#xff1a;ListIterator部分 3.第三层&#xff1a;ReserveListIterator部分 4最终层&#xff1a;List 1.模拟代码全部 using namespace std; template<class T> struct ListNode …

如何让自动驾驶汽车“看清”世界?坐标映射与数据融合概述

在自动驾驶领域,多传感器融合技术是实现车辆环境感知和决策控制的关键。其中,坐标系映射和对应是多传感器融合的重要环节,它涉及到不同传感器数据在统一坐标系下的转换和匹配,以实现对车辆周围环境的准确感知。本文将介绍多传感器融合中坐标系映射和对应的数学基础和实际应…