CAN设置过滤器CH32V203

你好,我只要接收id为0x246的8个字节,

设置过滤器:

    CAN_FilterInitSturcture.CAN_FilterMode = CAN_FilterMode_IdMask;//CAN_FilterMode_IdList;//;

    CAN_FilterInitSturcture.CAN_FilterScale = CAN_FilterScale_32bit;//CAN_FilterScale_16bit;

    CAN_FilterInitSturcture.CAN_FilterIdHigh = 0x48c0;//IDH;//0x62E0;

    CAN_FilterInitSturcture.CAN_FilterIdLow = 0;//0x246<<5;246H*20H=48c0//IDL;

    CAN_FilterInitSturcture.CAN_FilterMaskIdHigh =0x48D0;

    CAN_FilterInitSturcture.CAN_FilterMaskIdLow =0xFFFF;//IDMSKL;// 0x0006;

可以接收,不过别的id也能读到。可是我只要接收id为0x246的。


设置

    CAN_FilterInitSturcture.CAN_FilterMode = CAN_FilterMode_IdList;//CAN_FilterMode_IdMask;//;//;

    CAN_FilterInitSturcture.CAN_FilterScale = CAN_FilterScale_16bit;//CAN_FilterScale_16bit;

    CAN_FilterInitSturcture.CAN_FilterIdHigh = 0x246<<5;//0x48c0;

    CAN_FilterInitSturcture.CAN_FilterIdLow = 0;

    CAN_FilterInitSturcture.CAN_FilterMaskIdHigh =0;

    CAN_FilterInitSturcture.CAN_FilterMaskIdLow =0;

一个也收不到了。

请问怎么设置才能只接收一个id?芯片是CH32V203K8T6

icon_rar.gifCAN-246test.zip

你好我这里测试是没问题的,检查下是不是上位机有什么设置不对,或者波特率设置不一致。想过滤一个理论像下面那样设置也可以。另外有CAN过滤器相关设置供参考:https://www.cnblogs.com/wchmcu/p/17170782.html 

image.png

image.png



谢谢杨工!


你好杨工。

你提供的CAN-246test

我测试了一下,还是不能接收,我改成发送模式,用示波器看有码,

波特率大概在55k左右。

我用的波特率是250k,脚位也是PA11,PA12脚。

不知道哪里不对了。



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