XC164单片机TwinCAN模块调试心得

本文详细介绍了XC164单片机的TwinCAN模块调试过程,包括帧类型、帧格式、报文路由、速度、节点配置、报文接收与发送的细节,以及中断和寄存器设置。通过实例展示了如何进行报文对象的接收、发送及错误处理,提供了关键寄存器和函数的解释,有助于理解并应用TwinCAN模块的调试。
摘要由CSDN通过智能技术生成

 

单片机TwinCAN调试心得

 

1、  帧类型

(1)       数据帧:数据帧将数据从发送器传输到接收器

(2)       远程帧:总线单元发出远程帧,请求发送具有同一标识符的数据帧。/ MSGDRn4

(3)       错误帧:任何单元检测到总线错误就发出错误帧

(4)       过载帧:过载帧用于在先行和后续数据帧(或远程帧)之间提供一附加的延时。

数据帧和远程帧即可使用标准帧,也可使用扩展帧。

2、  帧格式介绍

数据帧

数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。

远程帧

远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束。

错误帧

错误帧由两个不同的场组成。第一个场是错误标志,用做为不同站提供错误标志的叠加;第二个场是错误界定符。

超载帧

超载帧包括两个位场:超载标志和超载界定符。

3、  报文路由:报文的内容由识别符命名。识别符不指出报文的目的地,但解释数据的含义。因此,网络上所有的节点可以通过报文滤波确定是否应对该数据做出反应。

4、  不同的系统,CAN 的速度不同。可是,在一给定的系统里,位速率是唯一的,并且是固定的。

5、  该模块分为两个节点,NODE ANODE B32个对象可以通过MSGCFGHn.NODE位来分别选择将该对象分配到哪个节点。

6、  32个报文对象只能作为接受对象或发送对象,不能在接收和发送之间转换。作为接收对象的必须在初始化的时候首先将其配置成接收对象。

7、  回环模式可方便的用于调试,ABTR.LBM = 1BBTR.LBM = 1使能回环模式。在回环模式下,属于节点A的对象发送的报文只能由属于节点B的对象接受,反之亦如此。

8、  报文接收时可对所接收的报文进行验收滤波,称为报文标识符验收滤波。它们分别通过仲裁寄存器(MSGARHn,MSGARLn(ID)和验收屏蔽寄存器(MSGAMRHn,MSGAMRLn)设置实现。具体过程如下:

9、  几个结构体的说明:

(1)       该寄存器用于软件编程,说明如下

typedef struct

  {

     uword  ;   // 消息配置寄存器

     ulong  ulID;       // 扩展标识 (29-bit)

     ulong  ulMask;     // 标准验收屏蔽(11-bit)/扩展验收屏蔽 (29-bit)

     ubyte  ubData[8];  // 八个字节数据

     uword  uwCounter;  // 当前接收对象接收到数据的帧数CAN_BFCRL//CAN_AFCRL

  }TCAN_SWObj;

uwMsgCfg一般用到低字节,各位代表的意义如下:

         7     6     5      4    3     2     1     0

      |-----------------------------------------------------------------------|

      |        DLC            | DIR | XTD | NODE | RMM |

      |------------------------------------------------------------------------|

(2)       每个CAN对象寄存器结构体

struct stCanObj

{

  ubyte  ubData[8];  // Message Data 0..7

  ulong  ulCANAR;    // Arbitration Register

  ulong  ulCANAMR;   // Acceptance Mask Register

  uword  uwMSGCTR;   // Message Control Register

  uword  uwCounter;  // Frame Counter

  uword  uwMSGCFG;   // Message Configuration Register

  uword  uwINP;      // Interrupt Node Pointer

  uword  uwCANFCR;   // FIFO / Gateway Control Register

  uword  uwCANPTR;   // FIFO Pointer

  ulong  ulReserved; // Reserved

};

 

10、              几个重要寄存器的意义:

 

n.RXIE报文对象接收中断使能(=10

.TXIE----报文对象发送中断使能(=10

(3)       MSGCTRHn.MSGVAL---报文对象有效(=10

(4)       MSGCTRHn.NEWDAT---报文对象中数据已更新(=10

(5)       MSGCTRHn.MSGLST---NEWDAT仍然置位,CAN控制器已将报文保存到该报文对象中,而先前的报文丢失(=10),仅用于接受

(6)       MSGCTRHn.CPUUPD---报文对象自动发送被禁止(=10);可由CAN控制器自动发送报文对象中的数据(=01

(7)       MSGCTRHn.TXRQ---CPU或远程帧请求的报文对象数据发送被挂起(=10)。报文成功发送后,TXRQ自动复位;如果存在几个有效的报文对象又挂起的发送请求,报文编号最低的报文对象将被首先发送

(8)       MSGCTRHn.RMTPND---远程节点请求报文对象数据发送,但数据并未发送。当RMTPND被置位时,CAN节点控制器也置位TXRQ.

.RMM---该发送报文对象的远程监控模式被使能。带匹配标识符远程帧的标识符和DLC码被复制到发送报文对象中,以监控输入的远程帧。该位仅对发送报文有效,对接受报文无影响。

(2)       MSGCFGHn.NODE---报文对象CAN节点选择,0=A1=B

(3)       MSGCFGHn.XTD-----报文对象扩展标识符,1=11位,0=29

(4)       MSGCFGHn.DIR------报文对象方向控制,0=定义该报文为发送对象,1=定义该报文为接受对象

(5)       MSGCFGHn.DLC-----报文对象数据长度码

(6)       MSGCFGHn.RXINP/TXINP---分别为接收/发送中断节点指针,0~7

11、              发送后一定要判断TXOK时候置位,确保在发送下一组数据之前将数据发送完成

12、              附程序:

 

H

 

#ifndef _CAN_H_

#define _CAN_H_

 

 

// The following data type serves as a software message object. Each access to

// a hardware message object has to be made by forward a pointer to a software

// message object (TCAN_SWObj). The data type has the following fields:

//

// uwMsgCfg:

// this byte has the same structure as the message configuration register of a

// hardware message object. It contains the "Data Lenght Code" (DLC), the

// "Extended Identifier" (XTD), the "Message Direction" (DIR), the "Node

// Select" and the "Remote Monitoring Mode".

//

//

//         7     6     5      4    3     2     1     0

//      |------------------------------------------------|

//      |        DLC            | DIR | XTD | NODE | RMM |

//      |------------------------------------------------|

//

// ulID:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值