打印

hc32f460 can导致单片机复位

[复制链接]
3186|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzqssq|  楼主 | 2024-8-27 15:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
can使能后发送数据,如果can总线上没有其他节点接收数据,单片机直接重启。接上接收设备后,单片机正常工作。can配置代码如下
//CAN Config
static void App_CANCfg(void)
{
    stc_can_init_t stcCanInit;

    /************************* Configure CAN1***************************/
    stc_can_filter_config_t astcFilter1[1U] = {
        {0x1UL, 0x0000UL, CAN_ID_STD},
    };

    /* Initializes CAN. */
    (void)CAN_StructInit(&stcCanInit);
    stcCanInit.stcBitCfg.u32Prescaler = 12U;
    stcCanInit.stcBitCfg.u32TimeSeg1  = 5U;
    stcCanInit.stcBitCfg.u32TimeSeg2  = 3;
    stcCanInit.stcBitCfg.u32SJW       = 3;
    stcCanInit.pstcFilter             = astcFilter1;
    stcCanInit.u16FilterSelect        = CAN_FILTER1;
    stcCanInit.u8WorkMode             = CAN_WORK_MD_NORMAL;//CAN_WORK_MD_ELB;
    stcCanInit.u8PTBSingleShotTx      = CAN_PTB_SINGLESHOT_TX_ENABLE;
    stcCanInit.u8STBSingleShotTx      = CAN_STB_SINGLESHOT_TX_ENABLE;
    stcCanInit.u8STBPrioMode          = CAN_STB_PRIO_MD_DISABLE;
    stcCanInit.u8RxWarnLimit          = 10U;
    stcCanInit.u8ErrorWarnLimit       = 15U;
    stcCanInit.u8RxAllFrame           = CAN_RX_ALL_FRAME_DISABLE;
    stcCanInit.u8RxOvfMode            = CAN_RX_OVF_DISCARD_NEW;
        stcCanInit.u8SelfAck                          = CAN_SELF_ACK_DISABLE;
    /* Enable peripheral clock of CAN. */
    FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_CAN, ENABLE);
    (void)CAN_Init(CM_CAN, &stcCanInit);
       
        CAN_ExitLocalReset(CM_CAN);
    /* Enable the interrupts, the status flags can be read. */
    CAN_IntCmd(CM_CAN, CAN_INT_ALL, DISABLE);
    CAN_IntCmd(CM_CAN, CAN_INT_ERR_INT|CAN_INT_RX_BUF_WARN|CAN_INT_RX|CAN_INT_BUS_ERR, ENABLE);
}

使用特权

评论回复
沙发
probedog| | 2024-8-28 14:37 | 只看该作者
检查单片机的电源是否稳定,电源电压波动或欠压可能导致单片机复位。

使用特权

评论回复
板凳
laocuo1142| | 2024-8-28 14:38 | 只看该作者
电磁干扰

使用特权

评论回复
地板
flycamelaaa| | 2024-8-28 14:38 | 只看该作者
硬件连接问题

使用特权

评论回复
5
stormwind123| | 2024-8-28 14:38 | 只看该作者
时钟配置错误可能导致系统不稳定或复位

使用特权

评论回复
6
classroom| | 2024-8-28 14:39 | 只看该作者
检查CAN通信的初始化设置是否正确,包括波特率、滤波器配置、中断使能等。错误的配置可能导致通信失败或系统异常。

使用特权

评论回复
7
两只袜子| | 2024-8-28 14:39 | 只看该作者
中断处理函数是否正确编写和调用

使用特权

评论回复
8
jcky001| | 2024-8-28 14:40 | 只看该作者
软件BUG把

使用特权

评论回复
9
cr315| | 2024-8-28 14:40 | 只看该作者
检查是否配置了欠压复位(Power-on Reset, POR)功能。如果单片机的电源电压低于某个阈值,可能会触发欠压复位。

使用特权

评论回复
10
elephant00| | 2024-8-28 14:41 | 只看该作者
对CAN通信线路进行加固处理,如添加滤波器、隔离器等,以减少电磁干扰对单片机的影响。

使用特权

评论回复
11
xionghaoyun| | 2024-8-29 08:34 | 只看该作者
找FAE吧

使用特权

评论回复
12
海洋无限| | 2024-8-29 12:02 | 只看该作者
这个找厂商比较快

使用特权

评论回复
13
zzqssq|  楼主 | 2024-9-3 11:32 | 只看该作者
谢谢大家!解决了,将总线错误中断关闭就好了。猜测可能是因为开启总线错误中断的状态下,发送错误计数到达阈值,关闭节点后将reset置位了。也有可能是其他原因,欢迎各位大拿探讨指正!

使用特权

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

本版积分规则

2

主题

3

帖子

0

粉丝