访问电脑版页面

导航:老古开发网手机版STM32单片机与CAN总线

调试STM32F107的CAN模块

导读:花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessa
关键字:
can模块,stm32f107,

花了两天的时间,调试了开发板的CAN模块,先是调试CAN1、CAN2,最后让CAN1和CAN2通信。期间遇到了很多问题,还有很多问题没解决。
1、使用扩展模式,但是TxMessage.StdId接收到始终是00,其他的TxMessage.IDE TxMessage.DLC都是对的,包括数据。不知道为什么,网上查了一下,有位仁兄和我遇到的问题一样,如果有人看到此贴,还望不吝赐教。所以我最后都是只用标准格式。
2、CAN2的CAN_FilterNumber必须设置为14,CAN_FilterFIFOAssignment=CAN_FIFO0;也不知为什么,呵呵,还要好好看书啊。
3、对于中断,代码如下:
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = CAN2_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel=CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}
居然也可以,NVIC_InitStructure.NVIC_IRQChannel怎么可以同时赋予不同的值呢,还没搞懂。

不管怎么说,二者可以通信,拔掉线子收不到数据,线子一插上,就可以收到数据,通信果然很稳定啊。


来源:互联网   作者:karen  2018/10/23 10:00:02
栏目: [ STM32单片机与CAN总线]

相关阅读

STM32单片机对CAN过滤器的设置方法

详解stm32的CAN控制器(程序分享)

STM32F3—CAN通信自发自收

基于STM32F1O5的CAN总线中继器的设计与实现

基于STM32F105微控制器的双CAN冗余设计方案

STM32 CAN总线传输波特率的计算

STM32系列第25篇--CAN总线

基于STM32和CAN总线的电动车电池管理系统设计

调试STM32F107的CAN模块

STM32和CAN总线在温度监控系统中的应用

STM32单片机的can总线的配置

STM32单片机bxCAN的工作模式解析

STM32的can现场总线的特点及工作流程分析