当前位置: 首页 > news >正文

南京做网站群的公司株洲在线论坛伴你生活每一天

南京做网站群的公司,株洲在线论坛伴你生活每一天,光谷做网站推广价格,在vs做的项目怎么连接到网站目录 一、概念 1、简述 2、CAN 的几种模式 二、实践 1、环回模式轮询通信 1.1 软件配置 1.2 代码编写 2、环回模式中断通信 2.1 软件配置 2.2 代码编写 一、概念 1、简述 STM32微控制器系列包含多个型号,其中一些型号集成了CAN(Controller Are…

目录

一、概念

1、简述

2、CAN 的几种模式

二、实践

1、环回模式轮询通信

1.1 软件配置

1.2 代码编写

2、环回模式中断通信

2.1 软件配置

2.2 代码编写


一、概念

1、简述

        STM32微控制器系列包含多个型号,其中一些型号集成了CAN(Controller Area Network)控制器,使其可以直接通过硬件接口实现CAN通信。CAN总线是一种多主总线,用于实时应用,例如在汽车、工业自动化和医疗设备中进行数据通信。

2、CAN 的几种模式

        CAN(Controller Area Network)通信支持几种不同的操作模式,这些模式主要设计用于系统初始化、调试、故障检测和网络管理。

1. 正常模式(Normal Mode): 这是最常见的模式,在这种模式下,CAN节点可以发送和接收数据。所有的CAN功能都是可用的,节点可以参与总线上的数据交换,包括数据帧和远程帧的发送与接收。这是CAN总线在日常操作中最常用的模式。

2. 环回模式(Loopback Mode): 在环回模式下,节点发送的数据会被立即重定向回到同一节点的接收器。这意味着节点可以发送一个数据帧,并立即在同一节点上接收该帧,而不将其发送到总线上。这种模式主要用于测试CAN硬件和软件的正确性,因为它允许开发者检查发送的数据是否与接收的数据一致,而无需其他网络节点的参与。

3. 静默模式(Silent Mode): 在静默模式下,节点可以接收数据,但是不会向总线发送任何数据。这意味着即使在检测到总线上的数据帧或远程帧时,节点也不会进行应答或发送任何数据。静默模式通常用于监控网络活动,而不干扰网络通信。例如,在进行故障诊断时,工程师可能只想观察网络上的数据流,而不是影响它们。

4.静默环回模式(Silent Loopback Mode):它结合了静默模式和环回模式的特点,即节点既不会向总线发送数据,同时也会将发送的数据在内部进行环回,用于更细致的测试和调试目的。

二、实践

1、环回模式轮询通信

1.1 软件配置

1.2 代码编写

	if(CAN_SetFilters()==HAL_OK){printf("ID Filter: Only Odd IDs \r\n");}if(HAL_CAN_Start(&hcan1)==HAL_OK){printf("CAN is start \r\n");}uint8_t msgID=1;while (1){//CAN_TestPoll(msgID++,CAN_RTR_DATA);//数据帧//printf("\r\n \r\n");HAL_Delay(2000);CAN_TestPoll(msgID++,CAN_RTR_REMOTE);//遥控帧printf("\r\n \r\n");}
HAL_StatusTypeDef CAN_SetFilters()
{CAN_FilterTypeDef canFilter;canFilter.FilterBank=0;canFilter.FilterMode=CAN_FILTERMODE_IDMASK;canFilter.FilterScale=CAN_FILTERSCALE_32BIT;canFilter.FilterIdHigh =0x0020;canFilter.FilterIdLow = 0x0000;canFilter.FilterMaskIdHigh = 0x0020;canFilter.FilterMaskIdLow = 0x0000;canFilter.FilterFIFOAssignment=CAN_FILTER_FIFO0;canFilter.FilterActivation = CAN_FILTER_ENABLE;canFilter.SlaveStartFilterBank = 14;HAL_StatusTypeDef result = HAL_CAN_ConfigFilter(&hcan1, &canFilter);return result;
}void CAN_TestPoll(uint8_t msgID, uint8_t frameType)
{uint8_t txData[8];txData[0]=msgID;txData[1]=msgID+11;CAN_TxHeaderTypeDef TxHeader;TxHeader.StdId=msgID;TxHeader.RTR=frameType;TxHeader.IDE=CAN_ID_STD;TxHeader.DLC = 2;TxHeader.TransmitGlobalTime =DISABLE;while(HAL_CAN_GetTxMailboxesFreeLevel(&hcan1)<1){}uint32_t TxMailbox;if(HAL_CAN_AddTxMessage(&hcan1, &TxHeader, txData, &TxMailbox)!=HAL_OK){printf("Send to mailbox error \r\n");return ;}//uint8_t tempStr[30];printf("Send MsgID= %d \r\n",msgID);while(HAL_CAN_GetTxMailboxesFreeLevel(&hcan1)!=3){}//轮询方式接收消息HAL_Delay(1);if(HAL_CAN_GetRxFifoFillLevel(&hcan1, CAN_RX_FIFO0)!=1){printf("Message is not received \r\n");return ;}printf("Message is received \r\n");CAN_RxHeaderTypeDef RxHeader;uint8_t RxData[8];if(HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, RxData)==HAL_OK){printf("StdID=%ld \r\n",RxHeader.StdId);printf("RTR(0=Data,2=Remote)=%ld \r\n",RxHeader.RTR);printf("IDE(0=Std,4=Ext)=%ld \r\n",RxHeader.IDE);printf("DLC(Data Length)=%ld \r\n",RxHeader.DLC);if(TxHeader.RTR == CAN_RTR_DATA){printf("Data[0] = %d \r\n",RxData[0]);printf("Data[1] = %d \r\n",RxData[1]);}}
}

2、环回模式中断通信

2.1 软件配置

2.2 代码编写

	if(CAN_SetFilters()==HAL_OK){printf("ID Filter: Only Odd IDs \r\n");}if(HAL_CAN_Start(&hcan1)==HAL_OK){printf("CAN is start \r\n");}uint8_t msgID=1;__HAL_CAN_ENABLE_IT(&hcan1,CAN_IT_RX_FIFO0_MSG_PENDING);//使能接收中断__HAL_CAN_ENABLE_IT(&hcan1,CAN_IT_RX_FIFO1_MSG_PENDING);while (1){CAN_SendMsg(msgID++,CAN_RTR_DATA);HAL_Delay(1000);printf("\r\n \r\n");}
HAL_StatusTypeDef CAN_SetFilters()
{CAN_FilterTypeDef canFilter;//设置FIFO0的筛选器canFilter.FilterBank=0;canFilter.FilterMode=CAN_FILTERMODE_IDMASK;canFilter.FilterScale=CAN_FILTERSCALE_32BIT;canFilter.FilterIdHigh =0x0020;canFilter.FilterIdLow = 0x0000;canFilter.FilterMaskIdHigh = 0x0020;canFilter.FilterMaskIdLow = 0x0000;canFilter.FilterFIFOAssignment=CAN_FILTER_FIFO0;canFilter.FilterActivation = CAN_FILTER_ENABLE;canFilter.SlaveStartFilterBank = 14;HAL_StatusTypeDef result = HAL_CAN_ConfigFilter(&hcan1, &canFilter);if(result!=HAL_OK){return result;}//设置FIFO1的筛选器canFilter.FilterBank=1;canFilter.FilterIdHigh =0x0000;canFilter.FilterIdLow = 0x0000;canFilter.FilterMaskIdHigh = 0x0000;canFilter.FilterMaskIdLow = 0x0000;canFilter.FilterFIFOAssignment=CAN_FILTER_FIFO1;result = HAL_CAN_ConfigFilter(&hcan1, &canFilter);return result;
}
void CAN_SendMsg(uint8_t msgID, uint8_t frameType)
{CAN_TxHeaderTypeDef TxHeader;TxHeader.StdId=msgID;TxHeader.RTR=frameType;TxHeader.IDE=CAN_ID_STD;TxHeader.DLC = 4;TxHeader.TransmitGlobalTime =DISABLE;uint32_t random32bit;HAL_RNG_GenerateRandomNumber(&hrng,&random32bit);uint8_t txData[8];txData[0]= random32bit & 0x000000FF;txData[1]=(random32bit & 0x0000FF00)>>8;txData[2]=(random32bit & 0x00FF0000)>>16;txData[3]=(random32bit & 0xFF000000)>>24;while(HAL_CAN_GetTxMailboxesFreeLevel(&hcan1)<1){}printf("Send MsgID = %d \r\n",msgID);uint32_t TxMailbox;if(HAL_CAN_AddTxMessage(&hcan1, &TxHeader, txData, &TxMailbox)!=HAL_OK){printf("Send to mailbox error \r\n");return ;}
}
void CAN_ReadMsg(uint32_t FIFO_num)
{CAN_RxHeaderTypeDef RxHeader;uint8_t RxData[8];if(FIFO_num == CAN_RX_FIFO0){printf("Message received by FIFO0 \r\n");if(HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, RxData)!=HAL_OK){printf("Read FIFO0 error \r\n");return ;}}else if(FIFO_num == CAN_RX_FIFO1){printf("Message received by FIFO1 \r\n");if(HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO1, &RxHeader, RxData)!=HAL_OK){printf("Read FIFO1 error \r\n");return ;}}printf("StdID=%ld \r\n",RxHeader.StdId);printf("RTR(0=Data,2=Remote)=%ld \r\n",RxHeader.RTR);printf("IDE(0=Std,4=Ext)=%ld \r\n",RxHeader.IDE);printf("DLC(Data Length)=%ld \r\n",RxHeader.DLC);printf("Data = %02X %02X %02X %02X \r\n",RxData[0],RxData[1],RxData[2],RxData[3]);
}
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
{CAN_ReadMsg(CAN_RX_FIFO0);
}void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan)
{CAN_ReadMsg(CAN_RX_FIFO1);
}

http://www.yayakq.cn/news/37519/

相关文章:

  • 网站被百度收录网站建设最新外文翻译
  • 移动互联时代网站建设广州口碑好的网站建设设计
  • 广州做网站app江西住房和城乡建设信息网站
  • 最超值的郑州网站建设建网站有什么要注意的
  • 北京网站建设中企云达vi设计的目的和意义
  • 做文学网站需要网站后台怎么用
  • 网站建设文翻译工作室女生做网站推广
  • 学校网站英文竞网网站建设
  • 好看的网站颜色搭配谷德设计网作品集
  • 礼物说网站模板深圳网站制作建设服务公司
  • dede学校网站潍坊做网页的公司
  • 平湖网站制作南京 网站制作公司
  • 怎么建网站做seo提升排名
  • 建立网站很重要的要素是什么招聘网站的建设
  • wap网站建设用什么工具专业的seo搜索引擎优化培训
  • 各省住房和城乡建设厅网站知名的集团门户网站建设企业
  • 建设网站终身免费网站推广和优化的原因网络营销
  • 网络营销推广网站收录哪些网站描述样本
  • 前端做图表的网站中小企业库
  • 青海住房与建设厅网站石家庄热点头条新闻
  • 企业网站建设备案需要哪些资料seo整站优化哪家好
  • 番禺建设网站公司wordpress 微信 支付宝
  • 轮网站开发的重要性wordpress打开速度很慢
  • 足球网站开发岳阳网站设计公司
  • 网站多个域名备案深圳整合营销
  • 深圳龙华做网站江苏建设人才官方网站
  • 无锡网站制作启航可以用手机建设网站吗
  • 做可视化图表的网站seo工具有哪些
  • wordpress 资源站模板网站开发 ppt
  • 宝安住房和建设局网站电话学校网站建设调查报告