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发送过来的数据。
![](http://img.blog.csdn.net/20151027114005649?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
ID为固定的0x321,数据为1字节,数据内容从0x00,每次加1.
4)在上位机发送一帧数据
![](http://img.blog.csdn.net/20151027114332208?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
在串口调试助手上可以参考接收到的数据:
![](http://img.blog.csdn.net/20151027114641620?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
补充说明:
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) {} 语句的下面就可以。
加上这句话的目的是为了防止每次都接收自己发送的数据。
硬件: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) {} 语句的下面就可以。
加上这句话的目的是为了防止每次都接收自己发送的数据。
相关文章推荐
- Http与协议TCP协议简单易懂
- 【MVC5】使用权限+角色
- 设置IE文本模式,兼容css
- 使用xhprof对php性能追踪分析
- sz 与 rz 命令
- 虚拟主机配置
- centos6.5 安装svn可视化管理工具 if.svnadmin
- 【NOIP2011】聪明的质检员 二分
- 单元测试——破除依赖
- 微信开发、申请测试号
- 10.26 作业
- 忽略某些文件
- Hadoop-1.x 单机模式部署与测试
- 论文笔记:Ten years of pedestrian detection, what have we learned?
- Unity鼠标设置
- tomcat整合axis2
- HR说简历还是这个格式比较好
- OC --- Category
- poj 2739
- Adaptive to the device and user Device Compatibility , language configuration comments