隐者-423522 发表于 2014-11-6 14:44:10

STM32关于CAN模块



之前用的LPC和LM3S系列对于CAN模块都有32个报文对象(message objects),每个报文对象具有标识符屏蔽。
而STM32的CAN模块,有14个滤波器组(filter banks),是否等同报文对象的作用呢? 使用时有什么区别?


另外STM32的 3个发送邮箱(mailboxes)是否与LPC和LM3S系列的CAN接口寄存器(CAN register interface)一个意思呢?




时光碎了天 发表于 2014-11-6 16:26:11

这个我不是很清楚,可以上网去查下的

发表于 2014-11-7 09:13:57

3个发送邮箱应该理解是有3个可以用来做发送的数据缓冲,过滤器也就是掩码寄存器用来设置只接收哪些ID的数据,比如,你只希望接收广播的0X18000001的数据,这个时候就要设置掩码寄存器来实现。

隐者-423522 发表于 2014-11-7 09:52:04

直接用库函数,不用管寄存器定义。
发送:直接丢数据到CAN_Transmit(); 然后去判断一下邮箱是否发完。
接收:先CAN_FilterInit( );滤波器组指向FIFO0或1,通过中断CAN_GetITStatus()判断FIFO0,1是否接收到数据,再CAN_Receive()去读。
就是不知道滤波器组是否只是判断接收ID用的,还是能够暂存接收到的报文呢? 怕3组FIFO没来及处理,会不会丢包呢。。。
页: [1]
查看完整版本: STM32关于CAN模块