打印

关于CAN报文的问题

[复制链接]
5197|47
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我的程序如下:问题是我发送的是10086110这八个数,但是在CAN接收端接收到的数据是31 30 30 38 36 31 31 30,为啥是这样呢?前边的3是什么呢?#include <hidef.h>      /* common defines and macros */#include "derivative.h"      /* derivative-specific definitions */
#include "CANsend.h"


#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK    32000000           //总线频率
#define OSC_CLOCK    16000000           //晶振频率
#define ID   0x0019                     //发送ID
#define data_len_TX        8            //发送数据长度

unsigned char k;
unsigned senddata[8]={'1','0','0','8','6','1','1','0'};      //发送的数据

struct can_msg msg_send;
unsigned char datain=0;  


void INIT_PLL(){                  //初始化锁相环
  CLKSEL &=0x7f;                   //设置OSCCLK为系统时钟
  PLLCTL &=0x8F;                   //禁止PLL
  CRGINT &=0xDF;

  #if(BUS_CLOCK==32000000)
     SYNR=0x43;
  #elif(BUS_CLOCK==24000000)
     SYNR=0x42;
  #endif

  REFDV=0x81;
  PLLCTL |=0x70;                   //使能PLL
  asm NOP;
  asm NOP;
  while(!(CRG**&0x08));           //PLL锁定
          CLKSEL |=0x80;           //设置PLL为系统时钟
}



/************************************************************/
/*                    初始化ECT模块                         */
/************************************************************/
void initialize_ect(void){
  ECT_TSCR1_TFFCA = 1;  // 定时器标志位快速清除
  ECT_TSCR1_TEN = 1;    // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
  ECT_TIOS  = 0xff;      //指定所有通道为输出比较方式
  ECT_TCTL1 = 0x00;            // 后四个通道设置为定时器与输出引脚断开
  ECT_TCTL2 = 0x00;     // 前四个通道设置为定时器与输出引脚断开
  ECT_DLYCT = 0x00;            // 延迟控制功能禁止
  ECT_ICOVW = 0x00;            // 对应的寄存器允许被覆盖;  NOVWx = 1, 对应的寄存器不允许覆盖
  ECT_ICSYS = 0x00;            // 禁止IC及PAC的保持寄存器
  ECT_TIE   = 0x00;     // 禁止所有通道定时中断
  ECT_TSCR2 = 0x07;            // 预分频系数pr2-pr0:111,,时钟周期为4us,
  ECT_T**1 = 0xff;            // 清除各IC/OC中断标志位
  ECT_T**2 = 0xff;     // 清除自由定时器中断标志位
}


/************************************************************/
/*                    中断接收函数                          */
/************************************************************/
//#pragma CODE_SEG __NEAR_SEG NON_BANKED
//void interrupt CAN_receive(){
//  if(CAN0GetMsg(&Msg)){
//     if(msg_get.id == ID && (!msg_get.RTR)){
//       LEDCPU=~LEDCPU;
//       datain=1;
//     }
//  }
//  else{
//    for(;;);
//  }
//}
//#pargma CODE_SEG DEFAULT


void main(void) {
  /* put your own code here */
  DisableInterrupts;
  INIT_PLL();
  initialize_ect();
  INIT_CAN0();
  LEDCPU_dir=1;
  LEDCPU=0;
  EnableInterrupts;

msg_send.id = ID;
  for(k=0;k<data_len_TX;k++){
    msg_send.data[k] = senddata[k];
  }
  msg_send.len = data_len_TX;
  msg_send.RTR = FALSE;
  msg_send.prty= 0;  
  for(;;) {

     if(!MSCAN0SendMsg(msg_send))
     for(;;);
     else
      LEDCPU=~LEDCPU;
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}



无标题.png (521.18 KB )

无标题.png

相关帖子

沙发
dirtwillfly| | 2017-7-27 18:44 | 只看该作者
你用的什么单片机?

使用特权

评论回复
板凳
cehuafan| | 2017-7-27 22:40 | 只看该作者
{'1','0','0','8','6','1','1','0'}  对应31 30 30 38 36 31 31 30

使用特权

评论回复
地板
232321122| | 2017-7-27 22:40 | 只看该作者
这是16进制的数据。

使用特权

评论回复
5
uptown| | 2017-7-27 22:41 | 只看该作者
楼主没有搞明白这个对应关系吗?

使用特权

评论回复
6
xiaoyaozt| | 2017-7-27 22:42 | 只看该作者
这个can通信的数据都是对应的。

使用特权

评论回复
7
mnynt121| | 2017-7-27 23:00 | 只看该作者
这个前面的是0x30+

使用特权

评论回复
8
10299823| | 2017-7-27 23:00 | 只看该作者
转换为字符串看就对了。

使用特权

评论回复
9
kmzuaz| | 2017-7-27 23:01 | 只看该作者
你查看一下asicII就明白了。

使用特权

评论回复
10
51xlf| | 2017-7-27 23:01 | 只看该作者
这个没有错误,接收结果正确。

使用特权

评论回复
11
51xlf| | 2017-7-27 23:02 | 只看该作者
unsigned senddata[8]={ 1, 就对了

使用特权

评论回复
12
chenci2013| | 2017-7-27 23:02 | 只看该作者
10086110这八个数对应31 30 30 38 36 31 31 30

使用特权

评论回复
13
cehuafan| | 2017-7-27 23:03 | 只看该作者
你发送的是asic码。

使用特权

评论回复
14
232321122| | 2017-7-27 23:03 | 只看该作者
“1”就是0x31

使用特权

评论回复
15
uptown| | 2017-7-27 23:03 | 只看该作者
字符和16进制是对应的。

使用特权

评论回复
16
xiaoyaozt| | 2017-7-27 23:03 | 只看该作者
你发送0x01试试。

使用特权

评论回复
17
mnynt121| | 2017-7-27 23:03 | 只看该作者
‘1’=0x30+1

使用特权

评论回复
18
10299823| | 2017-7-27 23:03 | 只看该作者
数据没有对应好而已。

使用特权

评论回复
19
kmzuaz| | 2017-7-27 23:03 | 只看该作者
如果是发送数字,就使用对应的数据。

使用特权

评论回复
20
51xlf| | 2017-7-27 23:03 | 只看该作者
楼主把16进制和十进制搞错了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

79

帖子

0

粉丝