在配置CAN模块前要明白简单的CAN驱动关键词
①Can Controller :CAN物理层次的外设,连接Tx和Rx
②Can Hardware Unit :1个Can Hardware可以包含多个Can Controller,它表示Can驱动
③L-PDU :由CANID、DLC、Data三部分组成
④L-SDU : L-PDU中Data部分
⑤Hardware Object :P-DUR buffer
开配
1.常规配置
2.添加一个Can Controller
3.Can Controller常规配置
①优先配置波特率
波特率详细计算不介绍,可反推速记 BaudRate = 时钟源 /(Prescaller x Tq number)
采样点 = (Synchronization Segment + Propagation Segment + Phase Segment 1)/ Tq number
②常规配置
4.配置HRH与HTH
basic can 与 full can是相对于上层来讲的,full can只能收发固定id的报文,basic can可接受全部,也可设置滤波只接受固定范围id或固定id,具体看下文
滤波由两个重要参数组成Filter Code 与 Filter Mask ,两者关系为 ID & Filter mask = Filter Code ,求掩码看重不重要,1表示重要,0表示不重要。例如id范围为0x600-0x67f
①第一位 6 -0110每一位都关心,故Filter mask为111=7,Filter Code为0110 = 6
②第二位 0~7 - 0000~0111,只关心第一位必须为0,所以Filter mask为1000=8,因为第一位必须为0,所以&操作后Filter Code第一位必须为0,其他位也为0,所以Filter Code 为0000=0
③第三位0~F - 0000~1111,这四位都不关心,所以Filter mask 为0000=0,Filter Code也为
0000 = 0
所以 Filter mask = 0x780,Filter Code = 0x600
至此,can模块mcal配置完成
5.配置中断并使能,初始化can模块 收发消息
注意,为了方便,调用了Can_Hw_GetMbMsg()接口直接读取mb中的数据,第一个参数为未抽象化后的外设编号