以前从没有接触过can通信,最近开始接触can通信,网上搜过一些资料了解关于can通信的一些硬件知识,其实我认为can硬件知识大体了解就可以了,最重要的应用还是在can通信软件代码上的实现,因为can硬件提供了基础,在此基础上懂得怎样对can进行波特率配置以及过滤器配置就可以了。
举个例子,stm32f091上配置SYSCLK=48MHz,can在APB1外设上,也配置为48MHz,
can波特率 = 48/(Tbit* PRV)
Tbit指的是 位时间,它等于TSEG1+TSEG2+TSYNC; PRV是分频值;
其中TSYNC是位同步时间,等于1个TSCL;
而TSEG1 ,TSEG2 各有几个TSCL,这要根据can的采样点以及波特率来计算出合理的值来,网上有这种计算工具,大家可以自己搜索下载一个;
这里说一下采样点:
当波特率 > 800K时,采样点 =75%;
当波特率 > 500K时,采样点 =80%;
当波特率 <= 500K时,采样点 =87.5%;
在计算上输入时钟频率,比如48MHz,输入采样点,以及想要的波特率,就会计算出TSEG1,TSEG2的值来,以及分频PRV的值,根据计算的结果选择最合适最想要的一个就可以了;
这样通过计算来的TSEG1,TSEG2,PRV来进行代码配置就可以了,如下图是我的计算结果: