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

lpasmg   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不能工作

回复评论 (4)

                                 双CAN还没用过,不过配置应该是一样的吧
点赞  2010-3-9 22:02
                                 配置是一样的?
点赞  2010-3-9 22:08


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

STM32 105/107芯片的第二路CAN比较特殊,主要体现在filter的设置上面。
你对CAN2的IO进行配置是可以的,但PB5/PB6应该是CAN2的remap,如果没有设置remap会有问题。
点赞  2010-3-10 11:04
                                 谢谢!已设置好了是remap的问题
点赞  2010-3-10 12:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复