• CAN Driver


    CAN Driver

    前言:CAN驱动针对的是微控制器内部的CAN控制器,它可以实现以下功能:

    对CAN控制器进行初始化;

    发送和接收报文;

    对报文的数据和功能进行通知(对接收报文的指示、对发送报文的确认);

    溢出和错误处理;

    唤醒检测。

    此外,CAN驱动还具有以下特性:单个或多个CAN通道、CAN驱动的多重实例化、对接收报文的中断/轮询模式。

    CAN驱动是MCAL的一部分,可以执行硬件访问、向上层提供独立于硬件的API,而仅有的能够访问CAN驱动的上层是CAN接口(CAN Interface)。CAN驱动也可以为数据传输的初始化和通知接收事件的回调函数提供服务,该服务也是独立于硬件的。除此之外,CAN驱动也可以控制从属于同一个CAN硬件单元的CAN控制器的行为和状态。

    在工具EB tresos studio(下文称EB)下,以“simple_demo_can_rte “工程为例,该工程所用MCU型号为S32K144(pin100),工程在EB工具下打开页面如图1,配置AUTOSAR MCAL的CAN驱动配置,涉及CAN、PORT、MCU模块相关内容。

    图1:EB工程概览

    1.  PORT模块配置CAN

    1.1  CAN PORT 容器

    如图2左下角outline窗口所示,在PortContainer的实例PortContainer_0中有PortNumberOfPortPins和PortPin两项,前者是PortPin数量后者为Port具体配置项。

    图2:PortPin配置

    1.2  CAN PORT 配置

    如添加配置CAN0,如图2中在红框1处PortNumberOfPortPins加2,红框2处,点击添加Port配置实例。双击打开新增实例,一般需要配置下列四处红框标识处即可,其中

    PortPin Pcr这个的值就是当前你所使用的引脚的MSCR number,在芯片的用户手册附件可查(图4),每一个引脚都有对应的值。选择正确的PCR值后PortPin Mode的枚举中就会有对应的选项出现。图4为CAN0_TX脚配置,CAN0_RX按照同样逻辑配置。

    图3:CAN PortPin配置

    图4:IO Signal Table

    2.  设置CAN模块

    图5:CAN 控制器配置

    2.1  添加CAN控制器实例

    点击图5所示outline窗口的CanConfigSet->CanController,如图所示主窗口点击箭头所指的加号添加控制器实例,双击实例进入配置页面。

    图6:CAN控制器配置页面1

    图7:CAN控制器配置页面2

    2.2  一般配置项

    如图6主要需要设置的项有硬件CAN通道选择,收、发、busoff工作方式选择,图7红框1处CAN波特率配置,红框2处CAN时钟配置。

    2.3  波特率配置方式

    图8:CAN波特率配置1

    图9:CAN波特率配置2

    图10:CAN波特率配置3

    按照计划的采样点算出并填入prop_seg、seg1、seg2等值。

    Tsyn=sync_seg=1(一般默认是1,简称SS)

    TSEG1=prop_seg+seg1

    TSEG2=seg2

    采样点计算方式 sample = (Tsyn+TSEG1)/(Tsyn+TSEG1+TSEG2)

      1.  CAN时钟源参考点配置

    CAN时钟源可选择项在MCU模块的McuClockReferenePoint下选择,路径和添加步骤如图11所示,可以直接选择合适的时钟频率或者重新添加。点击图11的2处并双击进入图12所示页面,选择1处时钟源后点击2处图标会自动显示该时钟源大小。

    图11:CAN时钟配置1

    图12:CAN时钟配置2

      1.  引用配置实例

    上述配置完成后,回到CAN控制器配置处,点击图13箭头所示图标,点击List referenceable nodes工具会列出可选项,从中选择需要的即可。

    图13:左侧图标功能菜单

      1.  mailbox设置

    按照图14添加mailbox实例并双击进入如图15所示配置页面,一般所需配置项如图红框所示,收、发、CANID过滤配置,CAN控制器配置如图13所示同样的方法,索引到合适的CAN控制器配置。

    图14:mailbox设置路径

    图15:mailbox配置

  • 相关阅读:
    比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
    电商API接口商品详情获取示例
    【Redis】实战篇:商户查询缓存(缓存穿透、缓存雪崩、缓存击穿问题)
    [XSCTF]easyxor
    基于RT-Thread的智能家居助手
    R语言快速实现图片布局(1)
    开源游戏服务器框架NoahGameFrame(NF)客户端的Log日志系统(五)
    问题复盘|在使用 Gson 时,报 Failed to parse date [““] 错误
    java mabitis 省市区三级联动
    93.(后端)分类参数增加接口实现——flask框架使用蓝图与restful发送请求添加数据
  • 原文地址:https://blog.csdn.net/ls_dashang/article/details/132928373