flexcan当用到canfd 的时候,要设置两种速率,一个是仲裁段,一个是数据段。
仲裁域发现最大支持1M的速率。 如果超过这个速率,那么是无法通信的。除去数据段,
其他的地方,还是采用can的速率。 can的速率一般是500k, 或者最大1M.
因此需要设置两个寄存器。
仲裁段,一个位时间= prog + ts1 + ts2 + 4 (公式1)
数据段,一个位时间= prog + ts1 +ts2 + 3 (公式2)
为什么是一个需要加4, 另外一个要加3?
主要是芯片设计的奇葩。
公式1里面,寄存器的值要加上1才是,真正的时间值。
公式2里面,有一个寄存器的值不加1 ,是真正的时间值。