0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术SJA1000的CAN通讯接口函数扩展应用介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-15 14:11 次阅读

在现有的can_api.h所提供的接口函数的基础上,推出CAN接口通讯一些扩展应用功能,主要是为每个接收的数据包均加上了时间标签,以支持实时控制的应用。为了兼容以前接口函数,can_api.h保持不变,英创公司另外定义了一个can_api_ex.h,在该文件中定义了带有时间标签的CAN数据报文结构。

typedef struct
{
// CAN数据报文ID,其中
bit 0-28 : CAN identifier (11/29 bit)
bit 29 : error frame flag (0 = data frame, 1 = error frame)
bit 30 : remote transmission request flag (1 = rtr frame)
bit 31 : frame format flag (0 = standard 11 bit, 1 = extended 29 bit)
DWORD dwCAN_ID;
// CAN数据报文中的数据长度
DWORD dwCAN_DatLen;
// CAN数据报文中的数据
UCHAR ucDat[8];
// CAN数据报文的时间标签,单位为毫秒
DWORD dwTimeTick;
} CAN_FRAME, *PCAN_FRAME;

获取带有时间标签的CAN接收报文,可通过调用标准的ReadFile( ) 来实现,相应的发送函数也可调用WriteFile( )来处理。以下为接收线程中的获取带有时间标签的CAN数据报文的方法:

WaitForSingleObject( ceCAN->m_hRxEvent, 15 );
{
dwLen = 0;
bResult = ReadFile(ceCAN->m_hCAN,
&ceCAN->can_frame,
sizeof(CAN_FRAME), &dwLen, NULL );
if( dwLen==sizeof(CAN_FRAME) ) // receive a can frame
{
if( dwLastTimeTick == 0 )
{
printf( '0x%08x - %ld\n', ceCAN->can_frame.dwCAN_ID, ceCAN->can_frame.dwTimeTick );
dwLastTimeTick = ceCAN->can_frame.dwTimeTick;
}
else
{
printf( '0x%08x - %ld\n', ceCAN->can_frame.dwCAN_ID, ceCAN->can_frame.dwTimeTick-dwLastTimeTick );
dwLastTimeTick = ceCAN->can_frame.dwTimeTick;
}
}
}

经过测试,在英创嵌入式主板上CAN时间标签的精度能够保证在±1ms。

由于读取带有时间标签的CAN数据报文采用的是系统标准函数ReadFile,所以对该扩展功能感兴趣的老客户,需要对已有的英创嵌入式主板WinCE内核进行升级,而can_api.lib不需做任何变化。具体can_api.h中定义的接口函数参见《基于SJA1000的CAN通讯接口函数使用说明》一文。

感兴趣的客户可以和英创的技术支持联系。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6068

    浏览量

    34728
收藏 人收藏

    评论

    相关推荐

    如何检测can通讯电路的好坏

    CAN(Controller Area Network)是一种基于总线通信的局域网技术,广泛应用于汽车电子、工业控制等领域。在实际应用中,CAN通讯电路的好坏对整个系统的稳定性和可靠性
    的头像 发表于 06-16 09:42 256次阅读

    can标准帧和扩展帧区别

    标准帧和扩展帧是用于在控制器局域网(CAN)中传输数据的两种基本格式。它们在帧结构、标识符长度、数据长度以及数据传输和应用上存在一些区别。本文将详细介绍标准帧和扩展帧的区别。 一、帧结
    的头像 发表于 12-08 10:08 5658次阅读

    基于CAN多主通讯技术的煤矿顶板监测系统设计

    电子发烧友网站提供《基于CAN多主通讯技术的煤矿顶板监测系统设计.pdf》资料免费下载
    发表于 10-25 11:13 0次下载
    基于<b class='flag-5'>CAN</b>多主<b class='flag-5'>通讯</b><b class='flag-5'>技术</b>的煤矿顶板监测系统设计

    还在为CAN接口不够而发愁?全国产器件高性价比CAN接口扩展芯片CSM330A满足你

    。产品概述CSM330A支持通过SPI/UART扩展出一路CAN接口,可以方便地嵌入到具有SPI或UART接口的设备中,产品效果图如图1所示。图1CSM330A产品效
    的头像 发表于 10-16 18:19 829次阅读
    还在为<b class='flag-5'>CAN</b><b class='flag-5'>接口</b>不够而发愁?全国产器件高性价比<b class='flag-5'>CAN</b><b class='flag-5'>接口</b><b class='flag-5'>扩展</b>芯片CSM330A满足你

    SJA1000波特率计算

    电子发烧友网站提供《SJA1000波特率计算.zip》资料免费下载
    发表于 10-13 11:43 1次下载
    <b class='flag-5'>SJA1000</b>波特率计算

    基于SJA1000CAN节点设计

    电子发烧友网站提供《基于SJA1000CAN节点设计.pdf》资料免费下载
    发表于 10-13 11:40 5次下载
    基于<b class='flag-5'>SJA1000</b>的<b class='flag-5'>CAN</b>节点设计

    函数接口的应用知识点

    概述 函数接口将分为三个篇章来为大家介绍: (应用篇一)(1)函数接口的来源,(2)Lambda表达式,(3)双冒号运算符 (应用篇二)
    的头像 发表于 10-13 11:32 404次阅读
    <b class='flag-5'>函数</b>式<b class='flag-5'>接口</b>的应用知识点

    动态函数接口的调用原理

    (应用篇一) )(1)函数接口的来源,(2)Lambda表达式,(3)双冒号运算符 (应用篇二 函数式编程,这样学就废了 )(4)详细介绍@FunctionInterface注解(5
    的头像 发表于 10-13 11:27 320次阅读
    动态<b class='flag-5'>函数</b><b class='flag-5'>接口</b>的调用原理

    SJA1000独立CAN控制器英文资料

    电子发烧友网站提供《SJA1000独立CAN控制器英文资料.pdf》资料免费下载
    发表于 10-13 10:53 1次下载
    <b class='flag-5'>SJA1000</b>独立<b class='flag-5'>CAN</b>控制器英文资料

    SJA1000独立CAN控制器中文资料

    电子发烧友网站提供《SJA1000独立CAN控制器中文资料.pdf》资料免费下载
    发表于 10-13 10:51 2次下载
    <b class='flag-5'>SJA1000</b>独立<b class='flag-5'>CAN</b>控制器中文资料

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    CAN接口与485接口如何实现互相转换?

    接口进行互相转换,以满足不同的通信需求。本文将从以下几个方面介绍CAN与RS-485接口的互相转换: 1. CAN总线和RS-485总线的基
    的头像 发表于 09-14 17:52 4650次阅读

    PCI接口CAN通信中有何作用?

    PCI接口CAN通信中有何作用? PCI(Peripheral Component Interconnect)接口是一种常见的计算机扩展接口
    的头像 发表于 09-14 17:52 906次阅读

    使用CAN总线需要扩展CAN总线接口

    及应用。CSM330A的优势如图1所示,通过SPI或UART扩展隔离CAN接口的常规方案,一般要用到CAN控制器芯片、隔离DC-DC电源、数字隔离芯片、
    的头像 发表于 09-04 16:41 848次阅读
    使用<b class='flag-5'>CAN</b>总线需要<b class='flag-5'>扩展</b><b class='flag-5'>CAN</b>总线<b class='flag-5'>接口</b>吗

    Banana Pi推出基于龙芯2K1000LA处理器的信工业控制开发平台

    支持2路CAN接口; l 支持扩展WIFI、4G/5G通信 HMI及上位机功能集成 多核架构、资源丰富、算力强劲、可信计算 l 龙芯高性能处理器2K1000LA,主频1.0GHz,4
    发表于 09-04 12:30