/**
******************************************************************************
* @file 六叶树CANFD二次开发demo
* @author lys
* @version V1.1.0
* @date 2023
* @brief 用例功能:
* 以六叶树USBCANFDMini为例,设备通道CAN0配置为FD模式,仲裁域波特率为1M,数据波特率
* 5M,CAN总线收到什么数据就回复什么数据。支持:USBCANFDMini/USBCANFD1/USBCANFD2。
* @note
*
* @endverbatim
*
******************************************************************************
* 版权:长沙六叶树教育科技有限公司
* 官网:www.liuyeshu.cn
* 更多资料教程下载见官网
******************************************************************************
修改日期 版本号 修改者 功能描述
2023.04.10 V1.1.0 LYS
----------------------------------------------------------------------------
******************************************************************************
*/
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <signal.h>
#include "ControlCAN.h"
void exit_can(int flag)
{
//关闭设备
LCAN_CloseDevice(LCAN_USBCANFDMini,0);
exit(0);
}
//进程退出处理,程序调用 exit 或 main函数return 或 最后一个线程正常退出
void exitHandle(void)
{
printf("Demo Stop...\n");
//关闭设备
LCAN_CloseDevice(LCAN_USBCANFDMini,0);
}
int main(void)
{
LCAN_INITFD_CONFIG canInitFDCfgInfo;
UINT devType=LCAN_USBCANFDMini,devIndex = 0,canIndex = 0;
LCAN_CAN_OBJ canObj[32];
LCAN_CANFD_OBJ fdObj[32];
UINT ret, i, j, frameCnt;
printf("Demo Start...\n");
//var init
memset(&canInitFDCfgInfo, 0, sizeof(LCAN_INITFD_CONFIG));
//注册回调函数,程序调用 exit 或 mian函数return 或 最后一个线程正常退出时,捕获退出事件,执行退出处理
atexit(exitHandle);
//打开设备
ret = LCAN_OpenDevice(devType, devIndex);
if(LCAN_STATUS_OK != ret)
{
printf("Device Open Fail...\n");
exit_can(1);
}
//FD MODE
canInitFDCfgInfo.fdEn = 1;
//ISO设置 0:NONE ISO 1:ISO
canInitFDCfgInfo.isoEn = 0;
//仲裁域波特率 1M
canInitFDCfgInfo.abit_timing = 0x01400106;
//数据域波特率 5M
canInitFDCfgInfo.dbit_timing = 0x00800001;
//正常工作模式
canInitFDCfgInfo.mode = 0;
//用例只初始化ch0
ret = LCAN_InitCANFD(devType, devIndex, canIndex, &canInitFDCfgInfo);
if(LCAN_STATUS_OK != ret)
{
printf("Device Init Fail...\n");
exit_can(1);
}
printf("\r\nDEMO 参数:CAN1 ISO:NONE Baud:<1M,5M> 功能:接收到什么数据就回发什么数据。\n");
while(1)
{
//CAN
if(0 < LCAN_GetReceiveNum(devType, devIndex, canIndex, REC_TYPE_CAN))
{
frameCnt = LCAN_Receive(devType, devIndex, canIndex, canObj, 32, 50);
if(0 < frameCnt)
{
//print
printf("---can recv:%d\n", frameCnt);
for (i=0; i<frameCnt; i++) {
printf("ID: %08x DataLen:%02x ExternFlag:%d RemoteFlag: %d data:",
canObj[i].id&0x1FFFFFFF, canObj[i].dataLen,
canObj[i].externFlag, canObj[i].remoteFlag);
for (j=0; j< canObj[i].dataLen; j++) {
printf("%02x ", canObj[i].data[j]);
}
printf("\n");
}
//send
printf ("---can send:%d\n", frameCnt);
for (i=0; i<frameCnt; i++) {
//正常发送模式
canObj[i].sendType = 0;
}
LCAN_Transmit(devType, devIndex, canIndex, canObj, frameCnt);
}
}
//FD
if(0 < LCAN_GetReceiveNum(devType, devIndex, canIndex, REC_TYPE_FD))
{
frameCnt = LCAN_ReceiveFD(devType, devIndex, canIndex, fdObj, 32, 50);
if(0 < frameCnt)
{
//print
printf("---fd recv:%d\n", frameCnt);
for (i=0; i<frameCnt; i++) {
printf("ID: %08x DataLen:%02x ExternFlag:%d RemoteFlag: %d data:",
fdObj[i].id&0x1FFFFFFF, fdObj[i].dataLen,
fdObj[i].externFlag, fdObj[i].remoteFlag);
for (j=0; j< fdObj[i].dataLen; j++) {
printf("%02x ", fdObj[i].data[j]);
}
printf("\n");
}
//send
printf ("---fd send:%d\n", frameCnt);
for (i=0; i<frameCnt; i++) {
//正常发送模式
fdObj[i].sendType = 0;
}
LCAN_TransmitFD(devType, devIndex, canIndex, fdObj, frameCnt);
}
}
}
return 0;
}
lysDemo-arm-linux-gnueabi.tar.gz
需积分: 0 59 浏览量
更新于2023-07-18
收藏 1.84MB GZ 举报
标题“lysDemo-arm-linux-gnueabi.tar.gz”揭示了这是一个针对特定平台的软件开发资源包,主要针对ARM架构的Linux系统。"arm-linux-gnueabi"是交叉编译工具链标识,意味着这个包包含了在非ARM系统(可能是x86或x86_64)上编译为ARM处理器的Linux系统可执行文件和相关资源。
描述中提到的“六叶树usbcan适配器”是一个硬件设备,用于连接计算机和CAN总线(Controller Area Network),常用于汽车电子、工业自动化等领域。lysDemo是与该硬件配合使用的软件,可能是驱动程序、库文件、示例代码或用户界面,用于帮助用户进行二次开发。
在Linux环境中,适配器驱动通常作为内核模块,或者在用户空间通过libusb等库来实现。"lysDemo"可能包括了这样的驱动程序,使得开发者能够访问和控制USB-CAN适配器。
标签“arm linux”进一步确认了这是一套针对ARM架构的Linux开发资源。ARM架构广泛应用于嵌入式系统、移动设备和物联网设备,而“gnueabi”表示遵循GNU ABI(Application Binary Interface),这意味着它遵循了标准的C运行时库和其他系统调用,使得软件可以与其他遵循相同ABI的系统兼容。
解压lysDemo-arm-linux-gnueabi.tar.gz后,我们可能会得到以下结构:
1. **源代码**:包含了C或C++语言编写的驱动程序和应用程序代码,可能有对应的Makefile用于编译。
2. **头文件**(.h):包含了接口声明,供其他代码引用。
3. **库文件**(.a或.so):静态或动态链接库,用于提供USB-CAN适配器的API,供用户应用程序调用。
4. **配置文件**(如.config):可能包含驱动程序的配置选项。
5. **示例**(sample)目录:可能包含一些示例应用,演示如何使用lysDemo驱动与USB-CAN适配器通信。
6. **文档**(docs)目录:可能有README、手册页或其他说明文件,解释如何安装、配置和使用lysDemo。
7. **许可文件**(LICENSE):阐述软件的授权协议,决定用户可以如何使用和分发软件。
8. **构建脚本**(如build.sh):用于编译和安装lysDemo的脚本。
为了在ARM Linux系统上使用lysDemo,用户首先需要在开发机(非ARM系统)上编译生成适用于目标系统的二进制文件,然后将这些文件部署到ARM设备上。部署过程可能涉及将编译后的可执行文件、库文件和配置文件复制到设备的适当位置,并可能需要在设备上安装必要的依赖库。如果lysDemo包含内核模块,还需要在目标系统上加载或编译内核模块。在设备上运行示例应用可以帮助验证lysDemo的正确安装和功能。
lysDemo-arm-linux-gnueabi.tar.gz是一个针对ARM架构Linux的开发资源包,包含了与六叶树USB-CAN适配器交互所需的驱动、库和示例代码,便于用户进行二次开发和集成到自己的应用中。

六叶树
- 粉丝: 91
最新资源
- 520网络情人节祝福语简短一句话.docx
- 计算机专业单片机课程设计要求.docx
- 基于元胞自动机的适应网络病毒传播研究.pptx
- 网络公司第一季度工作总结.pptx
- 网络咨询解答技巧.ppt
- 数据库课程设计机票预订系统.doc
- 信息系统安全等级保护第二级要求技术要求物理安全物理位置选择------.pdf
- 软件工程需求分析.doc
- 2023年计算机二级MSOFFICE模拟考试题及答案题目.doc
- 移动通信试题基础题.doc
- 设备报废申请单(Excel表格通用模板).xlsx
- 数字医学图像处理复习资料.pdf
- 高级语言程序设计.doc
- 互联网公司员工的辞职信.doc
- 东莞大剧院综合布线系统智能化系统项目工程设计文件.doc
- easy-query-SQL资源