CH32V203C8T6 CAN通讯 配置多个Filter时失效,

我在测试CH32V203C8T6 CAN通讯设置了多个Filter,但是不起作用,Filter之外的ID仍然能通过,我测了一下单个Filter是好的,都能过滤,于是我把官方的例程下下来稍微改了一下,设置多个Filter测试也是失效的,当我改回单个Filter时又一切正常,能帮我看看这是啥问题吗?附件为测试代码

1656739863729453.png

这个是单个Filter正常的

1656739870801910.png

这是多个Filter,就不正常了,都能通过

icon_rar.gifTest.zip


您好,配置使用多个过滤器组时需要注意过滤器组的筛选器尺度要配置一致,比如都配置为16位或都配置为32位。


没有这样玩的,按理每个筛选器都是相互独立,互不影响的,况且数据手册也是允许不同尺度的筛选器的

屏幕截图 2022-07-02 212458.png

而其还有个问题是我实际项目中用的是同一尺度的筛选器,而且还都是掩码模式,还都是标准ID,实际项目中也出现了单个筛选器是正常的,多个筛选器就失效,测试程序是我在官方的样例程序改过来的,没有考虑这么多,但是你既然提出了这个可能性,我会在周一再做一下测试,感谢你的回复


我将测试工程的第二个过滤器改成和第一个一样,还是不行

QQ截图20220704081710.png


我把初始化过滤器的函数置位初始化模式指令写到外面,把初始化过滤器的切换模式注释掉

1656897019364789.png

1656897019361536.png

初始化过滤器函数

QQ截图20220704090935.png

这样我在初始化模式中配置两个过滤器,也是单个过滤器可以,我配置第二个就会失效

icon_rar.gifTest.zip



自顶一下


您好,关于过滤器配置问题,确实可以配置成32位或16位,没必要一致,前面是我的理解错误,不好意思。关于配置两个过滤器组无法过滤问题,我这边也正在帮你看,你可以加我微信(18951773510),方便沟通。


您好,你的问题已找到原因,按照下图将那行代码注释掉即可,你可以试一下。

image.png


谢谢!我之前也是想问这个的,这个地址手册里也没找到在哪里,不知道为什么要将0x40006200开始的一页数据搬运到0x40006300开始的一页数据区去


您好,CH32由于设计差异,此处对过滤器表做了软件处理。


后续会出相应寄存器的说明吗?看不懂的话总有点不放心


您好,0x40006000为SRAM地址,如下图。该区域为USBD和CAN共享的一个专用的512字节SRAM。

image.png


你好,我用的是V307,can2,两组滤波,第二组滤波也有问题。


您好,可以将你的问题具体描述一下发送至我的邮箱(lzs@wch.cn),这边根据你的问题描述帮你分析一下或提供你一个参考例程。


垃圾芯片,果断放弃用华大


您好,若你在使用过程中遇到什么问题,可直接加我微信(18951773510)或将问题发至我的邮箱(lzs@wch.cn),这边会积极协助你解决问题。


只有登录才能回复,可以选择微信账号登录