使用EB配置CAN驱动

发布时间 2023-06-08 17:56:43作者: lance9527

CAN的配置涉及can port mcu irq 这4个模块

上图是配置can的关键,把CanHwObjectCount和CanHwFIFOThreshold全改成2,之后就可以将接收ID的上限由标准帧转为扩展帧;

配置的接收ID会对应一个发送端的发送id,起到过滤的作用,比如can卡想发ID=100的帧,那么接收ID里就需要添加一个接收ID=100的HRH;

而发送帧HTH不需要单独指定ID;

所有发送HTH的CanObjectId必须大于所有的接收HRH, 且can00的HRH必须要小于can01的HRH, can00标准帧和扩展帧间的HRH没有明确的大小关系。

 

 

 

mcu 中时钟的配置:

 

can报文里的PDU(即Protocol Data Unit的缩写),即协议数据单元,是SDU和PCI的组成。一个PDU就是一组完整有明确含义的信息。PDU根据ISO的分层又有明确的称谓,在数据链路层传递的PDU为L-PDU,在网络层传递的PDU为N-PDU,在交互层传递的PDU为I-PDU。

特注:

1:接口 Can_17_McmCan_SetControllerMode 的第一个参数为container:CanController下的成员,即can00-can23,一共12个node;

2:接口 Can_17_McmCan_Write 的第一个参数为container:CanHardwareObject下的CanObjectId成员,每一个成员对应一个can帧的id,且container:CanHwFilter下的CanHwFilterCode成员用于指定can帧id。

3:使用逻辑分析仪测量can信号是须注意:1. 选择CANL和GND对接一路通道; 2. 阈值电压设置为2V(因为CAN差分信号的中位电平是2.5V,测量TTL电平是设置1V即可); 3. 直接对接发送端会因为逻辑分析仪测量端没有120R终端电阻产生回波,从而在逻辑分析仪上收到多帧数据,因此需要连接接收端,在完整的can网络上用逻辑分析仪去测量。

4:扩展帧模式下先将CanHwObjectCount改为2,之后修改CanHwFilterMask为0x1FFFFFFF,之后再将CanHwObjectCount改为1

5:mix模式下0x0a和0x280000的关系,即完整扩展ID0x280000的前11位正好是0xa;

 

mcu 中时钟的配置:

 

标准帧:

 

扩展帧:

 

混合帧: