Davinci工程CAN模块讲解

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.mfbz.cn/a/602578.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ETCD 简介

ETCD 简介 1-etcd介绍 etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。具有以下特点: 简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单键…

Duplicate File Finder Pro for Mac激活版:重复文件清理软件

在繁杂的文件管理中,你是否曾为重复文件而烦恼?Duplicate File Finder Pro for Mac,正是你不可或缺的得力助手。这款专业级工具,能够迅速扫描并定位Mac系统中的重复文件,让你的存储空间恢复清爽。 通过强大的算法支持&…

AOF持久化是怎么实现的?

AOF持久化是怎么实现的? AOF 日志三种写回策略AOF 重写机制AOF 后台重写总结参考资料 AOF 日志 试想一下,如果 Redis 每执行一条写操作命令,就把该命令以追加的方式写入到一个文件里,然后重启 Redis 的时候,先去读取这…

如何利用AI提高内容生产效率

目录 一、自动化内容生成 二、内容分发与推广 三、内容分析与优化 图片来源网络,侵权联系可删 一、自动化内容生成 随着AI技术的飞速发展,自动化内容生成已经成为提高内容生产效率的重要手段。AI可以通过自然语言处理(NLP)、机…

【经验总结】Vue2中的全局变量(store

需求场景 需要在vue中存储一个可变的,可读写的全局变量在不同的js、页面中均可调用和读写 技术:使用vue的store 用法总结 一、定义变量 1、找到vue的/src/store路径,在modules文件夹下创建文件(这里便于测试创建demo.js&…

2024年融资融券利率最新变化,又降低了?

最近有很多朋友在问我问融资融券的业务,都是比较关心这个利率的问题。确实,做融资融券最重要的利率,利率低会节省很大一笔资金,今天在这边给大家对接一个上市券商,可以给到大家万一的交易佣金和5%的融资利率&#xff0…

Redis快速学习

Redis快速学习 一、 Redis快速入门1.1 初始Redis1.1.1 Redis的存储方式1.1.2 NoSQL 与 sql 之间的区别 1.2 Redis概述1.2.1 Redis是什么1.2.2 Redis有什么用1.2.3 Redis的特性 1.3 Redis安装测试1.3.1 Redis Linux安装 1.4 Redis测试工具1.5 Redis的基本知识 二、Redis的五大数…

Java 8特性(一) 之 手写Stream流filter、map和forEach方法

Java 8特性(一) 之 手写Stream流filter、map和forEach方法 今天看了一下Java 8的Stream流,学习了一下函数式编程,这才感受函数式编程如此爽,之前就使用过ES8.7.1的函数式编程,当时就在想啥时候咱也能写出这…

[数据概念|方案实操][最新]数据资产入表4月速递

“ 在各地数据资产变现“热辣滚烫”” 国家数据局全国数据工作会议前后,数据资源“入表”的尝试在各地持续热火朝天地展开,多地实现数据资产入表和利用数据资产进行融资实现“零的突破”。 我们今天就把4月前后的案例做一个小结,之前的案例大…

零资源跑大模型:Hugging Face API + LiteLLM + Flask

前言 HuggingFace 是自然语言处理领域的开源软件库和平台,其收纳了众多最前沿的模型和数据集,并提供了 Serverless Inference API,用户可以轻松调用这些模型,甚至用于运行自己的私人模型。本教程将指导用户如何利用 Hugging Face…

国内免费AI聊天机器人(ChatGPT)推荐(下)含ChatGPT4.0版本

作者主页:点击! 国内免费AI推荐专栏:点击! 创作时间:2024年5月7日10点39分 现在,国内各种免费AI聊天机器人(ChatGPT)层出不穷,功能强大、玩法多样,可以满足你的不同需求。 今天&a…

深入解析:C语言中的八大经典排序算法全揭秘

目录 排序的概念及运用 排序概念 排序运用 常见排序算法 八大排序详解 直接插入排序 基本思想 代码实现 希尔排序 基本思想 代码实现 选择排序 基本思想 代码实现 堆排序 堆的向下调整算法(前提) 基本思想 代码实现 冒泡排序 基本思…

springboot+vue+mybatis基于协同过滤算法的新闻推荐系统+PPT+论文+讲解+售后

本系统为用户而设计制作新闻推荐系统,旨在实现新闻推荐智能化、现代化管理。本新闻推荐管理自动化系统的开发和研制的最终目的是将新闻推荐管理的运作模式从手工记录数据转变为网络信息查询管理,从而为现代管理人员的使用提供更多的便利和条件。使新闻推…

【SpringBoot】使用MockMvc+Mockito进行单元测试像德芙一样纵享丝滑!

文章目录 前言:Java常见的单元测试框架一.Junit5基础二.SpringBoot项目单元测试1.添加依赖2.SpringBoot单元测试标准结构3.SpringBoot单元测试常用注解 三.单元测试中如何注入依赖对象1.真实注入(AutoWired、 Resource)2.Mock注入2.1.前言2.2…

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接:Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发,并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序,比上一篇文章中直接克隆 Processing-An…

90%前端就职小厂,你却说React是国内主流,做人不可以这么扯淡。

有人在自媒体上大放厥词,说赶紧放弃vue,拥抱react吧,vue是过家家的,大厂没有用的,你去问问有多人前端在大厂,做人不可以扯淡。但凡你去调查研究,你就发现大厂很少用vue,同样也很少用…

MySQL安装教程(自定义安装)

参考博主https://blog.csdn.net/m0_71422677/article/details/136007088 一、从mysql官网安装 今天分享的是Windows系统下MySQL的安装教程,打开MySQL官网https://www.mysql.com/downloads/ 这里选择第二个 等待下载完成,下载完成后,双击打开…

微火全域外卖系统是什么?为什么市场占有率这么高?

近日,全域外卖领域又出现了新变动,一个名为微火的品牌凭借着其全域外卖系统,在短短几个月的时间里,就占领了大部分市场。截止发稿日期前,微火全域外卖系统的市场占有率已经超过48%。 据了解,所谓的全域外卖…

使用perf查看热点函数和系统调用最大延迟函数

1、安装perf工具 1.1、ubuntu 18.04 x86下的安装 安装sudo apt install linux-source sudo apt install linux-tools-uname -r # ubuntu 18.04虚拟机实操可行 1.2、ubuntu 18.04 ARM下的安装 参考 Nvidia Jetson系列产品安装Perf ​ARM64版本的Ubuntu上安装perf 与参考文…

24年考研管综199真题PDF共18页

整理了24年考研管综199真题PDF共18页,包含问题求解,条件充分性判断,逻辑推理,写作,几个部分,希望对大家有所帮助 一、问题求解 这部分包含15道小题,每题3分,共45分。题目类型为选择…
最新文章