打印
[AT32F407]

AT32F407的CAN1不能正常工作没有波形输出

[复制链接]
1485|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fuquan19801117|  楼主 | 2022-2-15 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void CAN_Model(uint8_t Ch,uint16_t bulv)
{
        GPIO_InitType GPIO_InitStructure;
       
        GPIO_StructInit(&GPIO_InitStructure);
       
        RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO, ENABLE);
        GPIO_PinsRemapConfig(GPIO_Remap2_CAN1,ENABLE);
//        GPIO_PinsRemapConfig(AFIO_MAP6_CAN1_GRMP,ENABLE);
       
        GPIO_InitStructure.GPIO_Pins = GPIO_Pins_1;
        GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       
        GPIO_Init(GPIOD, &GPIO_InitStructure);       

        GPIO_InitStructure.GPIO_Pins = GPIO_Pins_0;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_PU;       
        GPIO_Init(GPIOD, &GPIO_InitStructure);
        //
        RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_CAN1, ENABLE);
        //
        CAN_ConfigModel(0,bulv);
        //
        CAN_NVIC_ModelConfig();
}

void CAN_ConfigModel(uint8_t Ch,uint16_t bulv)
{   
        CAN_InitType  CAN_InitStructure;
        CAN_FilterInitType          CAN_FilterInitStructure = {0};       
       
        CAN_InitStructure.CAN_TTC = DISABLE;                       
        CAN_InitStructure.CAN_ABO = DISABLE;                       
        CAN_InitStructure.CAN_AWU = DISABLE;                       
        CAN_InitStructure.CAN_NART = ENABLE;                       
        CAN_InitStructure.CAN_RFL = DISABLE;                        
        CAN_InitStructure.CAN_TFP = DISABLE;                       
        CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
        CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;       
        CAN_InitStructure.CAN_BS1 = CAN_BS1_1tq;
        CAN_InitStructure.CAN_BS2 = CAN_BS2_3tq;
        CAN_InitStructure.CAN_Prescaler = 48;
        CAN_Init(CAN1, &CAN_InitStructure);       //<SYSCLK=240M,  APB1CLK=120M, CAN Baudrate=(240/2)*1000K)/((1+9)*(3+7+2)) = 1000K

  CAN_FilterInitStructure.CAN_FilterNumber=0;       
        CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;        
        CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;        
        CAN_FilterInitStructure.CAN_FilterIdHigh=0x0;       
        CAN_FilterInitStructure.CAN_FilterIdLow=0x0;
        CAN_FilterInitStructure.CAN_FilterMskIdHigh=0x0;
        CAN_FilterInitStructure.CAN_FilterMskIdLow=0x0;
        CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFO0;
        CAN_FilterInitStructure.CAN_FilterActivation=ENABLE;
        CAN_FilterInit(CAN1, &CAN_FilterInitStructure);
        //
  CAN_INTConfig(CAN1,CAN_INT_RFP0,ENABLE);
        //
        CAN_ClearINTPendingBit(CAN1, CAN_INT_TSME);
        //
        CAN_INTConfig(CAN1,CAN_INT_TSME,ENABLE);
}       

使用特权

评论回复
沙发
gouguoccc| | 2022-2-15 18:53 | 只看该作者
对照原厂的Demo程序检查一下。

使用特权

评论回复
板凳
骑着蜗牛狂奔O| | 2022-2-15 20:08 | 只看该作者
先试一下官方给的demo 看能否运行

使用特权

评论回复
地板
fuquan19801117|  楼主 | 2022-2-16 08:13 | 只看该作者
好的

使用特权

评论回复
5
fuquan19801117|  楼主 | 2022-2-16 08:42 | 只看该作者
USB 和两路 CAN 同时使用, USB 中断向量号 Remap 说明 FAQ0088

使用特权

评论回复
6
fuquan19801117|  楼主 | 2022-2-16 08:46 | 只看该作者
可能是这个问题造成的,这个申请中断号的例程哪里有?

使用特权

评论回复
7
fuquan19801117|  楼主 | 2022-2-19 11:39 | 只看该作者
gouguoccc 发表于 2022-2-15 18:53
对照原厂的Demo程序检查一下。

SCB->VTOR = APPLICATION_ADDRESS;    我再调整了启动地址后CAN1就不能用了,CAN2正常。
如果将这一句注释掉, 然后再把启动地址调整为0x08000000后CAN1和CAN2都能正常使用了。

使用特权

评论回复
8
fuquan19801117|  楼主 | 2022-2-19 11:40 | 只看该作者
gouguoccc 发表于 2022-2-15 18:53
对照原厂的Demo程序检查一下。

官方的也一样,同样问题

使用特权

评论回复
9
fuquan19801117|  楼主 | 2022-2-19 11:41 | 只看该作者
骑着蜗牛狂奔O 发表于 2022-2-15 20:08
先试一下官方给的demo 看能否运行

SCB->VTOR = APPLICATION_ADDRESS;    我再调整了启动地址后CAN1就不能用了,CAN2正常。
如果将这一句注释掉, 然后再把启动地址调整为0x08000000后CAN1和CAN2都能正常使用了。

使用特权

评论回复
10
fuquan19801117|  楼主 | 2022-2-19 11:41 | 只看该作者
骑着蜗牛狂奔O 发表于 2022-2-15 20:08
先试一下官方给的demo 看能否运行

官方的demo也一样,同样问题

使用特权

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

本版积分规则

14

主题

70

帖子

1

粉丝