打印

GD32F190C CAN发送正常,不能接收,回环也无法接收,附代码

[复制链接]
2491|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lmhtz|  楼主 | 2017-4-30 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lmhtz 于 2017-4-30 14:59 编辑

GD32F190C6 ,CAN发送正常,不能接收,回环模式也无法接收,谁有碰到
一下相关代码:
端口:
    /* Configure CAN1 RX pin */
    GPIO_PinAFConfig(GPIOA,GPIO_PINSOURCE11,GPIO_AF_9);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_PULLUP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
               
    /* Configure CAN1 TX pin */
    GPIO_PinAFConfig(GPIOA,GPIO_PINSOURCE12,GPIO_AF_9);
    GPIO_InitStructure.GPIO_Pin = GPIO_PIN_12;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_InitStructure.GPIO_OType = GPIO_OTYPE_PP;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PUPD_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStructure);


配置
void CAN_Configuration(void)
{
    CAN_InitPara        CAN_InitStructure;
    CAN_FilterInitPara  CAN_FilterInitStructure;
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_CAN1, ENABLE);  
    CAN_DeInit(CAN1);
    CAN_StructInit(&CAN_InitStructure);
        
    /* CAN1 and CAN2  cell init */
    CAN_InitStructure.CAN_TTC = DISABLE;
    CAN_InitStructure.CAN_ABOR = DISABLE;
    CAN_InitStructure.CAN_AWK = DISABLE;
    CAN_InitStructure.CAN_ARD = DISABLE;
    CAN_InitStructure.CAN_RFOD = DISABLE;
    CAN_InitStructure.CAN_TFO = ENABLE;
    CAN_InitStructure.CAN_Mode = CAN_MODE_LOOPBACK;
    CAN_InitStructure.CAN_SJW = CAN_SJW_4TQ;  //4
    CAN_InitStructure.CAN_BS1 = CAN_BS1_10TQ;  //14
    CAN_InitStructure.CAN_BS2 = CAN_BS2_6TQ;  //2
    CAN_InitStructure.CAN_Prescaler =4;

    CAN_Init(CAN1, &CAN_InitStructure);
               
         

    // CAN1 filter init
    CAN_FilterInitStructure.CAN_FilterNumber = 1;
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FILTERMODE_MASK;
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FILTERSCALE_32BIT;
    CAN_FilterInitStructure.CAN_FilterListHigh = (((uint32_t)0x5a5<<21)&0xffff0000)>>16;
    CAN_FilterInitStructure.CAN_FilterListLow = 0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskListHigh = 0xffff;
    CAN_FilterInitStructure.CAN_FilterMaskListLow = 0xffff;
    CAN_FilterInitStructure.CAN_FilterFIFOAssociation = CAN_FIFO0;
    CAN_FilterInitStructure.CAN_FilterWork = ENABLE;//DISABLE;//
    CAN_FilterInit(&CAN_FilterInitStructure);

    CAN_INTConfig(CAN1, CAN_INT_RFNE0, ENABLE); //·Ç¿ÕÖжÏ
}



中断分配

    /* Enable CAN1 RX0 interrupt IRQ channel */
    NVIC_InitStructure.NVIC_IRQ = CAN1_RX0_IRQn;
    NVIC_InitStructure.NVIC_IRQPreemptPriority = 0;
    NVIC_InitStructure.NVIC_IRQSubPriority = 2;
    NVIC_InitStructure.NVIC_IRQEnable = ENABLE;
    NVIC_Init(&NVIC_InitStructure);


void CAN1_RX0_IRQHandler(void)
{
    CAN_Receive(CAN1, CAN_FIFO0, &RxMessage);
    。。。。
}


沙发
lmhtz|  楼主 | 2017-5-1 21:00 | 只看该作者
例程代码与用户手册核对过,代码中有些寄存器在手册中未见描述,手册是190cn,2.0版本,是手册未更新还是什么原因?

使用特权

评论回复
板凳
vibra2016| | 2017-5-8 21:07 | 只看该作者
这个是CAN总线的处理的哈

使用特权

评论回复
地板
youminlee| | 2017-5-12 09:47 | 只看该作者
你们公司是在哪里?  需要协助请联系QQ:401575712   MT:15914107194

使用特权

评论回复
5
丶小宇ge| | 2017-11-8 11:36 | 只看该作者
楼主解决没有,同求!

使用特权

评论回复
6
liufan2011| | 2017-11-16 08:52 | 只看该作者
你看看你的初始化代码, 你的RX引脚是输入状态吗?

使用特权

评论回复
7
bboo| | 2017-11-16 13:23 | 只看该作者
同意楼上的观点

使用特权

评论回复
8
lmhtz|  楼主 | 2017-12-10 09:30 | 只看该作者
过滤设置问题

使用特权

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

本版积分规则

2

主题

15

帖子

2

粉丝