完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
FDCAN初始化:
HAL_RCC_FDCAN_CLK_ENABLE(); //使能 FDCAN 时钟HAL_RCC_GPIOB_CLK_ENABLE(); //开启 GPIOB 时钟 //FDCAN1 时钟源配置为 PLL1Q FDCAN1_PeriphClk.PeriphClockSelection = RCC_PERIPHCLK_FDCAN; FDCAN1_PeriphClk.FdcanClockSelection = RCC_FDCANCLKSOURCE_PLL; HAL_RCCEx_PeriphCLKConfig( amp;FDCAN1_PeriphClk); GPIO_Initure.Pin = GPIO_PIN_8|GPIO_PIN_9; //PB8,9 GPIO_Initure.Mode = GPIO_MODE_AF_PP; //推挽复用 GPIO_Initure.Pull = GPIO_PULLUP; //上拉 GPIO_Initure.Speed = GPIO_SPEED_FREQ_HIGH; //高速 GPIO_Initure.Alternate = GPIO_AF9_FDCAN1; //复用为 CAN1 HAL_GPIO_Init(GPIOB, amp;GPIO_Initure); //初始化 HAL_FDCAN_DeInit( amp;FDCAN1_Handler); //先清除以前的设置 FDCAN1_Handler.Instance = FDCAN1; FDCAN1_Handler.Init.FrameFormat = FDCAN_FRAME_CLASSIC; //传统模式 FDCAN1_Handler.Init.Mode = FDCAN_MODE_NORMAL; //正常模式 FDCAN1_Handler.Init.AutoRetransmission = DISABLE; //关闭自动重传! FDCAN1_Handler.Init.TransmitPause = DISABLE; //关闭传输暂停 FDCAN1_Handler.Init.ProtocolException = DISABLE; //关闭协议异常处理 FDCAN1_Handler.Init.NominalPrescaler = FDCAN_CLOCK_DIV1; //分频系数 if(1000 == rate)//1M波特率 { FDCAN1_Handler.Init.NominalSyncJumpWidth= 0x08; //重新同步跳跃宽度 FDCAN1_Handler.Init.NominalTimeSeg1 = 0x1f; //tsg1 范围:2~256 FDCAN1_Handler.Init.NominalTimeSeg2 = 0x08; //tsg2 范围:2~128 }// FDCAN1_Handler.Init.DataPrescaler = 0x1;// FDCAN1_Handler.Init.DataSyncJumpWidth = 0x4;// FDCAN1_Handler.Init.DataTimeSeg1 = 0x5; / DataTimeSeg1 = Propagation_segment + Phase_segment_1 /// FDCAN1_Handler.Init.DataTimeSeg2 = 0x4; FDCAN1_Handler.Init.MessageRAMOffset = 0; //信息 RAM 偏移 FDCAN1_Handler.Init.StdFiltersNbr = 1; //标准信息 ID 滤波器编号 FDCAN1_Handler.Init.ExtFiltersNbr = 0; //扩展信息 ID 滤波器编号 FDCAN1_Handler.Init.RxFifo0ElmtsNbr = 1; //接收 FIFO0 元素编号 FDCAN1_Handler.Init.RxFifo0ElmtSize = FDCAN_DATA_BYTES_8; //接收 FIFO0 8 字节 FDCAN1_Handler.Init.RxBuffersNbr = 0; //接收缓冲编号 FDCAN1_Handler.Init.TxEventsNbr = 0; //发送事件编号 FDCAN1_Handler.Init.TxBuffersNbr = 1; //发送缓冲编号 FDCAN1_Handler.Init.TxFifoQueueElmtsNbr = 0; //发送 FIFO 序列元素编号 FDCAN1_Handler.Init.TxFifoQueueMode = FDCAN_TX_FIFO_OPERATION; FDCAN1_Handler.Init.TxElmtSize = FDCAN_DATA_BYTES_8; //发送大小:8 字节 if(HAL_FDCAN_Init( amp;FDCAN1_Handler) != HAL_OK) //初始化 FDCAN { while(1); } //设置滤波器 FDCAN1_RXFilter.IdType = FDCAN_EXTENDED_ID; //扩展 ID FDCAN1_RXFilter.FilterIndex = 0; //滤波器索引 FDCAN1_RXFilter.FilterType = FDCAN_FILTER_MASK; //滤波器类型 FDCAN1_RXFilter.FilterConfig= FDCAN_FILTER_TO_RXFIFO0; //过滤器 0 关联到 FIFO0 FDCAN1_RXFilter.FilterID1 = 0x0000; //32 位 ID FDCAN1_RXFilter.FilterID2 = 0x0000; //传统模式的话,这里是 32 位掩码 HAL_FDCAN_ConfigFilter( amp;FDCAN1_Handler, amp;FDCAN1_RXFilter); //滤波器初始化 //HAL_FDCAN_ActivateNotification( amp;FDCAN1_Handler,FDCAN_IT_RX_FIFO0_NEW_MESSAGE,0); HAL_FDCAN_Start( amp;FDCAN1_Handler); //开启 FDCAN // HAL_NVIC_SetPriority(FDCAN1_IT0_IRQn,1,2);// HAL_NVIC_EnableIRQ(FDCAN1_IT0_IRQn); 发送函数: FDCAN_TxHeader.Identifier = msg->ID; //32 位 IDFDCAN_TxHeader.IdType = FDCAN_EXTENDED_ID; //扩展 IDFDCAN_TxHeader.TxFrameType = FDCAN_DATA_FRAME; //数据帧FDCAN_TxHeader.DataLength = FDCAN_DLC_BYTES_8; //数据长度FDCAN_TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;FDCAN_TxHeader.BitRateSwitch = FDCAN_BRS_OFF; //关闭速率切换FDCAN_TxHeader.FDFormat = FDCAN_CLASSIC_CAN; //传统的 CAN 模式FDCAN_TxHeader.TxEventFifoControl = FDCAN_NO_TX_EVENTS; //无发送事件FDCAN_TxHeader.MessageMarker = 0; HAL_FDCAN_AddMessageToTxBuffer( FDCAN1_Handler, FDCAN_TxHeader, TxData, FDCAN_TX_BUFFER0); / Send calibration confirmation message /HAL_FDCAN_EnableTxBufferRequest( FDCAN1_Handler, FDCAN_TX_BUFFER0); |
|
相关推荐
1个回答
|
|
STM32H753 FDCAN发送数据异常可能由多种原因引起。以下是一些可能的原因:
为了解决这个问题,你可以采取以下步骤:
如果以上步骤都无法解决问题,可能需要进一步使用调试工具对STM32H753的FDCAN模块进行深入分析,以找到具体的异常原因。
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
767 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
489 浏览 1 评论
329 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
271 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
648 浏览 2 评论
1406浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
61浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
109浏览 3评论
95浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
77浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-5-16 22:30 , Processed in 1.043163 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号