huyang106 发表于 2026-6-22 15:43:25

CAN 接收数据异常 | 知道原因了

我们使用 STC32G128 CAN通讯;

发现 CAN发射正常,接收数据异常;

huyang106 发表于 2026-6-22 15:46:26

用示波器测量CAN接收波形正常;;CAN分析仪发射与接收都正常;;
在单片机中断也正常;就是数据不正确

huyang106 发表于 2026-6-22 15:47:25

void CanReadMsg(void)
{
    u8 i;
    CANSEL = 0;
    do{
      for(i = 0; i < 13 ;i++)
      {
         RX_DataBuffer = READ_CAN((u8)(RX_BUF0 + (i&3)));
         UART1_Tx_BUFF = RX_DataBuffer;
      }
      Uart1_Send_Data(13);
    }while(READ_CAN(SR) & 0x80);
}
void CAN1_Interrupt(void) interrupt CAN1_VECTOR
{
u8 isr;
isr = READ_CAN(ISR);
if((isr & 0x04) == 0x04)//发送
{
    CANAR = ISR;
    CANDR = 0x04;    //CLR FLAG
}
if((isr & 0x08) == 0x08)//接收
{
    CANAR = ISR;
    CANDR = 0x08;       //CLR FLAG
    CanReadMsg( );
}
if((isr & 0x40) == 0x40)//ALI
{
    CANAR = ISR;
    CANDR = 0x40;    //CLR FLAG
}
}

狂热主宰 发表于 2026-6-22 15:59:01

CAN控制器有多种模式
有没有仅回环

huyang106 发表于 2026-6-22 16:20:19

什么地方设置???

乘风飞扬 发表于 2026-6-22 18:17:49

先用屠龙刀三例程包或者32G实验箱例程包里面的CAN总线收发例子测试
根据需要修改CAN接口通道,其它先不要修改,功能验证正常后再进行修改/移植。
实验箱例程包下载页面:https://www.stcai.com/syx
屠龙刀三例程包下载页面:https://www.stcai.com/hxgnsyb

huyang106 发表于 2026-6-23 09:11:47

知道什么原因了;; 读取BUF不 够; 16 与12;
页: [1]
查看完整版本: CAN 接收数据异常 | 知道原因了