重新设定波特率之后的参数如下:
#define BAUD_RATE_SJW SJW_4TQ /*!< 1 set Synchronization Jump Width. */
#define BAUD_RATE_BRP 0 /*!< 1 Baud Rate Prescaler */
#define BAUD_RATE_SAMP 0 /*!< 0-One sample per bit, 1-three sample per bit. */
#define BAUD_RATE_TSEG1 TSEG_7 /*!< Time Segment 1: TSEG1: 4~16 */
#define BAUD_RATE_TSEG2 TSEG_8 /*!< Time Segment 2: TSEG2: 2~8 */
#define BAUD_RATE_CLOCK 8000000L/*!< clock source for MSCAN*/
#define Baud_RATE BAUD_RATE_CLOCK/(BAUD_RATE_BRP+1)/(BAUD_RATE_SJW+1)/(3 + BAUD_RATE_TSEG1+BAUD_RATE_TSEG2)
==>>8M/1/4/16) = 125kHz
KEA128芯片规格书上的位时间计算如下:(page-563)
位时间 = (1 + 时段1 + 时段2) * (预分频器值)/ fCANCLK
好像省掉了对同步段和相位缓冲段的要求描述。
这两种方式计算都无法获取所需要的波特率。
****
另外,既然TSEG1和TSEG2有范围要求,对TEG_1和2的定义如果可以分开,或者至少如我注释部分添加的,也许可以更加让使用者感到两段的差异。
配置出错时,虽然CW会有提醒,但是不追究时,就会出错。
|