- 1、本文档共83页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
飞思卡尔控制器与MSCAN_精简版
标识符寄存器 扩展标识符(29位) ? IDE = 1 SRR = 1 ? 最小的二进制值代表的标识符的优先级最高。 ? 逻辑“0”作为显性位发送。 ? 7个最高有效位( ID28 – ID22 )不能全部为“1”(隐性)。 数据寄存器 本地优先级 CAN接收过滤器 ?标识符接收寄存器(CANIDAR0-7)定义标准或扩展标识符的接收模式。 ?在标识符掩码寄存器(CANIDMR0-7)中,标识符接收位可标为“don’t care(不需留意)” 。 ?接收掩码寄存器中设置的任何位表示不需和消息标识符进行比较来确定是否接收。 ?只有接收寄存器中没有标记的位才和消息标识符进行比较以确定是否接收。 ?各个接收过滤器寄存器可以配置为8、16或32位: ? 2个32位过滤器 ? 4个16位过滤器 ? 8个8位过滤器 标识符接收控制寄存器 ?接收控制寄存器CANIDAC中的一个接收缓冲器满标记( RXF=1)和3个标识符击中标记(IDHT标识符有效)向应用软件通知过滤命中。 接收寄存器:2x32位过滤器 接收寄存器:4x16位过滤器 接收寄存器:8x8位过滤器 过滤器举例 CAN应用举例 MSCAN驱动配置 ?CANdrv.H包含CAN通用配置及驱动使用的部分常量的定义: ? CAN_CLK,用于选择MSCAN模块时钟源 ? TIME_SEGM1,TIME_SEGM2,时间段长度 ? CAN_PRESC,用于设置CAN波特率 ? CAN_SYNJW,同步跳转宽度 CAN应用举例 ?驱动器业务: ?void CAN_Init( rmode ) 初始化MSCAN驱动, 其中rmode说明系统是否复位 ? CAN_ConfigMB(buffer, cmode, identifierRef) 配置消息缓冲器 buffer说明缓冲器的选择,cmode说明缓冲器是接收还是发送,identifierRef配置标识符 ? CAN_LoadMB (buffer, dataptr) 将数据载入相应的缓冲器 buffer说明缓冲器的选择,dataptr说明载入缓冲器数据的地址 ? CAN_TransmitMB(buffer) 发送数据 buffer说明缓冲器的选择 CAN_ReadDataMB(buffer, dataptr) 读消息缓冲器中的数据 buffer说明缓冲器的选择,dataptr说明缓冲器数据的地址 CAN应用实例 void main( void ) { UINT8 data[9]; UINT8 cnt = 10; /**System initializtion*/ MCG_Init(); DZ60_GPIO_Init(); //IO口初始化,LED初始化 /* Enable interrupt */ EnableInterrupts; /* init msCAN driver */ (void)CAN_Init (FAST);//MSCAN 初始化 /* Schedule Loop */ while( 1 ) { data[0] = 0x05; data[2] = cnt; cnt += 5; if(cnt 50) cnt = 10; //上述为往数据域中填写数据 CAN应用实例 (void)CAN_ConfigMB (0, TXDF, MSCAN_SENSOR);/* 配置发送缓冲区,配置标识符 */0号缓冲区,发送,标识符为MSCAN_SENSOR /* 将数据装载到上述配置的发送缓冲区 */ if(CAN_LoadMB(0, data) == ERR_OK) { /* 发送缓冲区内消息发送 */ CAN_TransmitMB(0); LED_Trigger (1); //LED1等闪烁 } LED_Trigger(0); //LED0等闪烁 Cpu_Delay100US( 2000); } } /* main */ CAN的应用实例 CAN通信编程流程 MC9S08DZ60 ---LIN实现实例 主要函数功能说明 1)LIN_Init函数 函数名称:LIN_Init 主要功能:初始化LIN驱动器(包括软件和硬件) 使用格式:CAN_Init(void) 参数说明:无 返回值:无 2)LIN_PutMsg函数 函数名称:LIN_PutMsg 主要功能:将消息存放在LIN消息缓
文档评论(0)