can总线问题 点击:1569 | 回复:9



水手吉林

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 40回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2001年12月10日
发表于:2003-07-13 02:40:00
楼主
我在做一个小系统89c51+sja1000+pca82c250,单机调试时无法读写sja1000的内部寄存器 请教各位高手问题出在什么地方?



水手吉林

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 40回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2001年12月10日
发表于:2003-06-16 15:56:00
1楼
为什么我往写寄存器的时候sja1000的clkout(7号脚)就变成了高电平?是不是跟总线状态有关系?

水手吉林

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 40回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2001年12月10日
发表于:2003-06-21 10:58:00
2楼
急切请求高手的帮助!

HALF

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2003年5月12日
发表于:2003-06-25 18:02:00
3楼
1.硬件联线是否正确? 2、模式选择或寄存器设置是否正确?

水手吉林

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 40回
  • 年度积分:0
  • 历史总积分:58
  • 注册:2001年12月10日
发表于:2003-06-25 19:48:00
4楼
硬件应该没问题的,控制积存器的地址位FF00H,当往里送控制字0F1h时,读出来的值确是00H,别的寄存器读出来的都是其地址值的后两位?不知什么原因?是不是跟单节点有关系?

HALF

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 8回
  • 年度积分:0
  • 历史总积分:61
  • 注册:2003年5月12日
发表于:2003-06-26 15:06:00
5楼
看来你用BASIC模式了,11脚应为高;另工作时并不是都可读写的

永不低头

  • 精华:0帖
  • 求助:0帖
  • 帖子:10帖 | 12回
  • 年度积分:0
  • 历史总积分:60
  • 注册:2003年3月02日
发表于:2003-06-28 21:31:00
6楼
模式寄存器是否选择了复位模式

清风笑

  • 精华:1帖
  • 求助:0帖
  • 帖子:4帖 | 99回
  • 年度积分:0
  • 历史总积分:1294
  • 注册:2001年11月08日
发表于:2003-06-30 12:58:00
7楼
BasicCAN模式下应联机调试。 http://www.zlgmcu.com/philips/philips-can.asp

大师

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 19回
  • 年度积分:0
  • 历史总积分:129
  • 注册:2003年7月07日
发表于:2003-07-07 17:10:00
8楼
请参阅: http://www.huakong.com.cn 内容, 张先生

gz_hjg

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 14回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2002年8月22日
发表于:2003-07-13 02:40:00
9楼
一个初始化SJA1000 CAN控制器的样本,希望能有所帮助。 初始化CAN控制器 描述 : 1)接收广播地址: 0xFF; 2)接收本机地址: Node; 3)总线速率 : 1M bit/s at 24 MHz 参数 : 无. 返回 : CAN_NO_ERR : 初始化操作成功. CAN_ERR_INIT : 初始化操作失败. INT8U CanInit (void) { /* 设置SJA100T进入复位模式 */ while ((ModeControlReg & RM_RR_Bit ) == 0x00) { ModeControlReg = ModeControlReg | RM_RR_Bit ; if (timeout-- == 0) { return (CAN_ERR_INIT); } } /* 设置PeliCAN 模式,关闭输入比较器,关闭时钟输出Pin. */ ClockDivideReg = CANMode_Bit | CBP_Bit | ClkOff_Bit; InterruptEnReg = 0x00; /* 禁止CAN控制器中断. */ /*------------------------------ 滤波器分组1: 接收广播地址 0xFF -----------------------------------*/ AcceptCode0 = 0xFF; AcceptCode1 = 0xFF; AcceptMask0 = 0xFF; AcceptMask1 = 0x00; /*------------------------------ 滤波器分组2: 接收本机地址 CANNode --------------------------------*/ AcceptCode2 = 0xFF; AcceptCode3 = Module.ID; AcceptMask2 = 0xFF; AcceptMask3 = 0x00; /* 设置总线速率为1M bit/s @ 24 MHz,采样为一次. */ BusTiming0Reg = SJW_1MB_24M | Presc_1MB_24M; BusTiming1Reg = TSEG2_1MB_24M | TSEG1_1MB_24M; OutControlReg = Tx1Float | Tx0PshPull | NormalMode; /* 设置TX1浮空,TX0推挽,正常输出方式. */ timeout = 2000; /*------------ 设置: 清除复位bit; 选择双过滤器模式; 关闭自检测模式,只听模式,休眠模式. -------------*/ do{ ModeControlReg = 0x00; if (timeout-- == 0) { return (CAN_ERR_INIT); } } while ((ModeControlReg & RM_RR_Bit ) != 0x00); InterruptEnReg = 0xFF; /* 开启SJA100T中断. */ EX0 = 1; /* 开放CAN通讯中断. */ return (CAN_NO_ERR); }

热门招聘
相关主题

官方公众号

智造工程师