STM32系列单片机CAN现场总线调试笔记
- 格式:pdf
- 大小:230.67 KB
- 文档页数:10


STM32笔记(四)数据帧构成
113、 数据帧构成:
(1) 帧起始。 表示数据开的段帧起始。
(2) 仲裁段。 表示该帧优先级的仲裁段。
(3) 控制段。 表示数据的字节及保留位段。
(4) 数据段。 数据的内容,一帧可发送0~8个字节的数据。
(5) CRC段。 检查帧的传输错误段。
(6) ACK段。 表示确认正常接收的段。
(7) 帧结束。 表示数据的段帧结束。
114、 Stm32f103系列只有一个CAN控制器,有3个发送邮箱和3级深度的2个FIFO,14个过滤组器。
115、 STM32的每个过滤组可以配置为1个32位过滤器和2个16位过滤器。除此之外,还可以配置为屏蔽位模式(ID 屏蔽)和标识符列表(ID和屏蔽寄存器均用来做ID寄存器)模式。
116、 CAN接收到有效报文被放置在3级邮箱深度的FIFO中,FIFO完全由硬件来管理。
117、 CAN总线的波特率
118、 触摸屏一般分为电阻式触摸屏和电容式触摸屏。前者检测触摸的位置原理是利用触摸屏控制器中的A/D转换器经过两次A/D读值后得出X和Y的坐标值。注意:这个X和Y的值是相对于触摸屏的,而非LCD屏。所以在这里需要注意两个概念:触摸屏和LCD屏。这是两个不同的概念,也是两个不同的物理结构,其中电阻触摸屏是由上下两个导电层中间夹着一层非常薄的透明隔层;而LCD就是指显示屏。
119、 电阻触摸屏有X和Y、X和Y的比例因子、坐标轴方向、偏移量。LCD也有自己的这些参数。两者完全不相干,所以在定位的时候需要进行坐标转换。公式:
通过对屏幕的四个点进行校准,得到四元一次方程,求解即可。
120、 NEC协议的数据帧格式:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。
121、 NEC协议在发送的时候,会有560us的38KHz的载波信号,而在接收的时候这部分载波信号被认定为低电平,而剩余的(2.25ms-650us)的逻辑“1”和(1.12ms-650us)的逻辑“0”时间则被认定为高电平。 122、 在单位时间内的位移被定义为速度,速度有线速度和角速度之分,分别对应两种传感器测量这两种不同的速度:线速度传感器(加速度计)、角速度传感器(陀螺仪)。前者多应用在静态或者低慢速运动中的姿态求解,后者多应用在动态运动中姿态求解。
STM32 CAN详细配置方法
1、 CAN 引脚不用初始 就可以工作
2、 BOUNDRATE设置查看文件夹相关文件(这个文档不错BAIDU : CAN总线通讯速率设定)
3、 CAN 要配转换器
4、 CAN_InitStatus_TypeDef status = CAN_InitStatus_Failed;
5、
6、 /* Filter Parameters */
7、 CAN_FilterNumber_TypeDef CAN_FilterNumber; //CAN过滤器组 1 2 3 4 5 //filter 0 1 2 3 4 5
8、 FunctionalState CAN_FilterActivation; //Filter激活 //是否激活CAN Filter
9、 CAN_FilterMode_TypeDef CAN_FilterMode; //过虑的方式 屏蔽位模式 与标识符模式 //标识符过滤MODE select
10、 CAN_FilterScale_TypeDef CAN_FilterScale; //过滤器组位宽度和模式设置 // CAN
filter scale
11、 u8 CAN_FilterID1;
12、 u8 CAN_FilterID2;
13、 u8 CAN_FilterID3;
14、 u8 CAN_FilterID4;
15、 u8 CAN_FilterIDMask1; //如果选择标识、屏蔽,MASK为0不须比较
16、 u8 CAN_FilterIDMask2; //若全为标识 则都要比较
17、 u8 CAN_FilterIDMask3;
18、 u8 CAN_FilterIDMask4;
19、
20、 /* Init Parameters*/
STM32上的CAN通讯是什么?CAN模式功能的详细分析
CAN模式
一.工作模式 通过CAN_MCR寄存器控制INRQ和SLEEP 1.初始化INRQ=1 SLEEP=0 软件初始化应该在硬件 2.正常INRQ=0 SLEEP=0 在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文 3.睡眠SLEEP=1 bxCAN可工作在低功耗的睡眠模式
二.测试模式 通过CAN_BTR寄存器控制LBKM和SILM 1. 静默 可以接受不能发送
2. 循回 可以发送不能接受 3.环回静默 只能自发自收
三.调试模式
STM32标识符筛选器
在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的优先级相关的。因此,节点在接收报文时-根据标识符的值-决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。
STM32普通型芯片的 CAN 有14组过滤器组(互联型有28组过滤器组) ,用以对接收到的帧进行过滤。每组过滤器包括了2个可配置的32位寄存器:CAN_FxR1和
CAN_FxR2。对于过滤器组,通过设置CAN_FM0R的FBMx位, 1.屏蔽位模式 这样
CAN_FxR0中保存的就是标识符匹配值,CAN_FxR2中保存的是屏蔽码,即 CAN_FxR2中如果某一位为1,则 CAN_FxR1中相应的位必须与收到的帧的标志符中的相应位吻合才能通过过滤器。CAN_FxR2中为0的位表示 CAN_FxR1中的相应位可不必与收到的帧进行匹配。
2.标识符列表模式 此时 CAN_FxR1和CAN_FxR2中的都是要匹配的标识符,收到的帧的
1、 SystemInit函数用于初始化STM32系统的各种时钟。此功能只有在复位后使用。在system_stm32f4xx.c(主要描述CMSIS的Cortex-M4设备外设接入层系统的源文件)中定义。
2、GPIO口初始化:
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
3、 CAN总线设计:
CAN1_RX: PI9 PA11 PD0 PB8
CAN1_TX: PA12 PH13 PD1 PB9
CAN2_RX: PB5
CAN2_TX: PB6
STM32的CAN控制器程序设计的重点集中在CAN寄存器组的初始化过程中,而CAN初始化的重点在于波特率的设置、过滤器的设置和位时序的配置。
CAN总线的波特率设计:
波特率=1/正常的位时间
正常的位时间=1*Tq+Tbs1+Tbs2,Tq=CAN的分频数*Tpclk。Tpclk= APB1的时钟周期
启动后的STM32F407:
SYSCLK = 168MHz
HCLK = SYSCLK/1 = 168MHz