ST意法半导体
直播中

张勇

7年用户 1463经验值
私信 关注
[问答]

STM32H HAL v1.8.0为给定数据包启用CANFD传输请求可能会禁用先前已排队请求的TX如何解决?

STM32h7xx_hal_fdcan.c 中写入hfdcan->Instance->TXBAR的 2 个实例(作为激活给定 CANFD 数据包的 TX 请求的手段)使用对寄存器的直接赋值:
hfdcan->Instance->TXBAR = BufferIndex;
hfdcan->Instance->TXBAR = ((uint32_t)1 << Putindex);
根据我目前对参考手册(RM0433 Rev 7)的理解,这些不应该是“ |= ”吗?实际上,它们将覆盖为 0 个不相关的位,因此不会保留先前排队但尚未发送的数据包的 TX 请求……或者我是否错过了有关 TXBAR 应该如何工作的内容?







回帖(1)

张涛

2023-1-17 10:54:45
检查规范后,这似乎不是您描述的错误。
事实上,当我们写入 FDCAN_TXBAR 并添加一个新请求时,该请求将处于挂起状态,我们可以在 FDCAN_TXBRP 寄存器中验证这一点。
在传输完成或 FDCAN_TXBCR 寄存器中的请求取消之前,请求仍处于待处理状态。
因此,即使我们在 FDCAN_TXBAR 寄存器中请求的相应位置写入 0,请求仍然处于待处理状态并且没有丢失它的风险。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分