LPC55S16的Classical CAN 测试

发布者:breakthrough3最新更新时间:2024-08-19 来源: cnblogs关键字:CAN  测试 手机看文章 扫描二维码
随时随地手机看文章

拿到LPC55S16的板卡好几天了,本来目标是测试CANFD和USB转换通信的,发现板卡上接的外设还挺多,话说可以玩一段时间了。在测试CANFD通信之前,先测试一下Classical CAN。,关于这两者的不同,网上说的比较详细。主要的就是通信速率,数据比特率提高到了8Mbps和最大数据帧提高到了64个字节。当前只在应用层面来考虑。官方的SDK提供了MCAN例程,考虑到NXP的IDE还在熟悉当中,还是移植到keil里调试比较方便,如图1所示。

这次测试的目的就是完成Classical CAN每隔2s完成8字节发送,中断接收。

连接图如图2所示:

官方原理图如如3所示:

将demo移植到keil后,就是读程序,然后为目的修改程序测试。

2S延时使用的是SYSTick,如下:

  1. /* Set systick reload value to generate 1ms interrupt */

  2.     if (SysTick_Config(SystemCoreClock / 1000U))

  3.     {

  4.         while (1)

  5.         {

  6.         }

  7.     }

  8. SysTick_DelayTicks(2000U);


按照以往的定义,初始化时钟,引脚,CAN定义,主要是字节数,ID和波特率

整个过程的思路是先测试CAN的发送,如果没问题,再测试CAN的接收,最后整合一下。

波特率的使用:

  1. if (MCAN_CalculateImprovedTimingValues(mcanConfig.baudRateA, MCAN_CLK_FREQ, &timing_config))

  2.     {

  3.         /* Update the improved timing configuration*/

  4.         memcpy(&(mcanConfig.timingConfig), &timing_config, sizeof(mcan_timing_config_t));

  5.     }


可以追到波特率的定义上,demo使用的baudRateA 500Kbps,当然也可以选1Mbps.

发送配置:

  1. /* TX buffer config. */

  2.     memset(&txBuffer, 0, sizeof(txBuffer));

  3.     txBuffer.address       = TX_BUFFER_OFS;

  4.     txBuffer.dedicatedSize = 1U;

  5.     txBuffer.fqSize        = 0;

  6.     txBuffer.datafieldSize = kMCAN_8ByteDatafield;

  7. MCAN_SetTxBufferConfig(EXAMPLE_MCAN, &txBuffer);


模式选择:

  1. /* Finish software initialization and enter normal mode, synchronizes to

  2.        CAN bus, ready for communication */

  3.     MCAN_EnterNormalMode(EXAMPLE_MCAN);


接收配置:

  1. /* STD filter config. */

  2.     rxFilter.address  = STD_FILTER_OFS;

  3.     rxFilter.idFormat = kMCAN_FrameIDStandard;

  4.     rxFilter.listSize = 1U;

  5.     rxFilter.nmFrame  = kMCAN_reject0;

  6.     rxFilter.remFrame = kMCAN_rejectFrame;

  7.     MCAN_SetFilterConfig(EXAMPLE_MCAN, &rxFilter);


  8.     stdFilter.sfec = kMCAN_storeinFifo0;

  9.     /* Classic filter mode, only filter matching ID. */

  10.     stdFilter.sft   = kMCAN_classic;

  11.     stdFilter.sfid1 = rxIdentifier;

  12.     stdFilter.sfid2 = 0x7FFU;

  13.     MCAN_SetSTDFilterElement(EXAMPLE_MCAN, &rxFilter, &stdFilter, 0);


  14.     /* RX fifo0 config. */

  15.     rxFifo0.address       = RX_FIFO0_OFS;

  16.     rxFifo0.elementSize   = 1U;

  17.     rxFifo0.watermark     = 0;

  18.     rxFifo0.opmode        = kMCAN_FifoBlocking;

  19.     rxFifo0.datafieldSize = kMCAN_8ByteDatafield;


发送帧格式并完成发送:

  1. txIdentifier = 0x123U;

  2. txFrame.xtd  = kMCAN_FrameIDStandard;

  3.             txFrame.rtr  = kMCAN_FrameTypeData;

  4.             txFrame.fdf  = 0;

  5.             txFrame.brs  = 0;

  6.             txFrame.dlc  = 8U;

  7.             txFrame.id   = txIdentifier << STDID_OFFSET;

  8.             txFrame.data = tx_datac;

  9.             txFrame.size = CAN_DATASIZE;

  10. txXfer.frame     = &txFrame;

  11.             txXfer.bufferIdx = 0;

  12.             MCAN_TransferSendNonBlocking(EXAMPLE_MCAN, &mcanHandle, &txXfer);


接收帧格式并完成数据接收:

  1. rxIdentifier = 0x321U;


在测试的时候demo上有这么一段:

  1.            while (!rxComplete)

  2.            {

  3.         }

  4.             rxComplete = false;


就是用了一个while语句,接收完才会继续发送,屏蔽到就不影响按时发送了。

发送和接收数据如图4和图5所示:

在《How to Use CAN-FD to Transfer Data on LPC5500 Series 》文档中也有对Timing config的解释,在深入学习中还需要继续理解。测试完CAN,就是继续CANFD。

顺便吐个槽,官方文档很多明面上没有,需要找,这会多花费一些时间。


关键字:CAN  测试 引用地址:LPC55S16的Classical CAN 测试

上一篇:LPC553X MCU 体系结构概述
下一篇:ok6410的madplay配置

推荐阅读最新更新时间:2026-03-24 19:46

CAN一致性测试之输出电压测试
  复杂的CAN网络,单个节点的输出电压如果不符合规范,则在现场组网后容易出现信号电平不可靠的情况,导致错误帧的出现,各节点间无法进行通信。那么,如何判断CAN节点的输出电压符合严格的规定?   CAN一致性测试,就是要求整车CAN网络中的节点都满足CAN总线节点规范要求,缩小CAN网络中节点差异,保证CAN网络的环境稳定,有效提高CAN网络的抗干扰能力。所以,为了保证CAN节点的输出电压符合规范,应该对输出电压进行一致性测试。   一、测试标准   每个厂家在产品投入使用前,都要测试CAN节点DUT(被测设备)的输出电压幅值。一般是使用ISO11989-2输出电压标准的CAN测试方法,具体要求如表1所示,为测试标准“ISO
[嵌入式]
<font color='red'>CAN</font>一致性<font color='red'>测试</font>之输出电压<font color='red'>测试</font>
CAN一致性之信号边沿测试
  CAN总线边沿时间会影响采样正确性,而采样错误会造成不断错误帧出现,影响CAN总线通信。那么CAN总线边沿时间标准是什么?边沿时间如何测量呢?   一、CAN测试边沿时间意义   目前在国内汽车电子行业没有明确的标准,也就造成汽车零配件质量良莠不齐,零配件整装到汽车上将会造成CAN总线通信异常,给汽车驾驶带来安全隐患。如下是GMW3122信号边沿标准对CAN总线边沿的规范要求。      表中根据需求不同,波特率不同分为高速CAN、中速CAN。测试的是信号边沿时间,边沿时间是指隐性电平到显性电平时间和显性电平到隐性电平变化的总时间。隐性电平(逻辑值0)到显性电平(逻辑值1)时间为上升沿,显性电平到隐性电平为下降沿。
[嵌入式]
<font color='red'>CAN</font>一致性之信号边沿<font color='red'>测试</font>
CAN一致性测试系统之地偏移测试
  伴随越来越多的高科技汽车电子产品的开发与应用,如何解决汽车电子系统的电磁兼容问题,提高汽车的可靠性和安全性,已经成为一个非常重要和迫切的问题。然而接地设计作为根治电磁兼容问题方法之一,地偏移测试显得就尤为重要了,因此本文对接地设计及地偏移测试进行了解读。   一、整车系统接地设计   1、地线的意义   地线在汽车上不仅仅是一个接点,它是一个综合的系统的汽车电气系统,它的主要功能有:   提供给直流负载、交流负载和瞬变负载电流回路,连接蓄电池或发电机的负极端;   提供电压给传感器、通讯系统、单端数字输入等;   静电屏蔽,隔离外部RF辐射;   提供静电放电泄流,ESD保护;   汽车天线的地平面;   降低
[嵌入式]
<font color='red'>CAN</font>一致性<font color='red'>测试</font>系统之地偏移<font color='red'>测试</font>
如何用示波器测试CAN信号
作为目前车载网络领域最成熟、应用最广泛的通信总线之一,CAN总线具有传输可靠性高、速度快、易用等特点。由于其涉及到用户的人身安全,所以在汽车研发、生产、检测、维修等过程中均需做严格的测试。 由于CAN信号是差分信号,在测试过程中一般需要使用差分探头来进行测试,但在研发阶段的板级测试中,确认安全的前提下可以使用普通低压无源探头进行测试。今天给大家介绍 鼎阳科技 SDS5000X标配的CAN总线触发与解码,了解 示波器 是如何测试CAN信号。本文将以SDS5054X+STB3演示板+普通无源探头展示CAN的测试,供大家参考。 1. CAN协议 在测试前需要充分了解CAN 协议。 CAN协议有4种帧类型,分别为数据帧、远程帧、错误
[汽车电子]
如何用示波器<font color='red'>测试</font><font color='red'>CAN</font>信号
高速数字化仪和AWG在车辆总线(CAN/LIN/PSI5)测试中的应用(一)
引言 模块化仪器比传统仪器的尺寸大大减小,适合安装在电路卡上,同时也可以将多个卡插入具有通用计算机 接口 、 电源 和互连的框架中。模块化仪器框架包括使用标准PCIe接口的计算机、PXI测试框架或基于LXI的盒子, 工程师 通常会使用多个卡并将其配置到测试系统中,系统可能包含多个仪器、具有多个通道的单一仪器类型或两者的组合。 上图显示了配备两个PCIe模块化数字化仪的便携式计算机。这种紧凑、独立的装置可在车辆内使用,允许车辆行驶时进行测量。基于PXI的模块化系统并不具有自主性,他们需要外部显示器和键盘才能工作,但可以在单个机箱内按需配置更多数量的模块化仪器。基于LXI的系统(例如德思特数字化仪和AWG二合一 产品 )非常适
[汽车电子]
基于单片机AT89C51和CAN控制器实现柴油发动机测试系统的设计
1. 引言 许多现在正在使用的柴油发动机测试平台都是通过仪表读数来分析、判断一台柴油发动机测试时的工作状态,不仅效率低、精度差,而且综合分析判断能力有限。为了能够更加全面、直观地了解柴油发动机测试过程,迅速发现并排除故障隐患,使测试操作人员提高分析判断能力,结合企业技术改造,我们开发了基于CAN现场总线的柴油发动机测试系统,实现了同时对多台柴油发动机测试过程的监控与测试。 2. 测试系统结构组成 根据柴油发动机的测试要求,本系统主要完成对柴油发动机测试过程中各种传感信号的处理以及柴油机工况数据的采集,并将数据通过CAN总线送上位机,要求处理16路模拟信号、16路I/O信号。采集的参数主要有:机油压力和温度、冷却水温度、进排气温
[单片机]
基于单片机AT89C51和<font color='red'>CAN</font>控制器实现柴油发动机<font color='red'>测试</font>系统的设计
CAN总线学习笔记|CAN测试STM32的CAN中断接收
CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试 1. STM32CubeMX配置 CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处设置为Normal普通模式) CAN波特率的计算公式:只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率。比如设置TS1=8、TS2=6和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45000/6
[单片机]
<font color='red'>CAN</font>总线学习笔记|<font color='red'>CAN</font>盒<font color='red'>测试</font>STM32的<font color='red'>CAN</font>中断接收
CAN总线学习笔记 | CAN测试STM32的CAN中断接收CAN总线学习笔记 | CAN测试STM32的CAN中断接收
CAN基础知识介绍文中介绍了CAN协议相关的基础知识,以及STM32F4芯片的CAN控制器相关知识,下面将通过实例,利用STM32CubeMX图形化配置工具,并配合CAN盒,来实现CAN通讯的中断收发测试 1. STM32CubeMX配置 ⏩ CAN是挂载在APB1总线上,设置PCLK1时钟频率到最大45MHz ⏩ 激活CAN1,配置位时序参数,其他基本参数以及工作模式(此处设置为Normal普通模式) CAN波特率的计算公式:只需要知道BS1和BS2的设置,以及APB1的时钟频率,就可以方便的计算出波特率。比如设置TS1=8、TS2=6和BRP=6,在APB1频率为45Mhz的条件下,即可得到CAN通信的波特率=45
[单片机]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved