硬汉嵌入式论坛

 找回密码
 立即注册
查看: 431|回复: 6
收起左侧

[CAN/FDCAN] STM32H7 取消发送清空FIFO队列问题

[复制链接]

4

主题

21

回帖

33

积分

新手上路

积分
33
发表于 2023-8-22 09:36:36 | 显示全部楼层 |阅读模式
STM32H7系列配置发送FIFO后,怎么清空FIFO队列停止后续报文发送(如果发送FIFO里面有数据),是直接清空发送RAM区域吗,没有找到相关资料!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2023-8-22 10:24:11 | 显示全部楼层
楼主说的是硬件FIFO,还是自己开的软件FIFO空间。
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2023-8-22 10:44:20 | 显示全部楼层
eric2013 发表于 2023-8-22 10:24
楼主说的是硬件FIFO,还是自己开的软件FIFO空间。

硬件FIFO
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2023-8-22 10:48:59 | 显示全部楼层
HAL_FDCAN_AbortTxRequest(fdcan1,0xFFFFFFFF) 这个是不是可以。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2023-8-22 11:12:45 | 显示全部楼层
siasevan 发表于 2023-8-22 10:48
HAL_FDCAN_AbortTxRequest(fdcan1,0xFFFFFFFF) 这个是不是可以。

不行,这个控制的是TXbuffer

如果你一次性填充的FIFO数据比较少,还有个更简单的,CANFD的TX FIFO发送每次中断后,下次触发使用需要继续激活HAL_FDCAN_ActivateNotification,不再激活即可。

也可以直接调用HAL_FDCAN_DeactivateNotification试试
回复

使用道具 举报

4

主题

21

回帖

33

积分

新手上路

积分
33
 楼主| 发表于 2023-8-22 11:27:20 | 显示全部楼层
eric2013 发表于 2023-8-22 11:12
不行,这个控制的是TXbuffer

如果你一次性填充的FIFO数据比较少,还有个更简单的,CANFD的TX FIFO发送 ...

试过了,好像不行,现在问题是,开自动重发功能,一旦CAN发错报文(正常不会有相同ID,就是故意发送错误)有相同ID发送会导致发送FIFO满,如果FIFO中数据不清空,会导致总线一直在发送数据,瞬间将总线负载拉满,需要清空所有发送FIFO,否则会一直发送,直至发送成功,会导致相同ID报文正常设备有问题,目前没有找到好用的方法,datasheet里面也没有找到相关说明。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2023-8-22 11:51:38 | 显示全部楼层
siasevan 发表于 2023-8-22 11:27
试过了,好像不行,现在问题是,开自动重发功能,一旦CAN发错报文(正常不会有相同ID,就是故意发送错误 ...

直接FIFO大小设置为1个消息,满足你的应用需求不。

不行的话,手动配置FIFO的读写位置相同,设置消息个数为0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 06:42 , Processed in 0.280550 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表