打印
[STM32F1]

can通信的接收问题

[复制链接]
643|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tian111|  楼主 | 2021-12-7 19:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
can在接受时,为什么总是只能接受3帧数据,是因为fifo0是3级深度吗?

使用特权

评论回复
沙发
huangchui| | 2021-12-7 19:41 | 只看该作者
然后呢?你是怎么应对这个的呢        

使用特权

评论回复
板凳
tian111|  楼主 | 2021-12-7 19:43 | 只看该作者
现在找到的解决办法就是加延时,延时一段时间后去读自己从fifo中读取的数据

使用特权

评论回复
地板
renyaq| | 2021-12-7 19:45 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
5
tian111|  楼主 | 2021-12-7 19:47 | 只看该作者
下面是我的扫描从can的程序,以及接受中断的程序
         CAN1_Send_Msg(CAN2_DATA,8,0x0111);//扫描从机CAN1
                delay_ms(10);
                if(can1_num>0)
                {         
            printf("%d",can1_num);
                        RS232_1_Send_Data(can1_buf,48);
                        can1_num=0;        
               
                }
                delay_ms(1);//两次扫描之间要加延时,要不然会出错
        
        CAN1_Send_Msg(CAN3_DATA,8,0x0112);//扫描从机CAN2        
                delay_ms(1);
                if(can1_num>0)
                {
                        printf("%d",can1_num);
                        RS232_1_Send_Data(can1_buf,24);
                        can1_num=0;
               
                }
接受中断程序:
void CAN1_RX0_IRQHandler(void)
{
          CanRxMsg RxMessage;
        
        u8 i=0;
        can1_num++;
        
    CAN_Receive(CAN1, 0, &RxMessage);
        for(i=0;i<8;i++)
        {
                can1_buf[(can1_num-1)*8+i] = RxMessage.Data[i];
        }
        CAN1_ID=RxMessage.StdId;
        can1_rec_flag = 1;
        CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);  /* 清除挂起中断 */
//        CAN_FIFORelease(CAN1,CAN_FIFO0 );
//        printf("rxbuf[%d]:%d\r\n",i,RxMessage.Data[i]);
}

使用特权

评论回复
6
dengdc| | 2021-12-7 19:50 | 只看该作者
这个问题也困扰我好久了

使用特权

评论回复
7
wyjie| | 2021-12-7 19:52 | 只看该作者
程序优化的话,发送也可以使用中断

使用特权

评论回复
8
chuxh| | 2021-12-7 19:54 | 只看该作者
要在有限的范围内解决实际分体。

使用特权

评论回复
9
xxrs| | 2021-12-7 19:55 | 只看该作者
对于STM32芯片来讲,每个CAN有两个RX-FIFO,每个FIFO最多可以放三个邮箱。

使用特权

评论回复
10
lizye| | 2021-12-7 19:57 | 只看该作者
两个FIFO每次最多可接收6个邮箱信息

使用特权

评论回复
11
spark周| | 2021-12-7 20:00 | 只看该作者
及时的清空邮箱啊

使用特权

评论回复
12
jiajs| | 2021-12-7 20:02 | 只看该作者
它这个不叫fifo  叫邮箱

使用特权

评论回复
13
yszong| | 2021-12-7 20:06 | 只看该作者
正常 只有三个邮箱

使用特权

评论回复
14
pengf| | 2021-12-7 20:08 | 只看该作者
手册上说是只有仨邮箱

使用特权

评论回复
15
tian111|  楼主 | 2021-12-7 20:10 | 只看该作者

唉,还是没有什么结果,算了,多谢大家啦

使用特权

评论回复
16
tpgf| | 2022-1-4 19:29 | 只看该作者
目前我还没有调试通过呢

使用特权

评论回复
17
guanjiaer| | 2022-1-4 19:36 | 只看该作者
我用的f4的就是仨邮箱

使用特权

评论回复
18
heimaojingzhang| | 2022-1-4 19:37 | 只看该作者
没错 就是三帧

使用特权

评论回复
19
keaibukelian| | 2022-1-4 19:40 | 只看该作者
所有有这个模块的都是三个邮箱吗

使用特权

评论回复
20
磨砂| | 2022-1-4 19:42 | 只看该作者
邮箱个数就是深度等级吗

使用特权

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

本版积分规则

797

主题

8878

帖子

7

粉丝