这两天去面试,突然问我CAN的相关功能,但是做过一次早就忘记了,正好用HAL库重新做一遍,留下个记忆。
正常配置引脚,配置功能。
第一栏是配置时钟的,通过配置能设置波特率(主要功能,里面具体的TQ方面请自行查找),因为我的总线是42MHz的,直接分频42,这样TQ就是整数,方便设置波特率。因为低速和高速CAN的速率区分线就是125K,这样设置成125K可以同时应用在两种不同总线情况下(可以后续改)。最后一个是补偿机制的,相当于一个可设定频率的可调带宽滤波器,可以类比成系口袋的绳,越大容错越高,但是风险也越大(意外的杂波)。
第二栏是CAN总线的一些功能。第一个是时间戳,使能就能用时间戳;第二个是自动离线管理,当发送或接收错误超过一定值就离线了;第三个是自动唤醒,低功耗用的;第四个是报文自动重传,当发送失败了就一直发送到成功;第五个是FIFO锁,使能后满了就不收后边的报文,关闭就会覆盖原来的报文;第六个是报文发送优先级的功能,这个是配置邮箱中多个未发送报文的以ID的优先级发送还是以存进来的顺序发送。这栏功能根据自己的需求选,个人认为时间戳、自动离线、自动重传这三个作用比较大,我选择这三个启用。
第三栏是模式选择,CAN总线有正常模式、环回模式、静默模式和环回静默模式。正常模式不说了,环回是TX可以发到自己的RX上ÿ