在线时间0 小时
UID333134
注册时间2011-12-8
NXP金币0
该用户从未签到
新手上路

- 积分
- 6
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2012-5-21 11:15:37
|
显示全部楼层
回复:(求助)有关CAN通信协议的一些问题
这是之前做的单纯一个电压信号的发送程序,希望大家给看看
#include "Cpu.h"
#include "Events.h"
#include "AD1.h"
#include "CAN1.h"
#include "Bits1.h"
#include "TI1.h"
/* Include shared modules, which are used for whole project */
#include " E_Types.h"
#include " E_Error.h"
#include " E_Const.h"
#include "IO_Map.h"
#include "Stdio.h"
unsigned int i;
bool k=FALSE;
byte values;
byte ch[2];
float v;
//word data=0;
//bool n,c,d;
void main(void)
{
/*** Processor Expert internal initialization. DON'T REMOVE THIS CODE!!! ***/
PE_low_level_init();
/*** End of Processor Expert internal initialization. ***/
/* Write your code here */
/* while(1)
{
if(k)
{
k=FALSE;
AD1_Measure(FALSE);
}
CAN_TB0_DSR0=ch[0];
CAN_TB0_DSR1=ch[1];
CAN_TB0_DSR2=55;
CAN_TB0_DSR3=66;
CAN_TB0_DSR4=77;
CAN_TB0_DSR5=88;
CAN_TB0_DSR6=99;
CAN_TB0_DSR7=22;
printf("------------------------------");
printf("number=%d\n",i);
printf("send values0=%d\n",CAN_TB0_DSR0);
printf("send values1=%d\n",CAN_TB0_DSR1);
Bits1_PutVal((byte)ch[0]);
if(CANTFLG&0x0001)
{
CANTCR=0x0000;
CANTFLG=0x0001;
}
// Run measurement with set wait for result flag
//AD1_GetValue(&values); // Get AD conversion results
*/
while((CANCTL0)&0010==1)
CAN_TB0_IDR0=0x33; /* 设置发送缓冲区的接收符ID,使用标准模式*/
CAN_TB0_IDR1=0;
CAN_TB1_IDR0=0x44;
CAN_TB1_IDR1=0;
CAN_TB2_IDR0=0x55;
CAN_TB2_IDR1=0;
CAN_TB0_DLR=0x0008; /* 设置发送缓冲区的数据长度*/
CAN_TB1_DLR=0x0008;
CAN_TB2_DLR=0x0008;
CAN_TB0_TBPR=0x10; /* 设置发送缓冲区的优先级*/
CAN_TB1_TBPR=0x20;
CAN_TB2_TBPR=0x30;
GPR3=0x7500; /* 设置中断级别*/
CANRIER=0x0001; //允许MSCAN接收中?
while(1)
{
AD1_Measure(TRUE);
AD1_GetValue(&values);
ch[0]=values>>8;
ch[1]=(values&0x00ff)>>1;
v=(float)(ch[0]*256+ch[1]*2)*3.3/32760;
CAN_TB0_DSR0=ch[0];
CAN_TB0_DSR1=ch[1];
i=i+1;
// CAN_TB0_DSR2=55;
// CAN_TB0_DSR3=66;
// CAN_TB0_DSR4=77;
//CAN_TB0_DSR5=88;
// CAN_TB0_DSR6=99;
//CAN_TB0_DSR7=22;
printf("number=%d\n",i);
printf("------------------------------\n");
printf("v=%f\n",v);
printf("send values0=%d\n",CAN_TB0_DSR0);
printf("send values1=%d\n",CAN_TB0_DSR1);
Bits1_PutVal((byte)ch[0]);
if(CANTFLG&0x0001)
{
CANTCR=0x0000;
CANTFLG=0x0001;
CAN_TB0_DSR0=0;
CAN_TB0_DSR1=0;
CAN_TB0_DSR2=0;
CAN_TB0_DSR3=0;
CAN_TB0_DSR4=0;
CAN_TB0_DSR5=0;
CAN_TB0_DSR6=0;
CAN_TB0_DSR7=0;
}
}
}
/* END can_send */ |
|