OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3903|回复: 3

CAN单向通信成功,双向通信失败求解

[复制链接]

2

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2018-4-4
在线时间
1 小时
发表于 2018-4-7 22:25:09 | 显示全部楼层 |阅读模式
1金钱
我在做CAN的通信实验,有一块F4的板子和一块F1的板子。我的目标是两块板子都往CAN总线上发信息,且两块板子都能接收并显示。问题就出在这儿了,F4的板子向F1发信息没问题,F1向F4发信息也没问题,一切正常,但两块板子都往总线发信息就会接受失败.....尝试了许多办法仍然不行,求大神帮助。下面简单贴一下主函数。两块板子的程序几乎完全一样。初始化程序就不贴了,直接照搬的原子例程
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"         
#include "can.h"



int main(void)
{         
                u8 key;
        u8 i=0;
        u8 res;
        u8 canbuf[8];


        delay_init();                     
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        uart_init(115200);                
        LED_Init();                         
        LCD_Init();                                  
        KEY_Init();                                

        CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,8,CAN_Mode_Normal);

               
        while(1)
        {
      canbuf[0]=1;
                        canbuf[2]=0;
                        canbuf[3]=1;
                        canbuf[4]=0;
                        canbuf[5]=1;
                        canbuf[1]=0;
                        canbuf[6]=1;
                        canbuf[7]=0;
                        res=Can_Send_Msg(canbuf,8);//发送数据
            delay_ms(500);
               
                key=Can_Receive_Msg(canbuf);//接受数据。如果接收到数据会返回1值,否则返回0
                if(key)
                {                       
                        LCD_Fill(60,270,130,310,WHITE);//清空显示
                        for(i=0;i<key;i++)
                        {                                                                            
                                if(i<4)LCD_ShowxNum(60+i*32,270,canbuf[i],3,16,0X80);//        显示数据
                                else LCD_ShowxNum(60+(i-4)*32,290,canbuf[i],3,16,0X80);       
                        }
                }
       
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-4-8 02:18:31 | 显示全部楼层
回复

使用道具 举报

1

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2018-4-8
在线时间
9 小时
发表于 2018-4-14 17:22:51 | 显示全部楼层
在线调试看下有没有数据变化?或者用示波器看下
回复

使用道具 举报

12

主题

84

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2015-4-21
在线时间
102 小时
发表于 2018-4-16 10:25:05 | 显示全部楼层
1.你can总线上有多少设备,设备id不要重复,避免多个设备同时向一个id发送数据,can有仲裁机制2. 匹配电阻是否有加,总线电阻是否对3.总线接线检查4.检查配置
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 17:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表