MQX之FlexCAN使用

本篇介绍如何在MQX下使用FlexCAN。

硬件:TWR_K64F120M+USB转CAN适配器

软件:MQX4.1.1

功能:完成CAN的发送和接收功能

步骤:

1)编译bsp,psp工程和xxx\Freescale_MQX_4_1_1\mqx\examples\can\flexcan\build\iar\flexcan_twrk64f120m 中的CAN例子

2)连接好硬件:虽说CAN通讯就CANH和CANL两条线,但是很多客户调试CAN都遇到过硬件的问题,需要注意以下几点

     1)MCU的CAN_TX和CAN_RX要对应连接CAN 收发器的TX和RX,注意不是TX和RX交叉相连哦

     2)USB转CAN适配器CANH和CANL和开发板对应的CANH和CANL相连接

     3)最好保证CAN的终端各有120欧姆的终端匹配电阻,有的客户在开发板那一侧并没有预留120欧姆电阻,这时USB转CAN适配器必须要接上120欧姆电阻,否则可能无法正常通讯。USB转CAN适配器一般会有跳线帽或者短接端口供连上120欧姆电阻。

3)将CAN例子下载到开发板中,在PC机的CAN上位机上设置CAN波特率为125K。按键开发板的复位键,这时在PC上可以接收到MCU CAN发送过来的数据。



    ID为固定的0x321,数据为1字节,数据内容从0x00,每次加1.


 4)在上位机发送一帧数据


在串口调试助手上可以参考接收到的数据:



补充说明:

1)默认的配置不是接收所有的ID,

      因为RX_identifier = 0x123,  result = FLEXCAN_Set_global_stdmask (CAN_DEVICE, 0x222 );

      它可以接收的ID为:x0x xx1x xx1x (2进制)

2)如果要接收所有ID,需要做的改动是:

 i)result = FLEXCAN_Set_global_stdmask (CAN_DEVICE, 0x222 ); 0x222 改为0x000

 ii)FLEXCAN_Initialize 函数里加上一句话:   can_reg_ptr->MCR |= CAN_MCR_SRXDIS_MASK;  放到kflexcacn.c 文件 while((can_reg_ptr->MCR & CAN_MCR_FRZACK_MASK) == 0) {} 语句的下面就可以。

  加上这句话的目的是为了防止每次都接收自己发送的数据。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值