打印

请教高手,关于STM32 105第二路CAN的问题

[复制链接]
4760|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hyper007|  楼主 | 2010-3-9 17:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用STM32 105芯片需要使用第二路CAN,使用的库函数版本是V2.0.2因库函数不支持两路CAN,我把3.0.0库函数关于CAN的部份拷到我的文件中,再增加了些CAN2的定义和改动一些宏,用拷入的3.0.0库函数部份对CAN1进行配置CAN1部份CAN1能正常收发,用同样的方法对CAN2进行配置但CAN2不能发送接收,调用发送函数后发送FIFO满了数据发不出去。以下是添加的一些代码
//--配置部份---------------------------------------------------------
#define CAN1_BASE (APB1PERIPH_BASE + 0x6400)
#define CAN1  ((CAN_TypeDef *) CAN1_BASE)

#define CAN2_BASE (APB1PERIPH_BASE + 0x6800)
#define CAN2  ((CAN_TypeDef *) CAN2_BASE)

//--使能时钟部份------------------------------------------------------------
RCC->APB1ENR |= 0x02000000|0x04000000;

//--使能IO口部份---------------------------------------------------------
//--CAN2------------------------------------------------------------
// Configure CAN2 pin: RX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// Configure CAN2 pin: TX
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

请问一下这样配置为什么CAN2不能工作
沙发
gxgclg| | 2010-3-9 22:02 | 只看该作者
双CAN还没用过,不过配置应该是一样的吧

使用特权

评论回复
板凳
zwll| | 2010-3-9 22:08 | 只看该作者
配置是一样的?

使用特权

评论回复
地板
IJK| | 2010-3-10 11:04 | 只看该作者
本帖最后由 IJK 于 2010-3-10 11:06 编辑

STM32 105/107芯片的第二路CAN比较特殊

STM32 105/107芯片的第二路CAN比较特殊,主要体现在filter的设置上面。
你对CAN2的IO进行配置是可以的,但PB5/PB6应该是CAN2的remap,如果没有设置remap会有问题。

使用特权

评论回复
5
hyper007|  楼主 | 2010-3-10 12:55 | 只看该作者
谢谢!已设置好了是remap的问题

使用特权

评论回复
6
mochou| | 2012-4-10 17:09 | 只看该作者
5# hyper007
你好,可以把你配置CAN2的代码发我看下,我也是用的PB5,PB6映射的,但不能工作。谢谢。

使用特权

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

本版积分规则

12

主题

26

帖子

0

粉丝