打印

城主,关于105的CAN问题

[复制链接]
2672|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ffeige1984|  楼主 | 2010-10-22 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
105带有2路CAN,在MDK 4.10B的环境下可以模拟调试,但是只能用FIFO0,FIFO1不能使用,使用FIFO1时不能正常首发数据,是不是和MDK的版本有关,MDK4.12 不能模拟调试,不论是官方的例程或是自己建立的工程,难道105的CAN只能使用FIFO0吗?
以下是初始化程序
   CAN_FilterInitStructure.CAN_FilterNumber = 0;
   CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
   CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
   CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
   CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
   CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
   CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
   CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;   //FIFO0
   CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
   CAN_FilterInit(&CAN_FilterInitStructure);

  CAN_FilterInitStructure.CAN_FilterNumber = 14;
  CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 1;   //FIFO1
  CAN_FilterInit(&CAN_FilterInitStructure);
CAN2不能正常接收,改为 FIFO0则可以
沙发
ffeige1984|  楼主 | 2010-10-22 10:34 | 只看该作者
本帖最后由 ffeige1984 于 2010-10-22 11:02 编辑

但是4.10b 模拟调试时如果进行CAN的初始化在就死在了
CAN_Init函数的
  while (((CANx->MSR & MSR_INAK) != MSR_INAK) && (wait_ack != INAK_TimeOut))
  {
    wait_ack++;
  }

使用特权

评论回复
板凳
ffeige1984|  楼主 | 2010-10-22 11:07 | 只看该作者
只是开启中断部分
           /* IT Configuration for CAN1 */   
   CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
   CAN_ITConfig(CAN1, CAN_IT_FMP1, ENABLE);
   /* IT Configuration for CAN2 */   
   CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);
   CAN_ITConfig(CAN2, CAN_IT_FMP1, ENABLE);


中断处理函数

void CAN1_RX0_IRQHandler(void)
{
        
        CAN_Receive(CAN1, CAN_FIFO0, &CAN1_RxMsg);
        
        //
}

void CAN1_RX1_IRQHandler(void)
{
        
        CAN_Receive(CAN1, CAN_FIFO1, &CAN1_RxMsg);
        
        //
}
void CAN2_RX0_IRQHandler(void)
{
        
        CAN_Receive(CAN2, CAN_FIFO0, &CAN2_RxMsg);
        
        //
}

void CAN2_RX1_IRQHandler(void)
{
        
        CAN_Receive(CAN2, CAN_FIFO1, &CAN2_RxMsg);
        
        //
}

使用特权

评论回复
地板
IJK| | 2010-10-22 11:38 | 只看该作者
最好还是用实际硬件,用MDK 进行软件模拟,有的情况跟实际芯片不一样

使用特权

评论回复
5
ffeige1984|  楼主 | 2010-10-22 16:52 | 只看该作者
谢谢楼上,就是用实际硬件测的,单步跟踪也收不到数据。

使用特权

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

本版积分规则

107

主题

134

帖子

1

粉丝