SAE J1939 协议源代码分析(四)-J1939_SetAddressFilter(unsigned char Ps_Address)
来源:互联网 发布:mac 访问共享文件夹 编辑:程序博客网 时间:2024/06/07 22:42
预备知识
1.熟悉CAN2.0B协议,及相关硬件驱动开发
2.熟悉SAE J1939协议http://blog.csdn.net/xietongxueflyme/article/details/74276702/
函数名
函数功能
基于SAE J1939协议,我们需要CAN控制器提供至少3个滤波器给J1939协议代码。三个滤波器分别配置如下:
1. 设置滤波器0,只接受广播信息(PF = 240 -255)。
2. 设置设置滤波器1,2只接受全局地址(J1939_GLOBAL_ADDRESS)
3. 随着程序的运行,将改变滤波器2,来适应程序逻辑。
J1939_SetAddressFilter()
是用来设置滤波器2的, 函数主要设置PS位(目标地址),其目的是,让控制器只接受发送给本设备的消息。
函数参数
#define Port_SetAddressFilter(Address) J1939_SetAddressFilter(Address)void J1939_SetAddressFilter(unsigned char Ps_Address){ //你的移植代码;}
传入参数 Ps_Address是我们要滤波的 PS值(0 - 255)。
移植示例
采用英飞凌XMC4500,对can驱动层,配置了3个滤波器,拿滤波器2来作为J1939_SetAddressFilter() 设置的滤波器。
void J1939_SetAddressFilter(unsigned char Ps_Address){ /*配置can驱动的结构体,设置滤波器2的PS字段*/ CAN_NODE3_DEBUG.lmobj_ptr[2]->mo_ptr->can_id_mask &=0XFFFF00FF; CAN_NODE3_DEBUG.lmobj_ptr[2]->mo_ptr->can_id_mask |= (Ps_Address<<8); /*将can驱动结构体,重新写入滤波器2*/ CAN_NODE_MO_Init(CAN_NODE3_DEBUG.lmobj_ptr[2]);}
程序说明
本函数提供给协议自身使用,除非协议被当做网络管理器。
阅读全文
2 0
- SAE J1939 协议源代码分析(四)-J1939_SetAddressFilter(unsigned char Ps_Address)
- SAE J1939 协议源代码分析(五)-ChangeGroupIDofLMO()
- SAE J1939 协议源代码分析(零)-源代码下载
- SAE J1939 协议源代码分析(三)-程序应用分析
- SAE J1939 协议源代码分析(一)-程序结构框架
- SAE J1939 协议源代码分析(二)-程序移植
- SAE J1939 协议源代码分析(六)-J1939_CAN_Transmit(J1939_MESSAGE *MsgPtr)
- SAE J1939 协议源代码分析(七)-J1939_CAN_Receive(J1939_MESSAGE *MsgPtr)
- SAE J1939 协议源代码分析(八)-4大中断使能与使能
- SAE J1939协议
- SAE J1939学习笔记(四)
- SAE J1939学习笔记(四)
- SAE J1939 协议入门前须知(一)
- VC++中如何实现基于CAN的SAE J1939协议
- SAE J1939介绍
- SAE J1939学习笔记(一)
- SAE J1939学习笔记(二)
- SAE J1939学习笔记(三)
- Sqoop-1.4.6的简要安装
- 详解Java中的clone方法
- 你真的知道敏捷和迭代吗?
- POJ
- python在window下使用pip安装模块
- SAE J1939 协议源代码分析(四)-J1939_SetAddressFilter(unsigned char Ps_Address)
- 五分钟学GIS | 时空数据可视化表达
- substr() 与substring() 的区别
- PowerDesigner中NAME和COMMENT的互相转换,需要执行语句
- TCP/IP四层模型中协议的格式
- [DP] BZOJ1025: [SCOI2009]游戏
- 在jsp中引入java类与引入其他jsp用法
- CSDN-markdown编辑器的使用
- Spring读取数据库里面的application.perproties格式的String