前面

上篇对Davinci CFG中CAN模块配置参数介绍了一半:
Davinci CFG中CAN模块配置(上)
这篇继续……

CanGeneral

image.png
从上往下一个一个看:
image.png
Base Address:CAN模块寄存器的基本地址。
Change Baudrate Api:是否使用改变波特率的函数。
Clock Divider:时钟分频器
Clock Divider Mode:时钟分频器的模式。

  • NORMAL:fCAN=fSYS * 1/n;
  • FRACTIONAL:fCAN=fSYS*n/1024。
  • 其中,n=Clock Divider的值。

Clock Source Selection:波特率逻辑时钟源的选择。

  • NotUsed:对应的值为0,没有时钟被支持;
  • Fclc:对应的值为1,使用fASYN_CAN;
  • Fosc:对应的值为2,使用Oscillator Clock;
  • ErayPll:对应的值为4,使用E-Ray Clock。

Counter Ref:系统时钟的引用。这个时钟主要用于模块发送和硬件LOOP CHECK 的超时处理。
Dev Error Detection:是否使用DEV错误检测机制。
Enable Multiple Can Driver:是否使用多个CAN驱动。
FD Support:是否支持CANFD。
Freeze Disable:该参数控制CAN模块的freeze功能,该功能依赖于硬件平台是否支持。
Generic Confirmation:是否使用通用的发送确认函数。该函数被所有的发送事件调用。
Generic Pre Transmit:是否使用通用的预传输函数,该函数在消息被发送之前调用,相当于消息发送之前的回调函数。
Generic Precopy:是否使用通用的预复制函数,该函数在消息被接收到之后调用。

image.png
Get Status:是否使用获取状态函数,如果勾选该属性,那么CAN模块会提供一个函数Can_GetStatus()供上层调用。
Hardware Cancel By Appl:该参数定义应用层是否可以取消硬件Loop Check。如果该参数被使用,那么下面的三个函数必须被实现。

  • ApplCan TimerStart();
  • ApplCanTimerLoop();
  • ApplCanTimerEnd()。

并且Hardware Loop Check 的配置将被忽略。
Hardware Handle Type:用于定义硬件MO的数据类型。· Hardware Loop Check:是否使用Loop Check的机制。
Identical Id Cancellation:取消挂起的发送报文。如果发送的报文太多,超出了硬件MO发送的能力,那么最早的报文将被发送。只有当CanIfTransmitCancellation被设置的时候,该属性才能被使用。
Individual Processing:可以分别配置某个硬件MO通过轮循或中断的方式去发送或接收数据。
Interrupt Category:选择中断类型。
Interrupt Lock:选择哪个模块去关中断和开中断,可选的模块有CANDriver或APPL或(CAN Driver和APPL)。
LPdu Receive Callout Function:未被使用,被参数Generic Precopy取代。
Main Function Busoff Period:Busoff主函数的周期。
Main Function Mode Period:Can_MainFunction_Mode函数的调用周期。
Main Function Wakeup Period:Can_MainFunction_Wakeup 函数的调用期。
Max Number Of Hw CAN Channels:CAN模块支持的最大CAN节点的个数。
Max Number Of Hw CAN Obj:CAN模块支持的最大硬件MO的个数。
Multiple Basic CAN Objects:是否支持配置多个BASIC CAN去优化BASIC CAN的接收操作。
Multiplexed Transmission:是否支持双路复用功能的传输。该功能需要硬件的支持。· Optimize One Controller:当只有一个CAN控制器的时候,可以选择该选项以优化配置。
Overrun Notification:定义当接收溢出的时候该如何处理,可选的处理方式有:不处理;通知到DET模块;通知到应用层模块。
Ram Check:检查硬件MO是否有效:

  • None:不作检查;
  • Active:检查,如果无效,函数ApplCanMemCheckFailed()会被调用;

Mailbox Notification:检查,如果无效,函数ApplCanMemCheckFailed()和ApplCan-CorruptMailbox()会被调用。
Relnitalization While Start Transition:当CAN控制器模式被重新设置为START模式的时候,是否重新初始化CAN模块。
Run Time Measurement Support:如果配置该参数,那么可以通过CAN模块发送系统运行时的一些参数,比如CPU使用率等等发送到CANape上,供用户实时监测系统运行的效率。
Rx Basic CAN Support:是否支持Rx Basic CAN(一个MO可以接收多个CAN报文)。
Rx Full CAN Support:是否支持Rx Full CAN(一个MO只可以接收一个CAN报文)
Rx Queue:是否支持接收队列。如果配置,那么所有的接收数据都被缓存到接收队列中,在Can_MainFunction_Read()函数中被处理。
Rx Queue Size:定义接收队列的大小。
Secure Temp Buffer:是否使用硬件的MO作为Temp Buffer。
Temp Buffer 的意思是:当硬件MO接收到一个报文的时候,会将该MO的所有信息(跟该MO有关的所有寄存器的值)都保存在一个TempBuffer中,如果不使能该配置,那么会提供一个软件buffer,否则使用一个硬件MO作为buffer。
Set Baudrate Api:是否使用改变波特率的函数。
Src Address:CAN模块中断寄存器的起始地址。
Support Mixed ID:是否同时支持标准帧和扩展帧。
Support TTCAN Ref:该参数未使用
Timeout Duration:定义超时参数的最大值。
Transmit Cancellation:取消挂起的发送报文。如果发送的报文太多,超出了硬件MO 发送的能力,那么最新的报文将被发送。需要硬件的支持。
Tx Full CAN Support:是否支持Tx Full CAN。
Use Nested CAN Interrupts:是否支持可嵌套的中断。
User Config File:使用用户配置文件,这个配置文件将会被include到Can_Cfg.h文件中。
Version Info Api:使用获取版本信息的API函数。
Wakeup Support:是否支持wakeup功能。需要硬件的支持。