OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4431|回复: 3

关于CAN中断

[复制链接]

25

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
金钱
393
注册时间
2014-8-18
在线时间
43 小时
发表于 2017-7-26 17:00:04 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 marcus 于 2017-7-26 17:01 编辑

CAN通讯,如果开启了CAN的FIFO消息挂号中断,那是不是表示CAN数据段长度必须为8?因为原子代码中中断函数是这么处理的
void CAN1_RX0_IRQHandler(void)
{
    CanRxMsg RxMessage;
    int i=0;
    CAN_Receive(CAN1, 0, &RxMessage);
    for(i=0;i<8;i++)
      printf("rxbuf[%d]:%d\r\n",i,RxMessage.Data
);
}
如果没有开启中断的话,CAN通讯的数据长度就是0~8,可以通过DLC来判断。
u8 CAN1_Receive_Msg(u8 *buf)
{                                      
    u32 i;
    CanRxMsg RxMessage;
    if( CAN_MessagePending(CAN1,CAN_FIFO0)==0)return 0;               
      CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);   
    for(i=0;i<RxMessage.DLC;i++)
       buf
=RxMessage.Data
;  
    return RxMessage.DLC;        
}

我现在有个项目,是通过板载CAN通过CAN转串与上位机通讯的,上位机发过来的报文是13个字节,我打算分成两个数据帧接收后重新组合进行处理,不知道这种办法是否可行,或者有什么其他更好的办法

最佳答案

查看完整内容[请看2#楼]

哪种接收方式都可以接收任意长度的数据,通过RxMessage.DLC判断。 上位机发送的报文方式你可以设置的话,13个字节可以分开两个ID报文进行发送
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

296

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2066
金钱
2066
注册时间
2012-5-26
在线时间
291 小时
发表于 2017-7-26 17:00:05 | 显示全部楼层
哪种接收方式都可以接收任意长度的数据,通过RxMessage.DLC判断。
上位机发送的报文方式你可以设置的话,13个字节可以分开两个ID报文进行发送
活着才是王道!健康是一切的前提!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2017-7-27 00:55:39 | 显示全部楼层
可以
回复

使用道具 举报

25

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
金钱
393
注册时间
2014-8-18
在线时间
43 小时
 楼主| 发表于 2017-7-28 16:44:00 | 显示全部楼层
本帖最后由 marcus 于 2017-7-28 16:45 编辑
lison0103 发表于 2017-7-27 08:31
哪种接收方式都可以接收任意长度的数据,通过RxMessage.DLC判断。
上位机发送的报文方式你可以设置的话,1 ...


      原子库函数手册P411有说明“DLC 段为数据长度表示段,高位在前, DLC 段有效值为 0~8,但是接收方接收到 9~15 的时候并不认为是错误。数据段,该段可包含 0~8 个字节的数据。从最高位( MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。”所以我认为数据段最多8字节,而DLC最大有效值也为8.
      公司使用的触摸屏是迪文的串口屏,比较死,发过来的数据是一条13个字节的数据,并且没法分两次发送


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 15:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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