新闻中心

EEPW首页 > 手机与无线通信 > 设计应用 > 基于dsPIC33FJ128MC506的CAN通信(07-100)

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

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

  波特率的设置

本文引用地址:http://www.amcfsurvey.com/article/92042.htm

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

  void ecan1ClkInit(void)

  {

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

  C1CTRL1bits.CKS = 1;

  /*规定一个位包含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;

  }



评论


技术专区

关闭