OpenEdv-开源电子网

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

can通信的问题,可以发送 接收。

[复制链接]

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-12-2
在线时间
0 小时
发表于 2014-1-11 22:00:57 | 显示全部楼层 |阅读模式
key=1;
if(key==KEY_RIGHT)//KEY0按下,发送一次数据
{
for(i=0;i<8;i++)
{
canbuf=UART1_TX_BUF;//填充发送缓冲区
  }
res=Can_Send_Msg(canbuf,8);//发送8个字节   res=0代表发送成功
if(res==0)
{
LED1=!LED1; //PF6:发送指示灯 :延时1S中
delay_ms(1000);
}

    }
     }
/
/////////////////上面是发送//////////////////////////////////
key1=Can_Receive_Msg(buf);
if(key1)//接收到有数据
{
  for(i=0;i<key1;i++)
{
UART1_TX_BUF=buf;
LED0=!LED0;  //PC12:接受指示灯   延时100ms:亮灭4次,充分说明CAN每次发送八个字节的数据;
delay_ms(200);    
  }
UART1_TX_BUF=0; //自动添加结束符
printf("\r\n%s\r\n",UART1_TX_BUF);//发送接收到的数据到串口1
}    
////////////////////////上面是接收///////////////////////////////////////
我想请教一下,如果两个分开分别发送给两块板子的话,问什么负责接收的开发板  收不到信息呢??
key1=Can_Receive_Msg(buf);
if(key1)//接收到有数据
{
  for(i=0;i<key1;i++)
{
UART1_TX_BUF=buf;
LED0=!LED0;   //PC12:接受指示灯    延时100ms:亮灭4次,充分说明CAN每次发送八个字节的数据;
delay_ms(200);     
  }
UART1_TX_BUF=0; //自动添加结束符
printf("\r\n%s\r\n",UART1_TX_BUF);//发送接收到的数据到串口1
}    
当我只用这个给接收的板子的时候,key1一直是0,接收不到。想请教一下   这个是问什么呢???我想做个东西是这样的:A板子负责发送,接收UART1的串口助手写数据,然后通过CAN 发送到B 板子,B板子接收到之后会显示在串口助手里面;最好反之也可以。恳请原子哥  或者洋哥指点下。谢谢谢谢!!


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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-1-12 16:08:14 | 显示全部楼层
你现在CAN通信正常了没有?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-1-12 16:41:57 | 显示全部楼层
如果我不分开,按照您的历程 稍微改改,不用按键的 直接上电就发送 接收那种  可以做到这边发送一个固定值 那边的串口收到这个值,但是当我改变这个固定值得时候,只下载在A(发送版子)的时候呢,B接收板子收的数据还是之前的那个 并没有因为我改变了数据 它收到的也跟着改变;
此外 ,当我把代码不变,而是把B板子改成发送的板子,A变成接收到板子,A板子却进不去接收的代码中key1一直是0.示波器也试了确实是没哟数据。
请问原子哥,  这个到底是咋回事呢??按道理讲的话,CAN通信 接收端 应该会随着发送端的数据改变而改变的啊 这样的话才有意义啊  肿么办呢
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-1-12 16:42:11 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
如果我不分开,按照您的历程 稍微改改,不用按键的 直接上电就发送 接收那种  可以做到这边发送一个固定值 那边的串口收到这个值,但是当我改变这个固定值得时候,只下载在A(发送版子)的时候呢,B接收板子收的数据还是之前的那个 并没有因为我改变了数据 它收到的也跟着改变; 
此外 ,当我把代码不变,而是把B板子改成发送的板子,A变成接收到板子,A板子却进不去接收的代码中key1一直是0.示波器也试了确实是没哟数据。 
请问原子哥,  这个到底是咋回事呢??按道理讲的话,CAN通信 接收端 应该会随着发送端的数据改变而改变的啊 这样的话才有意义啊  肿么办呢
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2013-12-2
在线时间
0 小时
 楼主| 发表于 2014-1-12 16:42:31 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
如果我不分开,按照您的历程 稍微改改,不用按键的 直接上电就发送 接收那种  可以做到这边发送一个固定值 那边的串口收到这个值,但是当我改变这个固定值得时候,只下载在A(发送版子)的时候呢,B接收板子收的数据还是之前的那个 并没有因为我改变了数据 它收到的也跟着改变; 
此外 ,当我把代码不变,而是把B板子改成发送的板子,A变成接收到板子,A板子却进不去接收的代码中key1一直是0.示波器也试了确实是没哟数据。 
请问原子哥,  这个到底是咋回事呢??按道理讲的话,CAN通信 接收端 应该会随着发送端的数据改变而改变的啊 这样的话才有意义啊  肿么办呢
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-11 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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