基于dsPIC33FJ128MC506的CAN通信(07-100)

  作者:山东省科学院自动化研究所 张云 李明强 庄汝科 时间:2009-03-04来源:电子产品世界

  波特率的设置

  正确设置通信波特率必须配置以下几个参数:同步跳转宽度、波特率预分频比、相位段1和相位段2的长度、采样次数及传播时间段的长度。设置程序语句如下:

  void ecan1ClkInit(void)

  {

  /*指定 CAN通信时钟利用系统的指令周期,在此为20MHz,即Fcan=20MHz*/

  C1CTRL1bits.CANCKS = 1;

  /*规定一个CAN位包含16个TQ,分配如下:*/

  C1CFG1bits.SJW = 3; //同步段 = 1TQ

  C1CFG2bits.SEG1PH=3; //相位传输段1 = 4TQ

  C1CFG2bits.SEG2PHTS = 1; //相位传输段2长度可编程设定

  C1CFG2bits.SEG2PH = 3; //相位传输段2 = 4TQ

  C1CFG2bits.PRSEG = 6; //传播时间段 = 7TQ

  C1CFG2bits.SAM = 0; //采样次数为1次

  /*根据上面设置,算出波特率的分频比。这里要注意的是,因为C1CFG1bits.BRP只能填入整数,那么在系统时钟、通讯速率和时间份额三者之间要合理选择,否则通信不会成功。例如:如果系统时钟选用其内部FRC,标称值为7.37M,倍频后的系统时钟为36.85M,采用16个TQ为一个CAN位,假设CAN的通信速率为125K的话,那么根据公式BRP=Fcan/(2*16*125K)-1,计算得出的值为3.6,因为不能整除,所以永远不能得到125K的通信速率。 在此我们取40M的时钟,指令周期为20M,一个CAN位为16个TQ,经计算可得BRP的值为4。*/

  C1CFG1bits.BRP =4;

  }

1 2 3 4 5 6 7 8 9 10 11 12 13 14

关键词: CAN TJA1054 dsPIC33FJ128MC506

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版