打印

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

[复制链接]
353|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我在做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);  //波特率250kbps  

               
         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(100);
               
                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,3,16,0X80);        //显示数据
                                else LCD_ShowxNum(60+(i-4)*32,290,canbuf,3,16,0X80);        
                         }
                }
        
        }
}

使用特权

评论回复

相关帖子

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

本版积分规则

457

主题

483

帖子

1

粉丝