F28335 can通信总结

文章讲述了在CAN通信中遇到接收中断问题的排查过程,涉及硬件检查、官方例程测试、ID号设置(包括屏蔽和配置)以及针对不同硬件平台(如GPIO配置和时钟频率调整)的注意事项。
摘要由CSDN通过智能技术生成

问题:CAN通信能够发送,但是无法进行接收中断函数

排查:硬件没有问题,canrx引脚通过示波器能够看到对应的波形,发送正常则硬件数据流没有问题,接收无法进入中断,有可能是接收中断没有配置正确。

方案1,选择官方例程测试,依据没有进入接收中断。

方案2,在网上搜集很多例程依旧没有进入接收中断。

最后,通过官方例程教程发现是ID号被屏蔽。0xc20000,才能进入中断。

且在配置ID号之前,要关闭中断。

‘      ECanbShadow.CANME.all = ECanbRegs.CANME.all;
      ECanbShadow.CANME.all = 0;      // Required before writing the MSGIDs
      ECanbRegs.CANME.all = ECanbShadow.CANME.all;

在配置参数

    /*接收邮箱的ID号*/

    ECanbMboxes.MBOX16.MSGID.all =  0xe012a8e9;

/************************************************************************/

问题2:不同硬件平台,有可能硬件接口不一样,或者时钟频率不一样都需要注意修改。

 //配置GPIO引脚工作在eCAN功能
#if 0
   GpioCtrlRegs.GPAPUD.bit.GPIO16 = 1;   // Enable pull-up for GPIO16 (CANTXB)
   GpioCtrlRegs.GPAPUD.bit.GPIO17 = 1;   // Enable pull-up for GPIO17 (CANRXB)
   GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch qual for GPIO17 (CANRXB)
   GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 2;  // Configure GPIO16 for CANTXB operation
   GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 2;  // Configure GPIO17 for CANRXB operation
#endif
#if 1
   GpioCtrlRegs.GPAPUD.bit.GPIO20 = 1;   // Enable pull-up for GPIO20 (CANTXB)
   GpioCtrlRegs.GPAPUD.bit.GPIO21 = 1;   // Enable pull-up for GPIO21 (CANRXB)
   GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; // Asynch qual for GPIO21 (CANRXB)
   GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 3;  // Configure GPIO20 for CANTXB operation
   GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 3;
#endif

外部时钟30Mhz,选择,DSP28_DIVSEL     2; DSP28_PLLCR   10

外部时钟25Mhz选择  DSP28_DIVSEL     3;#define DSP28_PLLCR    6

/*-----------------------------------------------------------------------------

      Specify the PLL control register (PLLCR) and divide select (DIVSEL) value.
-----------------------------------------------------------------------------*/
 // #define DSP28_DIVSEL   0   // Enable /4 for SYSCLKOUT
//#define DSP28_DIVSEL   1 // Disable /4 for SYSCKOUT
// #define DSP28_DIVSEL     2 // Enable /2 for SYSCLKOUT
#define DSP28_DIVSEL     3 // Enable /1 for SYSCLKOUT

//  #define DSP28_PLLCR   10
//#define DSP28_PLLCR    9
//  #define DSP28_PLLCR    8
//#define DSP28_PLLCR    7
#define DSP28_PLLCR    6
//#define DSP28_PLLCR    5
//#define DSP28_PLLCR    4
//#define DSP28_PLLCR    3
//  #define DSP28_PLLCR    2
//  #define DSP28_PLLCR    1
//#define DSP28_PLLCR    0  // PLL is bypassed in this mode
//---------------

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值