OpenEdv-开源电子网

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

请教原子哥CAN实验问题

[复制链接]

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
发表于 2013-7-26 10:23:58 | 显示全部楼层 |阅读模式
原子哥,我在你的CAN总线的例程上做了点修改,我用两块开发板做实验,实验结果表明在回环模式下是两个开发板都能实现发送和接收数据,但是当把两个板连接起来,用普通模式下却发不出数据,在硬件仿真下看到发送状态sta=0x05,发送是失败的。不知为什么?我的开发板没有CAN模块,都外加上去的。在回环模式下,两个开发板都是可以的,在普通模式下两个CAN模块的CANH和 CANH 连接,CANL和 CANL连接。这是我的修改程序,其它地方都没改:
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "can.h" 

//#define KEY0 PCin(0) //PC0  
u8 sendbuf[8]={0x09,0x02,0x09,0x04,0x05,0x06,0x07,0x08};
u8 receivebuf[8];

int main(void)
{
u8 key;
u8 res;
u8 mode=0;//CAN工作模式;0,普通模式;1,环回模式

  Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600); //串口初始化为9600
delay_init(72);   //延时初始化 
  CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps 
while(1)
{

res=Can_Send_Msg(sendbuf,8);//发送8个字节    
key=Can_Receive_Msg(receivebuf);   
}
}
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-26 10:24:49 | 显示全部楼层
回复【楼主位】648342243:
---------------------------------
希望知道原因的朋友们也可以不吝赐教,小弟拜谢了。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-26 11:05:06 | 显示全部楼层
回环模式,你断开连接测试下
就单独一个板子,测试回环模式.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-26 11:38:49 | 显示全部楼层
回复【3楼】正点原子:
----------------------------
测试过了,不管两个板子有没有连接,只要是回环模式的话就没问题。
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-26 14:34:27 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
原子哥啊,这个问题困扰我两天了啊!是哪里的问题啊?要崩溃了!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-26 16:35:56 | 显示全部楼层
回复【4楼】648342243:
---------------------------------
那说明你模式没设置错了.
我们的例程在我们板子测试很好的哦.
你的板子硬件没问题吧?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-26 18:52:54 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
但是为什么回环模式可以呢?单独的话回环模式都可以,如果是板子硬件的问题的话不是回环模式也不行了么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-26 19:27:04 | 显示全部楼层
回环模式不需要外部电路支持.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-27 23:52:48 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
哦哦,那我看下我的CAN模块有没有问题,还有就是原子哥你帮我看看我的程序有没有问题啊,我就修改了例程的主函数部分。
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "can.h" 

  
u8 sendbuf[8]={0x09,0x02,0x09,0x04,0x05,0x06,0x07,0x08};
u8 receivebuf[8];

int main(void)
{
u8 key;
u8 res;
u8 mode=0;//CAN工作模式;0,普通模式;1,环回模式

  Stm32_Clock_Init(9); //系统时钟设置
uart_init(72,9600);   //串口初始化为9600
delay_init(72);       //延时初始化 
 
  CAN_Mode_Init(1,8,7,5,mode);//CAN初始化,波特率450Kbps 
while(1)
{

res=Can_Send_Msg(sendbuf,8);//发送8个字节      
key=Can_Receive_Msg(receivebuf);    
}
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-28 10:01:57 | 显示全部楼层
回复【9楼】648342243:
---------------------------------
你这收发太频繁了点吧?最好隔段时间发一次进行测试.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-29 11:36:21 | 显示全部楼层
回复【10楼】正点原子:
----------------------------
原子哥,怎么来检测一个CAN模块的好坏呢?是在回环模式下看CANH和CANL的输出波形么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-29 16:44:23 | 显示全部楼层
回复【11楼】648342243:
---------------------------------
在回环模式下,CAN_TX引脚是会输出信号的.
所以在CANH,CANL上应该可以检测到电平变化
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-29 16:50:04 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
检查了,在回环模式下用示波器看CANH和CANL都是有电平变化的,可是正常模式下,把两个板连在一起时,发送就会挂起,发送不成功,这是为什么呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-29 17:24:44 | 显示全部楼层
回复【13楼】648342243:
---------------------------------
表示不解....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

26

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
291
金钱
291
注册时间
2013-5-2
在线时间
4 小时
 楼主| 发表于 2013-7-29 17:24:45 | 显示全部楼层
回复【12楼】正点原子:
---------------------------------
用硬件仿真可以看到主要发送不了数据,邮箱挂起的原因是TXOK0=0,邮箱处于空置状态。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-16 03:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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