STM32的CAN被称为bxCAN(基本扩展CAN(Basic Extended CAN)),支持CAN协议2.0A和2.0B。STM32基本型只有一个主CAN,互联型有一个主CAN和一个从CAN。
1、关于CAN_RX和CAN_TX
CAN通讯由CNA控制器和CAN收发器的区别,CAN控制器出来的信号本身就是CAN_RX和CAN_TX,信号和电平转换等是由CAN收发器来实现的。可以看一下TJA1050等CAN收发器的原理图就可以看到。
2、STM32的bxCAN分为主/从
●CAN1:是主bxCAN,它负责管理在从bxCAN和512字节的SRAM存储器之间的通信
● CAN2:是从bxCAN,它不能直接访问SRAM存储器
● 这2个bxCAN模块共享512字节的SRAM存储器
注: 在中容量和大容量产品中,USB和CAN共用一个专用的512字节的SRAM存储器用于数据的发送和接收,因此不同同时使用USB和CAN(共享的SRAM被USB和CAN模块互斥地访问)。USB和CAN可以同时用于一个应用中但不能在同一个时间使用
STM32有2个bxCAN外设,即CAN1,CAN2,这两个CAN外设各自都有自己的发送邮箱,接收FIFO0和FIFO1,但是,CAN除了这个之外,还有接收过滤器,而CAN2没有,但是,在实际工作中,这个接收过滤器是只需要一个,并不是两路CAN各自都需要,因此CAN2完全可以共享CAN1的接收过滤器(这个就是CAN1与CAN2共享的512个字节的SRAM了),只不过是在芯片内部通过CAN1的存储器读写控制器间接的访问,从这种CAN1和CAN2的结构上来说,将CAN1看成是主CAN,CAN2看成是从CAN就不足为奇了,除了称呼,在使用和功能上没有任何区别,这些都只是芯片内部bxCAN的设计,对外bxCAN完全是多主模式。