您的位置:首页 > 其它

MQX之FlexCAN使用

2015-10-27 11:24 330 查看
本篇介绍如何在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) {} 语句的下面就可以。

  加上这句话的目的是为了防止每次都接收自己发送的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: