STM32F017/103 CAN通信求助,急

[复制链接]
3742|5
 楼主| 386452199 发表于 2011-9-5 21:45 | 显示全部楼层 |阅读模式
最近在做STM32 CAN通信,有自己做在两块103的板子,8MHz和一块金牛F107的板子25MHz。
自己的做的两块板子之间能CAN通信
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
  CAN_InitStructure.CAN_Prescaler=5;
波特率计算为450K,APB2PeriphClock = 32M

金牛F107的板子,回环没有问题,CAN1发CAN2收也没有问题,说明107的CAN也是好的。
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
  CAN_InitStructure.CAN_Prescaler=5;

可是107和103就是通不起来,我想是波特率的问题,因为同样的设置波特率用示波器看是不一样的。107的高一点。
大家有没有做过这样的实验啊,帮帮忙吧
 楼主| 386452199 发表于 2011-9-5 21:48 | 显示全部楼层
忘了说F107我用的是金牛的CAN例程改了一点点。
yinyangdianzi 发表于 2011-9-6 10:54 | 显示全部楼层
猴急也没用。。等香主。等高手
violet520 发表于 2011-9-6 13:21 | 显示全部楼层
APB2PeriphClock = 32M ?怎么出来450K?
IJK 发表于 2011-9-6 14:34 | 显示全部楼层
对于CAN,波特率差一点都不行的,记得差别应该在1%以下
 楼主| 386452199 发表于 2011-9-7 16:40 | 显示全部楼层
:lol
终于搞定了。前面写错了是36M
我用107的TIM2做一个PWM波,用示波器测出频率
再反算出107的APB2PeriphClock = 60M(不知道是乍出来的60M,手册上说的是不能超过36M的)
所以
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_6tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_5tq;
  CAN_InitStructure.CAN_Prescaler=50;
得波手率为100K
103 APB2PeriphClock = 36M
  CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
  CAN_InitStructure.CAN_BS1=CAN_BS1_9tq;
  CAN_InitStructure.CAN_BS2=CAN_BS2_8tq;
  CAN_InitStructure.CAN_Prescaler=20;
波手率为100K
CAN通信成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

23

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部