版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务5.4设计汽车发动机温度监测功能任务描述CAN通信本任务要求实现车内温度、湿度监测功能,用户可在中控台上查看汽车发动机的实时温湿度情况。。任务描述任务要求任务5.4设计汽车内温湿度监测功能发动机温湿度采集节点与中控台之间通过CAN总线进行连接。温度、湿度采集节点每隔3s采集一次车内温湿度,按约定的协议发送至中控台。中控台收到温湿度采集节点的数据后将其显示出来。任务目标CAN通信职业能力目标(1)了解CAN总线相关的基础知识;(2)掌握CAN控制器的工作原理;(3)掌握CAN收发器芯片的功能及典型应用电路的工作原理;(4)掌握数字式温度传感器的特性及其与微控制器接口的工作原理。(1)能根据项目需求自行制定通信协议;(2)会根据应用的需求配置与驱动Cortex-M3微控制器自带的CAN控制器;(3)会搭建基于CAN总线的通信网络并编程实现组网通信;(4)会设计Cortex-M3微控制器与温度传感器的接口(ADC)程序并与物联网组网程序进行集成应用;(5)能进行CAN通信的数据抓包、分析与故障排除。任务目标技能目标任务描述CAN通信任务5.4设计汽车内温湿度监测功能在任务1基础上,给从机(STM32F103)安装温湿度传感器DHT11,从机通过DHT11测得车内的温湿度值,通过CAN发送到主节点(STM32F407),主节点通过CAN接收到从机发来的温湿度值进行显示。任务描述本任务要求为汽车传感系统设计发动机温度监测功能,用户可在中控台上查看汽车发动机的实时温度情况。发动机冷却系统任务要求CAN通信任务5.4设计汽车内温湿度监测功能任务要求12发动机温度采集节点与中控台之间通过CAN总线进行连接;温度采集节点每隔3秒采集一次发送机温度,按约定的协议发送至中控台;3中控台收到温度采集节点的数据后将其显示出来。任务分析CAN通信任务5.4设计汽车内温湿度监测功能温度传感器查阅Internet资料说一说:真实的发动机温度监测需要哪些部件,其工作原理如何?任务分析CAN通信任务5.4设计汽车内温湿度监测功能任务计划表项目名称项目五汽车传感系统任务名称5.4任务
设计汽车发动机温度监测功能计划方式自主设计计划要求请用8个计划步骤来完整描述出如何完成本次任务序号任务计划1
2
3
4
5
6
7
8
通过对汽车发动机冷却系统的学习,说一说:1.要完成本任务要求,我们需要使用哪些硬件?2.系统的大体运行流程如何?任务分析CAN通信CAN通信帧类型错误帧0102数据帧帧间隔03过载帧0102030405遥控帧任务分析CAN通信CAN通信帧类型 CAN总线以“帧”形式进行通信。CAN协议定义了5种类型的帧:数据帧、遥控帧、错误帧、过载帧、间隔帧,其中数据帧最为常用。帧类型帧作用数据帧(DataFrame)用于发送单元向接收单元传输数据的帧遥控帧(RemoteFrame)用于接收单元向具有相同ID的发送单元请求数据的帧错误帧(ErrorFrame)用于当检测出错误时向其他单元通知错误的帧过载帧(OverloadFrame)用于接收单元通知其尚未做好接收准备的帧间隔帧(InterFrameSpace)用于将数据帧及遥控帧与前面的帧分离开来的帧重点常用任务分析CAN通信数据帧数据帧由7段组成。数据帧又分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段。标准数据帧扩展数据帧帧起始:表示数据帧开始的段,显性信号仲裁段:表示该帧优先级的段,优先级控制段:表示数据的字节数及保留位的段数据段:数据的内容,一帧可发送0~8字节数据CRC段:检查帧的传输错误的段ACK段:表示确认正常接收的段帧结束:表示数据帧结束的段,7个隐性信号标识符位远程发送请求位0数据帧1遥控帧扩展标识符位数据长度编码位循环校验序列界定符确认位用在扩展格式,替代RTR任务分析CAN通信遥控帧用于接收单元向具有相同ID的发送单元请求数据的帧。任务分析CAN通信错误帧、过载帧4.错误帧5.过载帧用于当检测出错误时向其他单元通知错误的帧用于接收单元通知其尚未做好接收准备的帧任务分析CAN通信间隔帧用于将数据帧及遥控帧与前面的帧分离开来的帧任务分析CAN通信CAN收发数据主要函数解析1.CAN发送数据函数2.CAN接收数据中断回调函数请参考书中示例代码进行理解任务分析CAN通信根据任务要求制定CAN通信协议内容包头长度主指令副指令1副指令2校验位包尾英文缩写HEADLENmCMDsCMD1sCMD2CHKSUMTAIL示例0x550x070x010x1C0x320x090xDD自定义CAN通信协议包头固定值:0x55长度指示本帧数据的长度,单位:字节主指令指示数据类型,0x01为温度值副指令1温度值整数部分副指令2温度值小数部分校验位和校验,CheckSum包尾固定值:0xDD任务实施CAN通信设备清单表任务实施前必须先准备好以下设备和资源。序号设备/资源名称数量是否准备到位(√)1STM32F407核心板1
2STM32F103核心板1
3ST-Link仿真器1
4USB转RS-232线缆2
5各色香蕉线若干
6USB-CAN调试器1
7DHT11及CAN通信代码包1套
任务实施CAN通信任务实施导航&实施纪要修改任务1的STM32CubeMX工程配置添加代码包编写代码编译下载程序搭建硬件环境结果验证实施纪要表项目名称项目五
汽车传感系统任务名称5.4任务2设计汽车发动机温度监测功能序号分步纪要1
2
3
4
5
6
7
8
修改工程配置添加代码包编写代码编译下载程序搭建硬件环境结果验证任务实施CAN通信修改任务1的STM32CubeMX工程配置(1)复制任务1的工程并更名设计主节点程序①复制任务1主节点工程并更名复制任务1整个工程文件,并更名为“Task2_CAN_temphi”。
用KeilMDK打开main.c主文件,输入如程序清单5-11所示的代码。/*Privatevariables--------------------------------------------------------*//*USERCODEBEGINPV*/#defineAPP_PAYLOAD_LENGTH7//数据载荷长度#defineHEAD0x55//包头#defineTAIL0xDD//包尾#defineMCMD_TEMPERATURE0x01//温度主指令uint8_tmasterCMD,slaveCMD1,slaveCMD2;//主指令和副指令chartArray[5]={0};//存放字符串型温度值uint8_ttemperature;uint8_thumidity;/*USERCODEENDPV*/任务实施CAN通信主节点程序设计/*USERCODEBEGINPFP*/int8_trcvdata_process(uint8_t*rxbuf,uint8_t*mCMD,uint8_t*sCMD1,uint8_t*sCMD2);/*USERCODEENDPFP*//*Privateusercode--------------------------------------------------------*//*USERCODEBEGIN0*/int8_trcvdata_process(uint8_t*rxbuf,uint8_t*mCMD,uint8_t*sCMD1,uint8_t*sCMD2){uint8_tchecksum=0x00;
/*判断包头包尾*/
if((rxbuf[0]!=HEAD)||(rxbuf[6]!=TAIL))
return-1;
/*判断checksum*/checksum=(rxbuf[1]+rxbuf[2]+rxbuf[3]+rxbuf[4])%256;
if(rxbuf[5]!=checksum)
return-1;*mCMD=rxbuf[2];*sCMD1=rxbuf[3];*sCMD2=rxbuf[4];
return0;}/*USERCODEEND0*/任务实施CAN通信主节点程序设计intmain(void){
/*USERCODEBEGIN1*/
/*USERCODEEND1*/
/*MCUConfiguration-------------------------------------*/
/*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();
/*USERCODEBEGINInit*/
/*USERCODEENDInit*/
/*Configurethesystemclock*/SystemClock_Config();
/*USERCODEBEGINSysInit*/
/*USERCODEENDSysInit*/
/*Initializeallconfiguredperipherals*/MX_GPIO_Init();MX_CAN1_Init();MX_USART1_UART_Init();
/*USERCODEBEGIN2*/ CAN_User_Config(&hcan1);//配置CAN通信参数并启动CAN控制器 printf("Can_testMaster\r\n");
/*USERCODEEND2*/
/*Infiniteloop*/
/*USERCODEBEGINWHILE*/
while(1){
/*USERCODEENDWHILE*/
/*USERCODEBEGIN3*/
if(rx_done_flag) { rx_done_flag=0;
if(rcvdata_process(can_rx_data,&masterCMD,&slaveCMD1,&slaveCMD2)<0){printf("接收数据校验错误.\n");}
else
if(masterCMD==MCMD_TEMPERATURE)//如果收到了温度数据{printf("当前温度:%02dC°\r\n",slaveCMD1); printf("当前湿度:%02d%%RH.\r\n",slaveCMD2);}masterCMD=slaveCMD1=slaveCMD2=0x00;memset(can_rx_data,0,8); }
/*USERCODEEND3*/}}任务实施CAN通信主节点程序设计打开main.h,删除/*USERCODEBEGINEM*/和/*USERCODEENDEM*/之间任务1中定义的宏语句。编译程序,下载此程序到主节点STM32F407核心板。从节点应用程序复制DHT11所需驱动代码的文件夹“dht11”及“delay”到与“MDK-ARM”同级的目录下,用KeilMDK打开从节点工程文件,在工程中新建“dht11”组和“delay”组,并将“dht11.c”和“delay.c”文件加入对应组中。设置编译器路径,将“dht11”及“delay”文件夹加入头文件“IncludePaths”(包含路径)中,按如图5-42所示配置。任务实施CAN通信从节点程序设计在main.c文件相应位置输入如程序清单5-12所示代码。/*USERCODEBEGINIncludes*/#include
"delay.h"#include
"dht11.h"#include
"user_can.h"#include
"string.h"/*USERCODEENDIncludes*//*USERCODEBEGINPV*/#defineAPP_PAYLOAD_LENGTH7//数据载荷长度#defineHEAD0x55//包头#defineTAIL0xDD//包尾#defineMCMD_TEMPERATURE0x01//温度主指令staticuint8_tpTxData[8];//发送缓存//staticuint8_tpRxData[8];//接收缓存uint8_tmasterCMD,slaveCMD1,slaveCMD2;//主指令和副指令uint8_tadc_eoc_flag;//ADC转换结束标志位uint8_ttemperature;uint8_thumidity;/*USERCODEENDPV*//*USERCODEBEGINPFP*/voidbuild_payload(uint8_tmCMD,uint8_tsCMD1,uint8_tsCMD2);voidget_temp_task(void);/*USERCODEENDPFP*//*Privateusercode--------------------------------------------------------*//*USERCODEBEGIN0*/voidget_temp_task(void){
staticuint32_tlast_time;
/*CAN从节点每隔3秒发送一次湿度值请求*/
if((uint32_t)HAL_GetTick()-last_time>=3000){last_time=HAL_GetTick();
/*启动ADC*/ DHT11_Read_Data(&temperature,&humidity); printf("temperatureis%dC'\r\n",temperature); printf("humidityis%d%%RH\r\n",humidity);
build_payload(MCMD_TEMPERATURE,temperature,humidity);//组建要发送的数据
/*通过CAN总线发送数据*/Can_Send_Msg(0x12,(uint8_t*)pTxData,strlen((const
char*)pTxData));}}/***@brief组建要发送的数据*@parammCMD主指令|sCMD1副指令1|sCMD2副指令2*@retvalNone*/voidbuild_payload(uint8_tmCMD,uint8_tsCMD1,uint8_tsCMD2){pTxData[0]=HEAD;pTxData[1]=APP_PAYLOAD_LENGTH;pTxData[2]=mCMD;pTxData[3]=sCMD1;pTxData[4]=sCMD2;pTxData[5]=(pTxData[1]+pTxData[2]+pTxData[3]+pTxData[4])%256;pTxData[6]=TAIL;pTxData[7]=0;}/*USERCODEEND0*/任务实施CAN通信从节点程序设计intmain(void){
/*USERCODEBEGIN1*/
/*USERCODEEND1*/
/*MCUConfiguration-------------------------------------------------------*/
/*Resetofallperipherals,InitializestheFlashinterfaceandtheSystick.*/HAL_Init();
/*USERCODEBEGINInit*/
/*USERCODEENDInit*/
/*Configurethesystemclock*/SystemClock_Config();
/*USERCODEBEGINSysInit*/
/*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第1课时 加法交换律和结合律
- 2026年秋季学期冀人版五年级科学上册教学计划
- 食品防护知识试题及答案
- 2026年一建市政实务核心考题试卷及答案
- 2026年一建民航实务入门基础试卷及答案
- 2026年一建矿业实务高频错题重组试卷及答案
- 2026年一建经济考前错题专项突破试卷及答案
- 2026非遗美食面试题及答案
- 2026高职酿酒专业面试题目及答案
- 2026关于走访的面试题及答案
- 《从活动走向课程》课件
- 四等水准测量自动生成表格
- 9 日月明公开课一等奖市优质课赛课获奖课件
- DiGiCo-SD-系列软件说明书
- GB/T 4798.4-2023环境条件分类环境参数组分类及其严酷程度分级第4部分:无气候防护场所固定使用
- 光大绿色环保固废处置(晋中)有限公司新建灵石危废综合处置中心项目环评报告
- (完整)《气象学与气候学》期末考试A卷及答案
- 2023年中国融通医疗健康集团有限公司招聘笔试题库及答案解析
- YY 0053-2016血液透析及相关治疗血液透析器、血液透析滤过器、血液滤过器和血液浓缩器
- 计算机应用基础考试题库含答案
- 《煤矿开采学》课件
评论
0/150
提交评论