STM32F103芯片CAN总线应用程序

上传人:人*** 文档编号:495361568 上传时间:2023-07-04 格式:DOCX 页数:6 大小:16.09KB
返回 下载 相关 举报
STM32F103芯片CAN总线应用程序_第1页
第1页 / 共6页
STM32F103芯片CAN总线应用程序_第2页
第2页 / 共6页
STM32F103芯片CAN总线应用程序_第3页
第3页 / 共6页
STM32F103芯片CAN总线应用程序_第4页
第4页 / 共6页
STM32F103芯片CAN总线应用程序_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《STM32F103芯片CAN总线应用程序》由会员分享,可在线阅读,更多相关《STM32F103芯片CAN总线应用程序(6页珍藏版)》请在金锄头文库上搜索。

1、Copyright(a)作者:日期:修改记录:描述:STM32共有14组过滤器,用以对接收到的帧进行过滤。每组过滤器包括了 2个可配置的32位寄存器:CAN_FxRO和CAN_FxR1。对于过滤器组,可以将其配置成屏蔽位模式,这样CAN_FxRO中保存的就是标识符 匹配值, CAN_FxR1 中保存的是屏蔽码,即 CAN_FxR1 中如果某一位为1,则CAN_FxRO中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器; CAN_FxR1中为0的位表示CAN_FxRO中的相应位可不必与收到的帧进行匹配。过滤器组还可以被配置成标识符列表模式,此时CAN_FxRO和CAN_FxR1中的都是

2、要 匹配的标识符,收到的帧的标识符必须与其中的一个吻合才能通过过滤。例如:CAN_FilterInitStructure.CAN_FilterNumber=O;/设置第一组过滤器 CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;/屏蔽位模式CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;/32 位CAN_FilterInitStructure.CAN_FilterIdHigh=(OxO6355);/接收ID为635的消息11位帧ID标准帧因此左移

3、5CAN_FilterInitStructure.CAN_FilterIdLow=OxOOOO;CAN_FilterInitStructure.CAN_FilterMaskIdHigh=Oxffff;/CAN_FilterInitStructure.CAN_FilterMaskIdLow=Oxffff; CAN_FilterInitStructure.CAN_FilterFIFOAssignment=CAN_FIFOO;/第一组过滤器指向 FIFOOCAN_FilterInitStructure.CAN_FilterActivation=ENABLE;CAN_FilterInit(&CAN_F

4、ilterInitStructure);滤波器配置详细如下:1、对扩展数据帧进行过滤:(只接收扩展数据帧)CAN_FilterInitStructure.CAN_FilterIdHigh = (u32)slave_id16;CAN_FilterInitStructure.CAN_FilterIdLo=(u32)slave_id3)|CAN_ID_EXT|CAN_RTR_DATA)&OxFFFF;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = OxFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow =

5、OxFFFF;(注:标准帧数据帧、标准远程帧和扩展远程帧均被过滤)2、对扩展远程帧过滤:(只接收扩展远程帧) CAN_FilterInitStructure.CAN_FilterIdHigh = (u32)slave_id16; CAN_FilterInitStructure.CAN_FilterIdLow(u32)slave_id3)|CAN_ID_EXT|CAN_RTR_REMOTE)&0xFFFF;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdL

6、ow = 0xFFFF;3、对标准远程帧过滤:(只接收标准远程帧)CAN_FilterInitStructure.CAN_FilterIdHigh = (u32)slave_id16; CAN_FilterInitStructure.CAN_FilterIdLow(u32)slave_id21)|CAN_ID_STD|CAN_RTR_REMOTE)&0xffff;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xFFFF;4、对标准数据帧过

7、滤:(只接收标准数据帧)CAN_FilterInitStructure.CAN_FilterIdHigh = (u32)slave_id16; CAN_FilterInitStructure.CAN_FilterIdLow(u32)slave_id21)|CAN_ID_STD|CAN_RTR_DATA)&0xffff;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xFFFF;5、对扩展帧进行过滤:(扩展帧不会被过滤掉)CAN_Filter

8、InitStructure.CAN_FilterIdHigh = (u32)slave_id16; CAN_FilterInitStructure.CAN_FilterIdLow(u32)slave_id3)|CAN_ID_EXT)&0xFFFF;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xFFFC;6、对标准帧进行过滤:(标准帧不会被过滤掉)CAN_FilterInitStructure.CAN_FilterIdHigh = (u3

9、2)slave_id16; CAN_FilterInitStructure.CAN_FilterIdLow(u32)slave_id21)|CAN_ID_STD)&0xffff;CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF; CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xFFFC; 注:slave_id为要过滤的id号。#include CAN.h /*/CAN 发送数据完成 flag 标志/全局变量声明/引用处 extern volatile unsigned char Can_F

10、lag;/*作者: 描述:CAN 初始化、CAN 波特率=PCLK1/(BRP+1)*(TS1+TS2+3)void Init_CAN(void)NVIC_InitTypeDef NVIC_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;CAN_InitTypeDef CAN_InitStructure;CAN_FilterInitTypeDef CAN_FilterInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE); / CAN 口时 钟使能RCC_APB2Pe

11、riphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); / I/O 口时钟 使能/* Configure CAN pin: RXPA11 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(GPIOA, &GPIO_InitStructure);/* Configure CAN pin: TX PA12*/GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStruc

12、ture.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);/* CAN register init */CAN_DeInit(CAN1);CAN_StructInit(&CAN_InitStructure);/* CAN cell init */CAN_InitStructure.CAN_TTCM=DISABLE;CAN_InitStructure.CAN_ABOM=DISABLE;CAN_InitStructure.CAN_AWUM=DISABLE;CAN_InitStructure.CAN_NART=DIS

13、ABLE;CAN_InitStructure.CAN_RFLM=DISABLE;CAN_InitStructure.CAN_TXFP=DISABLE;/禁止时间触发通信模式/睡眠模式通过清除 sleep 位来唤醒 /ENABLE;报文自动重传/接收溢出时,FIFO未锁定 /发送的优先级由标示符的大小决定CAN_InitStructure.CAN_Mode=CAN_Mode_Normal; /CAN_Mode_LoopBack;/波特率计算/波特率计算CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;/SJW=0PCLK1=36MHZ,CAN 波特率=36MHZ/(2+

14、1)*(15+6+3)=500KbsCAN_InitStructure.CAN_BS1=CAN_BS1_16tq;/TS1=15PCLK1=36MHZ,CAN 波特率=PCLK1/(BRP+1)*(TS1+TS2+3)CAN_InitStructure.CAN_BS2=CAN_BS2_7tq; /TS2=6CAN_InitStructure.CAN_Prescaler=3;/BRP=29/ 45=50K/CAN_Init(CAN1,&CAN_InitStructure);/* CAN filter init */CAN_FilterInitStructure.CAN_FilterNumber=

15、0;/第 1 组过滤器CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;/屏蔽位模式CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;/32 位CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;CAN_FilterInitStructure.CAN_FilterIdLow=0x0000;CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;CAN_FilterInitStructure.CAN_FilterFIFOAssignment=0; / 第

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号