天嵌 ARM开发社区

 找回密码
 注册
查看: 2161|回复: 3

嵌入式linux can总线调试

[复制链接]
zdm0100 发表于 2016-4-1 21:03:58 | 显示全部楼层 |阅读模式
我在开发板上面运行一个linux的can总线调试程序。
程序代码如下:
#include <sys/ioctl.h>
#include <net/if.h>
#include <linux/can.h>

#ifndef PF_CAN
#define PF_CAN 29
#endif

#ifndef AF_CAN
#define AF_CAN PF_CAN
#endif

int main()
{
int s;
unsigned long nbytes;
struct sockaddr_can addr;
struct ifreq ifr;
struct can_frame frame;


s = socket(PF_CAN,SOCK_RAW,CAN_RAW);

strcpy((char *)(ifr.ifr_name),"can0");
ioctl(s,SIOCGIFINDEX,&ifr);//指定can0设备
printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex);


addr.can_family = AF_CAN;
addr.can_ifindex = ifr.ifr_ifindex;
bind(s,(struct sockaddr*)&addr,sizeof(addr));


frame.can_id = 0x123;
strcpy((char *)frame.data,"hello");
frame.can_dlc = strlen(frame.data);

printf("Send a CAN frame from interface %s\n",ifr.ifr_name);

nbytes = sendto(s,&frame,sizeof(struct can_frame),0,(struct sockaddr*)&addr,sizeof(addr));
close(s);
return 0;
}
我用示波器去测can总线接口的,发现示波器一直有输出,不是发完数据应该没输出了呀,请问到底是怎么回事?示波器的波形如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
jinye520 发表于 2016-4-6 13:31:44 | 显示全部楼层
围观 我也不知道

评分

参与人数 1 +10 收起 理由
zdm0100 + 10 很给力!

查看全部评分

 楼主| zdm0100 发表于 2016-4-8 09:54:55 | 显示全部楼层
jinye520 发表于 2016-4-6 13:31
围观 我也不知道

我知道啦,因为每人接收,所以can总线会一直重发。谢谢
noraiein 发表于 2016-4-26 10:35:10 | 显示全部楼层
最近师兄在让我做can通信 因为之前没接触过linux 所以想跟楼主交流一下~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-4 03:22 , Processed in 1.062500 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表