Gerrywood 发表于 2022-10-17 22:45

HC32F0CAN的问题

节点ADC采集电压发送给另一节点,结果一段时间后就只发送一个固定的电压值(其实ADC采集出来的电压一直在变化),感觉有点像STM32的CAN FIFO被锁定。请问各位大佬怎么解决这个问题啊,

Gerrywood 发表于 2022-10-17 22:46

求助,卡了好久了这个问题

Gerrywood 发表于 2022-10-17 22:50

这是CAN的配置
   //<<CAN 波特率配置
   stcCanInitCfg.stcCanBt.PRESC = 200-1;
    stcCanInitCfg.stcCanBt.SEG_1 = 9-2;
    stcCanInitCfg.stcCanBt.SEG_2 = 7-1;
    stcCanInitCfg.stcCanBt.SJW   = 7-1;

//        stcCanInitCfg.stcCanBt.PRESC = 100-1;
//        stcCanInitCfg.stcCanBt.SEG_1 = 7-2;
//        stcCanInitCfg.stcCanBt.SEG_2 = 5-1;
//        stcCanInitCfg.stcCanBt.SJW   = 5-1;

    stcCanInitCfg.stcWarningLimit.CanErrorWarningLimitVal = 10;
    stcCanInitCfg.stcWarningLimit.CanWarningLimitVal = 16-1;

    stcCanInitCfg.enCanRxBufAll= CanRxNormal;
    //stcCanInitCfg.enCanRxBufMode = CanRxBufNotStored;
        stcCanInitCfg.enCanRxBufMode = CanRxBufOverwritten;

    stcCanInitCfg.enCanSTBMode   = CanSTBFifoMode;

    CAN_Init(&stcCanInitCfg);

    //<<CAN 滤波器配置
    stcFilter.enAcfFormat = CanStdFrames;
    stcFilter.enFilterSel = CanFilterSel1;
        uint8_t addr = flash_arr;
    stcFilter.u32CODE   = addr;//ID CODE 寄存器用于比较接收到 CAN ID
       
    stcFilter.u32MASK   = 0xE000000;//ID MASK 寄存器用于选择比较的 CAN ID 位。对应的 ID MASK 位为 1 时,不比较该位的 ID CODE。
    CAN_FilterConfig(&stcFilter, TRUE);

    //<<Can Irq Enable
    CAN_IrqCmd(CanRxIrqEn, TRUE);
        CAN_IrqCmd(CanBusErrorIrqEn, TRUE);
    EnableNvic(CAN_IRQn, IrqLevel0, TRUE);

caizhiwei 发表于 2022-10-22 20:52

hc32f072这款吗?我目前用的can,没问题,adc还没测试

tpgf 发表于 2022-11-3 13:46

can好像只有接收fifo会被锁定 发送的没有这个功能吧

qcliu 发表于 2022-11-3 14:14

首先需要解决或者说确定的问题就是adc送入fifo的数据是否是正确的

drer 发表于 2022-11-3 15:35

监测看一下ad传输给发送单元的数据是否正常

coshi 发表于 2022-11-3 15:55

在运行ad采集以及can数据传输的过程中还有其他进程运行吗

kxsi 发表于 2022-11-3 17:09

can的配置没有问题的话 是否应该考虑一下缓存是不是溢出了

wiba 发表于 2022-11-3 17:17

这个固定的值 在接收节点能正常收取吗

caizhiwei 发表于 2022-11-16 21:46

caizhiwei 发表于 2022-10-22 20:52
hc32f072这款吗?我目前用的can,没问题,adc还没测试

hc32f072,今天果然入坑了,开启多路ADC采样,结果can数据发不出去
页: [1]
查看完整版本: HC32F0CAN的问题