首页
>>
论坛
>>技术社区 >>
飞思卡尔社区论坛
>>
16位MCU
|
我的Digi-Key账户
产品索引
供货商索引
资源
是否需要帮助
中国
我要发帖
|
我要投票
|
我要回复
|
收藏
1
can模块的问题
版主:
南京老练
安
pangfei007
精华:
0
积分:
0
等级:
学徒
登陆次数:
1
发表帖子:
1
注册时间:
2009-06-22
最后登陆:
2009-06-23
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:0
帖子:1
精华:0
等级:学徒
注册时间:2009-06-22
最后登录:2009-06-23
我的博客
发短消息
我的相册
当前离线
发表于2009-06-23 00:41
1#
can模块的问题
我的can模块在loopb模式下能实现,正常模式的时候端口却没数据出来,端口的初始化:
void MC9S12_Port_Init(void)
{
DDRP_DDRP4 = 1;
DDRP_DDRP5 = 1;
// 连键盘
DDRP_DDRP0 = 0;//1B1--PB1
DDRP_DDRP1 = 0;//1B2--PB2
DDRA_BIT5 = 0;//1B3 --PB3
DDRA_BIT4 = 0;//1B4 --PB4
// 连LED
DDRA |= 0x0f;//
DDRB = 0xff;
DDRT = 0xff;
PTT = 0xff;
PORTB =0xff;
// 连CBT3244
PTP = 0xff; //OE1,OE2
PORTA = 0xf0;
// 0E1.0E2
PTP_PTP4 = 0;
PTP_PTP5 = 0;
// CAN
DDRM_DDRM0 = 0;//RxCAN0
DDRM_DDRM1 = 1;//TxCAN0
// LCD
DDRM_DDRM2 = 0;//MISO0
DDRM_DDRM3 = 1;//SS0
DDRM_DDRM4 = 1;//MOSI0
DDRM_DDRM5 = 1;//SCK0
//DDRM = 0xff;
PTM = 0xff;
WOMM=0x00; //管脚复用模式选择
MODRR=0x00;//CAN0端口选择 PM0,PM1
PERM=0x00;
}
can模块的初始化:
void MSCAN_init()
{
CAN0CTL0_INITRQ=1; //进入初始化模式//
CAN4CTL0_INITRQ=1;
while((CAN0CTL1_INITAK==0)&&(CAN4CTL1_INITAK==0)); //等待应答信号
CAN0IDAC=0x20; //验收控制寄存器//
CAN4IDAC=0x20;
CAN0IDMR0=0xFF; //设置屏蔽寄存器,忽略屏蔽//
CAN4IDMR0=0xFF;
CAN0IDMR1=0xFF;
CAN4IDMR1=0xFF;
CAN0IDMR2=0xFF;
CAN4IDMR2=0xFF;
CAN0IDMR3=0xFF;
CAN4IDMR3=0xFF;
CAN0IDMR4=0xFF;
CAN4IDMR4=0xFF;
CAN0IDMR5=0xFF;
CAN4IDMR5=0xFF;
CAN0IDMR6=0xFF;
CAN4IDMR6=0xFF;
CAN0IDMR7=0xFF;
CAN4IDMR7=0xFF;
CAN0BTR0=0x40;
CAN4BTR0=0x40;
CAN0BTR1=0x3F;
CAN4BTR1=0x3F;
CAN0CTL1=0x80;
CAN4CTL1=0x80;
CAN0CTL0_INITRQ=0;
CAN4CTL0_INITRQ=0;
while((CAN0CTL1_INITAK==1)&&(CAN4CTL1_INITAK==1)); //等待应答信号//
CAN0RIER_RXFIE=1; //允许CAN0的接收中断//
//CAN0RIER=0xff;
}
发送数据程序:
void CAN_Transmit(void)
{
mask = CAN0TFLG;
CAN0TBSEL= mask;//0x01;
mask = CAN0TBSEL;
/*CAN0TXIDR0 = 0x00;
CAN0TXIDR1 = 0x08; //扩展桢
CAN0TXIDR2 = 0x00;
CAN0TXIDR3 = 0x04; //发送ID=2 */
CAN0TXDSR0=0x01; //发送数据//
uart_putchar(CAN0TXDSR0);
CAN0TXDSR1=0x02;
uart_putchar(CAN0TXDSR1);
CAN0TXDSR2=0x03;
uart_putchar(CAN0TXDSR2);
CAN0TXDSR3=0x04;
uart_putchar(CAN0TXDSR3);
CAN0TXDSR4=0x05;
uart_putchar(CAN0TXDSR4);
CAN0TXDSR5=0x06;
uart_putchar(CAN0TXDSR5);
CAN0TXDSR6=0x07;
uart_putchar(CAN0TXDSR6);
CAN0TXDSR7=0x08;
uart_putchar(CAN0TXDSR7);
CAN0TXDLR = 0x08;
CAN0TXTBPR = 0x00;
CAN0TFLG = mask;// 0x00;
uart_putchar(mask);
//return mask;
}
请高手指点下 !!!!
关闭
相关主题
回复
链接
收藏
crisjay
精华:
0
积分:
21
等级:
学徒
登陆次数:
5
发表帖子:
2
注册时间:
2008-04-29
最后登陆:
2011-04-07
状态:
离线
查看详细资料
aaaaaaaaaaaaa
积分:21
帖子:2
精华:0
等级:学徒
注册时间:2008-04-29
最后登录:2011-04-07
我的博客
发短消息
我的相册
当前离线
发表于2009-06-26 21:01
2#
RE:can模块的问题
可能是你的Prescaler没有设置正确,因为在loopback模式下对baudrate没有特别的要求。看一下你的BTR0设置吧。因为不知道你的Osc频率是多少,没有办法帮你算了哦
回复
链接
收藏
我要发帖
|
我要投票
|
我要回复
|
收藏
1
您尚未
登录
|
注册
通信成功,数据正在处理中...