Davinci工程CAN模块讲解

news2024/11/24 1:03:44

CAN模块是用来配置CAN Driver的,里面有CanConfigSet是用来配置驱动内容的,CanGeneral配置参数。涉及四个文件Can_Lcfg.c/Can_Lcfg.h/Can_Cfg.c/Can_Cfg.h

CanConfigSet

CanControllers

CAN控制器,我们这里的CAN控制器只有一个,名字是默认的。

里面能够选择的就是用哪个CAN控制器,选完之后下面的基地址会改变,这个控制器是指我们MCU里面的CAN外设。

CAN控制器对应的内容是DemoFbl\Appl\GenData\Can_Lcfg.c里面,主要改变的就是基地址。

CONST(Can_ControllerConfigType, CAN_CONST) Can_ControllerConfig[1] = {  /* PRQA S 1514, 1533 */  /* MD_CSL_ObjectOnlyAccessedOnce */
    /* Index    BaseAddress  CanControllerDefaultBaudrate  TxPollingMask1  CanControllerDefaultBaudrateIdx  InterruptMask1  MailboxRxBasicEndIdx                                                                                                                                           MailboxRxBasicLength                                                                                                                                           MailboxRxBasicStartIdx                                                                                                                                           MailboxTxBasicEndIdx                                                                                                                                           MailboxTxBasicLength                                                                                                                                           MailboxTxBasicStartIdx                                                                                                                                           MailboxUnusedEndIdx                                                                                                                                          MailboxUnusedLength                                                                                                                                          MailboxUnusedStartIdx                                                                                                                                          NumberOfFilters  NumberOfFullConfigurableFilters  NumberOfMaxMailboxes  RFFN   RxBasicHwStart  RxBasicHwStop  RxFullHwStart  RxFullHwStop  TxBasicHwStart  TxBasicHwStop  TxFullHwStart  TxFullHwStop  UnusedHwStart  UnusedHwStop        Comment                         Referable Keys */
  { /*     0 */ 0x40024000u,                         500u,        0x0100u,                              0u,          0x00u,                   2u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                     1u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                     0u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                  4u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                  2u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                    2u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,           0x08u,                           0x08u,                0x20u, 0x00u,             0u,            1u,            8u,           8u,             8u,            9u,            9u,           9u,            1u,          32u }   /* [CT_HSCAN_bce71fc0] */  /* [/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0] */
};

发送和接收处理可以选择为轮询或者中断

/* Interrupt / Polling */
#define CAN_TX_PROCESSING                    CAN_POLLING   /* CAN318_Conf */
#define CAN_RX_PROCESSING                    CAN_POLLING   /* CAN317_Conf */
#define CAN_BUSOFF_PROCESSING                CAN_POLLING   /* CAN314_Conf */
#define CAN_WAKEUP_PROCESSING                CAN_POLLING   /* CAN319_Conf */

CanControllerBaudrateConfigs

里面只有一个CanControllerBaudrateConfig,包含CAN控制器的位时序相关配置参数,这些参数熟悉CAN通讯的基本一眼就能看出来,就是个波特率时钟、波特率分频、波特率和采样点、采样模式。TASD Value是发送仲裁延迟。

对应的内容是DemoFbl\Appl\GenData\Can_Lcfg.c里面的,这里的值就是上面配置的数值,能够一一对应的,查一下芯片规格书就行,这里就不再赘述了。

定义基地址、波特率、

#define CAN_START_SEC_CONST_UNSPECIFIED
/*lint -save -esym(961, 19.1) */
#include "MemMap.h"  /* PRQA S 5087 */  /* MD_MSR_MemMap */
/*lint -restore */
CONST(Can_ControllerConfigType, CAN_CONST) Can_ControllerConfig[1] = {  /* PRQA S 1514, 1533 */  /* MD_CSL_ObjectOnlyAccessedOnce */
    /* Index    BaseAddress  CanControllerDefaultBaudrate  TxPollingMask1  CanControllerDefaultBaudrateIdx  InterruptMask1  MailboxRxBasicEndIdx                                                                                                                                           MailboxRxBasicLength                                                                                                                                           MailboxRxBasicStartIdx                                                                                                                                           MailboxTxBasicEndIdx                                                                                                                                           MailboxTxBasicLength                                                                                                                                           MailboxTxBasicStartIdx                                                                                                                                           MailboxUnusedEndIdx                                                                                                                                          MailboxUnusedLength                                                                                                                                          MailboxUnusedStartIdx                                                                                                                                          NumberOfFilters  NumberOfFullConfigurableFilters  NumberOfMaxMailboxes  RFFN   RxBasicHwStart  RxBasicHwStop  RxFullHwStart  RxFullHwStop  TxBasicHwStart  TxBasicHwStop  TxFullHwStart  TxFullHwStop  UnusedHwStart  UnusedHwStop        Comment                         Referable Keys */
  { /*     0 */ 0x40025000u,                         500u,        0x0100u,                              0u,          0x00u,                   2u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                     1u  /* RX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                   1u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                     0u  /* TX_BASICCAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                  4u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                  2u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,                    2u  /* UNUSED_CAN_TYPE/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0 (DefRef: /MICROSAR/Can_ImxFlexcan3/Can/CanConfigSet/CanController) */,           0x08u,                           0x08u,                0x10u, 0x00u,             0u,            1u,            8u,           8u,             8u,            9u,            9u,           9u,            1u,          16u }   /* [CT_HSCAN_bce71fc0] */  /* [/ActiveEcuC/Can/CanConfigSet/CT_HSCAN_bce71fc0] */
};
#define CAN_STOP_SEC_CONST_UNSPECIFIED
/*lint -save -esym(961, 19.1) */
#include "MemMap.h"  /* PRQA S 5087 */  /* MD_MSR_MemMap */
/*lint -restore */

定义采样点

/**********************************************************************************************************************
  Can_InitObject
**********************************************************************************************************************/
/** 
  \var    Can_InitObject
  \brief  This table contains information about the init object: e.g. bustiming register contents.
  \details
  Element     Description
  CBT     
  Control1
*/ 
#define CAN_START_SEC_CONST_UNSPECIFIED
/*lint -save -esym(961, 19.1) */
#include "MemMap.h"  /* PRQA S 5087 */  /* MD_MSR_MemMap */
/*lint -restore */
CONST(Can_InitObjectType, CAN_CONST) Can_InitObject[1] = {  /* PRQA S 1514, 1533 */  /* MD_CSL_ObjectOnlyAccessedOnce */
    /* Index    CBT          Control1           Comment */
  { /*     0 */ 0x812010C2u, 0x09322004u }   /* ["CT_HSCAN_bce71fc0 - CanControllerBaudrateConfig", init object index: 0] */
};
#define CAN_STOP_SEC_CONST_UNSPECIFIED
/*lint -save -esym(961, 19.1) */
#include "MemMap.h"  /* PRQA S 5087 */  /* MD_MSR_MemMap */
/*lint -restore */

CanFilterMask

是描述CAN标识符基于硬件过滤的掩码,receiveID & Mask == Code & Mask时过滤,一般不会过滤,都是0。

如果你使用了,就会体现在DemoFbl\Appl\GenData\Can_Lcfg.c的Can_InitBasicCan里面。

CanHardwareObjects

这里面没什么好配置的,就是默认一个发送对象和一个接收对象。

拿发送对象举个例子,CanFdPaddingValue是填充数据,CanHandleType可以选择基础CAN还是full CAN。CanIdType选择CAN ID是标准、扩展还是混合的,由于我们这里是乘用车,就只需要基础的。CanIdValue也就是CAN掩码。CanObjectType只是方向是发送还是接收。

CanGeneral

CAN硬件参数配置,处理Can_MainFunction_Busoff(处理总线关闭)、Can_MainFunction_Mode(状态迁移)、Can_MainFunction_Wakeup(总线唤醒)函数的调用周期。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Gradle报错Cause: zip END header not found,构建问题解决

问题描述 构建报错:Cause: zip END header not found 解决办法 File>>setting>>Build,Execution,Deployment>>Gradle 选择你本地的Gradke路径 问题解决

探索Java的未来

探索 Java 的未来是一个非常有趣的话题。Java 是一种广泛使用的编程语言,自 1995 年诞生以来,它已经在软件开发领域占据了重要的地位。尽管有些人担心 Java 可能会因为新技术的出现而变得不再相关,但实际情况并非如此。让我们来看看一些关于 …

MySQL 依据扫码记录统计人员进出区域的时间

解决这样一个问题: 如下图人员在区域的扫码记录,进出区域的时候都必须扫码,中间扫码的不算,统计每个人员进入区域、出区域的时间。 有了人员在区域停留的组号,还差一步group by(在最后)&#xf…

淘宝订单详情与物流电子面单API接口:提升电商物流效率的利器

前言 在电子商务蓬勃发展的今天,物流作为电商交易的重要环节,其效率和准确性直接关系到消费者的购物体验和商家的运营效率。淘宝作为中国最大的电商平台之一,一直致力于提升物流效率和服务质量。其中,淘宝订单详情与物流电子面单A…

Flutter-Statewidget 创建State过程State<XXXX> createState() => _XXXXState()的解释

文章目录 创建widget 的状态对象示例代码解析 完整的代码示例总结 创建widget 的状态对象 今天有个同学问了我下State createState() > _XXXXState()时什么意思。这个代码在flutter开发中一直看到,很多人都不关心这个,直接当模板使用。今天来介绍下这…

运维自动化工具:Ansible 概念与模块详解

目录 前言 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 4、Ansible 架构 4.1 Ansible 组成 4.2 Ansible 命令执行来源 5、Ansible 的优缺点 三、Ansible 安装部署 1、环境部署 2、管理节点安装 Ansible 3、…

智能商品计划系统:引领未来零售业的革新之路

随着科技的飞速发展,人工智能(AI)和大数据技术已成为推动各行业革新的关键动力。在零售行业中,智能商品计划系统的出现,正逐步改变着传统的商品规划与管理方式,为品牌注入新的活力与竞争力。本文将对智能商…

源码部署与SaaS账号:企业软件选择的自建房与租赁公寓之辩

在数字化运营的时代,企业选择软件解决方案就如同在选择住所:源码部署类似于“自建房屋”,而SaaS账号则更像是“租赁公寓”。 自建房屋(源码部署) 当你选择自建房屋时,你需要投入大量的时间和资金来购买土地…

什么是香草看涨期权?香草看涨期权有哪些特点?

什么是香草看涨期权?香草看涨期权有哪些特点? 香草看涨期权,通常也称为香草期权,是金融市场上的一种金融衍生品,由券商或金融机构推出。它允许投资者以较小的费用获取相应股票市值的收益权,主要用于风险管…

如何添加、编辑、调整WordPress菜单

我们最近在使用WordPress建站建设公司网站。我们是使用的hostease的主机产品建设的WordPress网站。在建设网站使用遇到了一些WordPress菜单使用方面的问题。好在hostease提供了不少帮助。 下面把WordPress菜单使用心得分享一下。 本文将详细介绍WordPress菜单的各种功能&#x…

hive日常使用时忘记部分补充(不定时)

1、date_formate、unix_timestamp、from_unixtime用法: 2、lag()、lead()用法: lag()窗口函数返回分区中当前行之前行(可以指定第几行)的值。 如果没有行,则返回null。 lead()窗口…

组件通信-props详解

目录 一、什么是prop 二、props校验 三、组件中prop和data的区别 一、什么是prop Prop定义:组件上注册的一些自定义属性。 Prop作用:向子组件传递数据。 特点: 可以传递任意数量的prop可以传递任意类型的prop 二、props校验 组件的pr…

【Linux】-Linux基础命令[2]

目录 一、目录切换相关命令 1、cd 2、pwd 二、相对路径、绝对路径和特殊路径符 1、相对路径和绝对路径 2、特殊路径符 三、创建目录命令(mkdir) 四、文件操作命令 1、touch 创建文件 2、cat查看文件内容 3、more查看文件内容 4、cp命令复制文…

了解外汇询价和锁价,全球交易中的关键概念

外汇市场是全球交易量最大的金融市场之一,每天都有大量的货币买卖活动。在外汇交易中,询价和锁价是两个关键概念,它们不仅影响交易者的决策,还关系到交易的成本和风险控制。为了帮助交易者更好地理解和应用这两个概念,…

浏览器输入URL到页面展示的过程详解

重点面试题:当你的浏览器中地址栏输入地址并回车的一瞬间到页面能够展示回来,经历了什么? step 1、URL解析 URL:internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator…

网络安全零信任学习1:基本概念

读书《白话零信任》一书笔记系列: 1)基本概念 传统安全模式在某种程度上假设内网用户、设备和系统是可信的, 忽视了来自内网的威胁。企业一般专注于对外部的防御,内网用户 的访问行为往往只受到很少的限制。 随着网络攻击手段的提…

来了,135届广交会的成绩单

5月5日,第135届中国进出口商品交易会(简称广交会)在广州圆满闭幕,这一全球贸易盛典再次展现了中国制造的卓越实力和文化魅力,成就斐然,吸引了全球目光。 接下来,让我们通过数说成绩单&#xff…

c语言常用操作符(2)

1.移位操作符 移位操作符分为<<左移操作符和右移操作符>> 注&#xff1a;移位操作符的操作数只能是整数&#xff0c;同时移位操作符移动的是存储在内存中的二进制位&#xff08;也就是补码&#xff09; 同时移位操作符不要移动负数位&#xff0c;这个是标准未定义…

凡尔码安全巡检卡替代传统纸质记录卡

建筑行业、物业管理、医院等行业的安全巡检的记录方式通常以&#xff1a;1、纸质记录&#xff1a;巡检人员使用纸质巡检表格&#xff0c;手动填写巡检时间、巡检区域、巡检发现的问题以及处理情况。这种方式简单直接&#xff0c;但可能存在信息记录不完整、易丢失等问题。 2、电…

Glowroot:Java应用的性能守护神,让监控变得既轻松又有趣!

Glowroot&#xff1a;Java应用的性能守护神&#xff0c;让监控变得既轻松又有趣&#xff01; 在这个快节奏的数字化时代&#xff0c;作为一名开发者&#xff0c;你是否曾因应用性能问题而夜不能寐&#xff1f;是不是常幻想有个超级英雄能在关键时刻挺身而出&#xff0c;帮你揪…