青与鱼博客

@青与鱼

March 12th 2019 / 玩玩编程

stm32 can通讯

通讯不难,主要是关于标志位和屏蔽位的问题
波特率计算公式:72M/2/60(1+3+2)=0.1 即波特率为100KBPs

//屏蔽滤波(can接收才涉及)
    CAN_FilterInitStructure.CAN_FilterNumber=0;//0号滤波器
    //屏蔽滤波模式
    CAN_FilterInitStructure.CAN_FilterMode=CAN_FilterMode_IdMask;//标识符屏蔽位模式
    //32位寄存器
    CAN_FilterInitStructure.CAN_FilterScale=CAN_FilterScale_32bit;
    //标识符寄存器高16位
    CAN_FilterInitStructure.CAN_FilterIdHigh=0x0000;
    //标识符寄存器低16位
    CAN_FilterInitStructure.CAN_FilterIdLow=0x0001;
    //屏蔽寄存器高16位
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh=0x0000;
    //屏蔽寄存器低16位
    CAN_FilterInitStructure.CAN_FilterMaskIdLow=0x0000;


标识符表示最想接受到的消息
屏蔽寄存器表示想要屏蔽的ID
这里每一位都是0,表示都接受,如果是0x0000000f;表示后四位必须为1,其余位不关心

发表评论
已登录为 [退出]


皖ICP备16001584号-2
x
皖ICP备16001584号-2