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

公司网站无法收录手表购买网站

公司网站无法收录,手表购买网站,wordpress 相册浏览器,浙江建设网证书查询目录 序配置添加注坑参考 序 在使用 stm32mp15x 系列时#xff0c;M4 有不少的坑#xff0c;这里简单聊聊使用 canfd 时遇到的一些问题。 配置 这里使用 PLL4R 为 100M#xff0c;用于 CANFD 的时钟 canfd 速率配置成 1M #xff0c;5M#xff0c;其中数据传输速率为 5M… 目录 序配置添加注坑参考 序 在使用 stm32mp15x 系列时M4 有不少的坑这里简单聊聊使用 canfd 时遇到的一些问题。 配置 这里使用 PLL4R 为 100M用于 CANFD 的时钟 canfd 速率配置成 1M 5M其中数据传输速率为 5M。 接收采用 RxFifo0发送采用 FIFO 模式发送和接收数据长度都配置成 64字节tx、rx 深度都配置成 15。 配置 FDCAN2 中断 0 就可以。 配置生成如下 void MX_FDCAN2_Init(void) {hfdcan2.Instance FDCAN2;hfdcan2.Init.FrameFormat FDCAN_FRAME_FD_BRS;hfdcan2.Init.Mode FDCAN_MODE_NORMAL;hfdcan2.Init.AutoRetransmission ENABLE;hfdcan2.Init.TransmitPause DISABLE;hfdcan2.Init.ProtocolException DISABLE;hfdcan2.Init.NominalPrescaler 2;hfdcan2.Init.NominalSyncJumpWidth 16;hfdcan2.Init.NominalTimeSeg1 33;hfdcan2.Init.NominalTimeSeg2 16;hfdcan2.Init.DataPrescaler 1;hfdcan2.Init.DataSyncJumpWidth 4;hfdcan2.Init.DataTimeSeg1 15;hfdcan2.Init.DataTimeSeg2 4;hfdcan2.Init.MessageRAMOffset 0;hfdcan2.Init.StdFiltersNbr 1;hfdcan2.Init.ExtFiltersNbr 0;hfdcan2.Init.RxFifo0ElmtsNbr 15;hfdcan2.Init.RxFifo0ElmtSize FDCAN_DATA_BYTES_64;hfdcan2.Init.RxFifo1ElmtsNbr 0;hfdcan2.Init.RxFifo1ElmtSize FDCAN_DATA_BYTES_8;hfdcan2.Init.RxBuffersNbr 0;hfdcan2.Init.RxBufferSize FDCAN_DATA_BYTES_8;hfdcan2.Init.TxEventsNbr 0;hfdcan2.Init.TxBuffersNbr 0;hfdcan2.Init.TxFifoQueueElmtsNbr 15;hfdcan2.Init.TxFifoQueueMode FDCAN_TX_FIFO_OPERATION;hfdcan2.Init.TxElmtSize FDCAN_DATA_BYTES_64;if (HAL_FDCAN_Init(hfdcan2) ! HAL_OK){Error_Handler();}}void HAL_FDCAN_MspInit(FDCAN_HandleTypeDef* fdcanHandle) {GPIO_InitTypeDef GPIO_InitStruct {0};RCC_PeriphCLKInitTypeDef PeriphClkInit {0};if(fdcanHandle-InstanceFDCAN2){/* USER CODE BEGIN FDCAN2_MspInit 0 *//* USER CODE END FDCAN2_MspInit 0 */if(IS_ENGINEERING_BOOT_MODE()){/** Initializes the peripherals clock*/PeriphClkInit.PeriphClockSelection RCC_PERIPHCLK_FDCAN;PeriphClkInit.FdcanClockSelection RCC_FDCANCLKSOURCE_PLL4_R;if (HAL_RCCEx_PeriphCLKConfig(PeriphClkInit) ! HAL_OK){Error_Handler();}}/* FDCAN2 clock enable */__HAL_RCC_FDCAN_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();/**FDCAN2 GPIO ConfigurationPB12 ------ FDCAN2_RXPB13 ------ FDCAN2_TX*/GPIO_InitStruct.Pin GPIO_PIN_12;GPIO_InitStruct.Mode GPIO_MODE_AF;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Alternate GPIO_AF9_FDCAN2;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);GPIO_InitStruct.Pin GPIO_PIN_13;GPIO_InitStruct.Mode GPIO_MODE_AF_PP;GPIO_InitStruct.Pull GPIO_NOPULL;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_HIGH;GPIO_InitStruct.Alternate GPIO_AF9_FDCAN2;HAL_GPIO_Init(GPIOB, GPIO_InitStruct);/* FDCAN2 interrupt Init */HAL_NVIC_SetPriority(FDCAN2_IT0_IRQn, 1, 0);HAL_NVIC_EnableIRQ(FDCAN2_IT0_IRQn);/* USER CODE BEGIN FDCAN2_MspInit 1 *//* USER CODE END FDCAN2_MspInit 1 */} }void HAL_FDCAN_MspDeInit(FDCAN_HandleTypeDef* fdcanHandle) {if(fdcanHandle-InstanceFDCAN2){/* USER CODE BEGIN FDCAN2_MspDeInit 0 *//* USER CODE END FDCAN2_MspDeInit 0 *//* Peripheral clock disable */__HAL_RCC_FDCAN_CLK_DISABLE();/**FDCAN2 GPIO ConfigurationPB12 ------ FDCAN2_RXPB13 ------ FDCAN2_TX*/HAL_GPIO_DeInit(GPIOB, GPIO_PIN_12|GPIO_PIN_13);/* FDCAN2 interrupt Deinit */HAL_NVIC_DisableIRQ(FDCAN2_IT0_IRQn);/* USER CODE BEGIN FDCAN2_MspDeInit 1 *//* USER CODE END FDCAN2_MspDeInit 1 */} }添加 配置接收过滤与中断 过滤主要有 4 种 FDCAN_FILTER_RANGE、FDCAN_FILTER_MASK、FDCAN_FILTER_DUAL、FDCAN_FILTER_RANGE_NO_EIDM这里使用 FDCAN_FILTER_MASK 过滤 FDCAN_FilterTypeDef sFilterConfig;sFilterConfig.IdType FDCAN_STANDARD_ID;sFilterConfig.FilterIndex 0;sFilterConfig.FilterType FDCAN_FILTER_MASK;sFilterConfig.FilterConfig FDCAN_FILTER_TO_RXFIFO0;sFilterConfig.FilterID1 0x111;sFilterConfig.FilterID2 0x7F0; // mask 为1部分需完全匹配HAL_FDCAN_ConfigFilter(hfdcan2, sFilterConfig);HAL_FDCAN_ConfigGlobalFilter(hfdcan2,FDCAN_REJECT, DISABLE, DISABLE, DISABLE); //设置被滤除掉的消息的处理方式HAL_FDCAN_ConfigRxFifoOverwrite(hfdcan2, FDCAN_RX_FIFO0, FDCAN_RX_FIFO_BLOCKING);HAL_FDCAN_ActivateNotification(hfdcan2,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0);/* set the wartermark of Rx FIFO0 to 1 */HAL_FDCAN_ConfigFifoWatermark(hfdcan2, FDCAN_CFG_RX_FIFO0, 1); // /* Enable wartermark interrupts of Rx FIFO0 */HAL_FDCAN_ActivateNotification(hfdcan2, FDCAN_IT_RX_FIFO0_WATERMARK, 0);HAL_FDCAN_Start(hfdcan2);中断接收 中断接收采用 FDCAN_IT_RX_FIFO0_NEW_MESSAGE 接收需要同时打开 FDCAN_IT_RX_FIFO0_WATERMARK struct canfd_frame{uint16_t can_id;uint16_t dlc;uint8_t data[64]; }; void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) {if(RxFifo0ITs FDCAN_IT_RX_FIFO0_NEW_MESSAGE){struct canfd_frame* buff;HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, rxHeader, buff-data);buff-can_id rxHeader.Identifier;buff-dlc rxHeader.DataLength 16;} }发送 发送需要需要注意 BitRateSwitch 需要为 FDCAN_BRS_OFF DataLength 为高 16 位 static FDCAN_TxHeaderTypeDef txHeader {0};txHeader.IdType FDCAN_STANDARD_ID;txHeader.TxFrameType FDCAN_DATA_FRAME;txHeader.ErrorStateIndicator FDCAN_ESI_ACTIVE;txHeader.BitRateSwitch FDCAN_BRS_OFF;txHeader.FDFormat FDCAN_FD_CAN; txHeader.TxEventFifoControl FDCAN_NO_TX_EVENTS;txHeader.MessageMarker 0;txHeader.Identifier buff-can_id;txHeader.DataLength buff-dlc 16; memcpy(txData, buff-data, sizeof(txData));while (HAL_FDCAN_GetTxFifoFreeLevel(hfdcan2) 0){if(hfdcan2.Instance-TXFQS FDCAN_TXFQS_TFQF){HAL_FDCAN_DeInit(hfdcan2);MX_FDCAN2_Init();//这里重新初始化 can}}HAL_FDCAN_AddMessageToTxFifoQ(hfdcan2, txHeader, txData); 错误中断 错误中断需要开启用于错误检测与复位 can 通信在使用中存在因为 can 产生错误而后不进入中断问题此时需要在错误后复位 can让其重新配置。 可以在配置时打开这些错误中断错误状态中检测这3个 FDCAN_IR_EP 、FDCAN_IR_EW 、FDCAN_IR_BO 即可错误回调中检测 FDCAN_IR_PED其他的暂未发现问题。 HAL_FDCAN_ActivateNotification(hfdcan2, FDCAN_IT_BUS_OFF | FDCAN_IT_ERROR_WARNING |FDCAN_IT_ERROR_PASSIVE | FDCAN_IT_RESERVED_ADDRESS_ACCESS |FDCAN_IT_DATA_PROTOCOL_ERROR | FDCAN_IT_ARB_PROTOCOL_ERROR |FDCAN_IT_ERROR_LOGGING_OVERFLOW | FDCAN_IT_RAM_ACCESS_FAILURE, 0);void HAL_FDCAN_ErrorCallback(FDCAN_HandleTypeDef *hfdcan) {if(hfdcan2.ErrorCode FDCAN_IR_PED){resetCan();} }void HAL_FDCAN_ErrorStatusCallback(FDCAN_HandleTypeDef *hfdcan, uint32_t ErrorStatusITs) {if(ErrorStatusITs (FDCAN_IR_EP | FDCAN_IR_EW | FDCAN_IR_BO)){resetCan();} }注 stm32mp15x 的 DLC 和其他的 st 芯片不一样在高 16位使用时注意左右移。 #define FDCAN_DLC_BYTES_0 ((uint32_t)0x00000000U) /*! 0 bytes data field */ #define FDCAN_DLC_BYTES_1 ((uint32_t)0x00010000U) /*! 1 bytes data field */ #define FDCAN_DLC_BYTES_2 ((uint32_t)0x00020000U) /*! 2 bytes data field */ #define FDCAN_DLC_BYTES_3 ((uint32_t)0x00030000U) /*! 3 bytes data field */ #define FDCAN_DLC_BYTES_4 ((uint32_t)0x00040000U) /*! 4 bytes data field */ #define FDCAN_DLC_BYTES_5 ((uint32_t)0x00050000U) /*! 5 bytes data field */ #define FDCAN_DLC_BYTES_6 ((uint32_t)0x00060000U) /*! 6 bytes data field */ #define FDCAN_DLC_BYTES_7 ((uint32_t)0x00070000U) /*! 7 bytes data field */ #define FDCAN_DLC_BYTES_8 ((uint32_t)0x00080000U) /*! 8 bytes data field */ #define FDCAN_DLC_BYTES_12 ((uint32_t)0x00090000U) /*! 12 bytes data field */ #define FDCAN_DLC_BYTES_16 ((uint32_t)0x000A0000U) /*! 16 bytes data field */ #define FDCAN_DLC_BYTES_20 ((uint32_t)0x000B0000U) /*! 20 bytes data field */ #define FDCAN_DLC_BYTES_24 ((uint32_t)0x000C0000U) /*! 24 bytes data field */ #define FDCAN_DLC_BYTES_32 ((uint32_t)0x000D0000U) /*! 32 bytes data field */ #define FDCAN_DLC_BYTES_48 ((uint32_t)0x000E0000U) /*! 48 bytes data field */ #define FDCAN_DLC_BYTES_64 ((uint32_t)0x000F0000U) /*! 64 bytes data field */短路 can 芯片的 H 和 L 两个差分脚会触发FDCAN_TXFQS_TFQF此时会无法正常发送需要重新初始化 canfd 坑 在 linux 下用时需要手动打开 PLL4R __HAL_RCC_PLL4CLKOUT_ENABLE(RCC_PLL4_DIVR);发送时BitRateSwitch 需要配置成 FDCAN_BRS_OFF不然无法发送 txHeader.BitRateSwitch FDCAN_BRS_OFF;使用 FDCAN_IT_RX_FIFO0_NEW_MESSAGE 中断时需要将 FDCAN_IT_RX_FIFO0_WATERMARK 中断也打开不然只能中断一次在线调试时需要在板子中运行没有中断的程序然后再使用调试器下载有中断的程序不然程序调试有问题且只能调试一次需要重新上下电才能正常就是说产生中断后程序就不能进行中断调试了 参考 https://github.com/STMicroelectronics/STM32CubeH7/blob/master/Projects/STM32H743I-EVAL/Examples/FDCAN/FDCAN_Com_IT/Src/main.c https://github.com/STMicroelectronics/STM32CubeMP1/blob/master/Projects/STM32MP157C-EV1/Examples/FDCAN/FDCAN_Loopback/Src/main.c https://club.rt-thread.org/ask/article/f354701c18db97db.html
http://www.hkea.cn/news/14268165/

相关文章:

  • 建设银行河南分行网站模板建站和定制建站
  • readme.md做网站郑州城乡建设局官网
  • 域名网站备案管理系统wordpress 未分类
  • 网站建设域名怎么选择海飞丝网站建设中面临的技术问题_并提出可行的技术解决方案
  • 重庆深蓝科技网站开发win2008r2搭建php网站
  • 旅游网站设计论文摘要企业的oa管理系统
  • 企业做网站被骗楼盘价格哪个网站做的好
  • 网站建设客户定位门户类网站如何做策划
  • 小米官方网站开发版在哪里seo小白入门教学
  • 宁德网站建设制作wordpress关注公众号可见
  • 做自媒体需要关注什么网站青海制作网站
  • 想在百度做网站自己的品牌怎么做加盟推广
  • 邯郸市教育公共服务平台贵州灵溪seo整站优化
  • 紫川网站建设请列举常见的网站推广方法
  • 领诺科技网站建设wordpress数据库迁移
  • 微信怎么建设自己网站网站效果图模板
  • 潍坊模板开发建站游戏软件开发流程
  • 零基础建设网站视频福建省住房与城乡建设厅网站
  • 2017 上海网站备案长安网站建设制作公司
  • 做网站需要的设备宁波论坛招聘
  • 沧州网站建设刘磊wordpress无法显示文章
  • 石家庄视频网站建设公司wordpress好看博客主题
  • 中小企业建站系统江西南昌网站建设哪家公司好
  • 金坛网站建设价格东莞保安公司电话
  • 《网站开发与应用福州福清网站建设
  • 做网站用vue还是用jquery网站建站费用多少
  • 建自己的网站做外贸海口商城网站建设
  • 搭配服装网站源码网站建设咨询有客诚信
  • 企业网站建设实训心得建站中心
  • 档案网站建设网页如何建立公司网站建设