查看: 1465|回复: 4

【已解决】mc9s08dz60can通信如何发送扩展帧数据?

[复制链接]

该用户从未签到

7

主题

19

帖子

0

注册会员

Rank: 2

积分
176
最后登录
2020-4-11
发表于 2019-4-19 13:51:44 | 显示全部楼层 |阅读模式
本帖最后由 hjx1016 于 2019-4-22 09:34 编辑

mc9s08dz60芯片,can盒及USB_CAN tool上位机软件,codewarrior6.3版本processor expert工具,配置好的sendframe、readframe函数能进行基本的标准帧收发通信,但无法发送扩展帧数据,请问这可能是哪里的问题?
can配置.PNG
sendframe.PNG
sendframe内容.PNG
回复

使用道具 举报

  • TA的每日心情

    昨天 11:51
  • 签到天数: 2116 天

    [LV.Master]伴坛终老

    56

    主题

    4782

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    24823
    最后登录
    2024-4-30
    发表于 2019-4-19 14:10:18 | 显示全部楼层
    1. /*************************************************************************************/
    2. //CAN发送  
    3. /************************************************************************************/
    4. byte CanComm(){
    5.   byte i=0;
    6.   dword id=0;
    7.   dword tmp=0;
    8.   byte j;
    9.   id=CAN_Send_ID;              // 获得CAN发送ID
    10.   id&=0xFFF0FFFF;              // 把ID中的帧序号清零
    11.   for(j=0;j<SheetNum;j++){
    12.                           //1800F465-1800F468
    13.     for(i=0;i<5;i++) {           // 循环发送5帧
    14.       tmp=i+1;                   // 帧序号
    15.       tmp<<=16;
    16.       tmp|=id;                   // 把帧序号添加到ID中,形成完整的ID
    17.       tmp|=0x80000000;  //最高位置1,发送扩展帧。
    18.       retCAN=CAN1_SendFrameExt(tmp,DATA_FRAME,8,CANMsgData+i*8+j*40);  //发送CAN数据
    19.       Cpu_Delay100US(10);
    20.     }
    21.     id+=1;
    22.   }
    23.   return 0xFF;
    24. }   
    复制代码
    在调用CAN1_SendFrameExt的时候,第一个参数为要发送的CANID,这个ID的最高位必须为1才会发送扩展帧,也就是这个数据发送前需要或一个0x80000000。如果这个最高位不是1,那么发送的是标准帧。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    176
    最后登录
    2020-4-11
     楼主| 发表于 2019-4-19 14:15:46 | 显示全部楼层
    Angel_YY 发表于 2019-4-19 14:10
    在调用CAN1_SendFrameExt的时候,第一个参数为要发送的CANID,这个ID的最高位必须为1才会发送扩展帧,也就 ...

    因为扩展帧位为29位,而定义的CANID参数为32位,所以需要把最高位设为1,然后低29位设为实际ID值,是这样吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 11:51
  • 签到天数: 2116 天

    [LV.Master]伴坛终老

    56

    主题

    4782

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    24823
    最后登录
    2024-4-30
    发表于 2019-4-19 15:38:12 | 显示全部楼层
    你可以看看CAN1_SendFrameExt这个函数每一个参数的具体含义,该函数要求如果要发送扩展帧,32bit的ID值最高位必须为1.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    19

    帖子

    0

    注册会员

    Rank: 2

    积分
    176
    最后登录
    2020-4-11
     楼主| 发表于 2019-4-22 11:01:53 | 显示全部楼层
    Angel_YY 发表于 2019-4-19 15:38
    你可以看看CAN1_SendFrameExt这个函数每一个参数的具体含义,该函数要求如果要发送扩展帧,32bit的ID值最高 ...

    已解决,多谢了
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-5-1 03:00 , Processed in 0.131684 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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