• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 手機與無線通信 > 設(shè)計應(yīng)用 > 基于CAN總線與RS-485的DSP通信接口設(shè)計

    基于CAN總線與RS-485的DSP通信接口設(shè)計

    作者: 時間:2009-08-26 來源:網(wǎng)絡(luò) 收藏

    1.概述

    本文引用地址:http://www.czjhyjcfj.com/article/157872.htm

      現(xiàn)場是一種開放式、數(shù)字化、多點的控制系統(tǒng)局域網(wǎng)絡(luò),是當(dāng)今自動化領(lǐng)域中最具有應(yīng)用前景的技術(shù)之一,是現(xiàn)場中的應(yīng)用熱點。由于總線具有速率高、開放性好、報文短、糾錯能力強以及控制簡單、擴展能力強、系統(tǒng)成本低等特點,越來越受到人們的關(guān)注。

      TI公司的TMS320LF2407型微控制器以其處理能力強,外設(shè)功能模塊集成度高及存儲器容量大等特點廣泛應(yīng)用于數(shù)字化控制與領(lǐng)域。總線控制器與TMS320LF2407微控制器連接,可以實現(xiàn)CAN總線的通信。TMS320LF2407微控制器內(nèi)嵌的異步串行口(SCI)支持CPU與其它使用標(biāo)準(zhǔn)格式的異步外設(shè)之間的數(shù)字通訊,通過可以方便地進行之間或與PC機之間的異步串行通信。

      是一種多發(fā)送器的標(biāo)準(zhǔn),它擴展了RS-422A的性能,允許雙絞線上一個發(fā)送器驅(qū)動32個負載設(shè)備,負載設(shè)備可以是被動發(fā)送器、接收器或收發(fā)器,最大傳輸距離為1200m,最大傳送速率可達10Mb/s。因此,RS-485在遠程通信和多機總線系統(tǒng)中具有很大的吸引力,在實際中得到了廣泛應(yīng)用。

      本以PC機為主機,以TMS320LF2407為從機,實現(xiàn)了主從機之間的RS-485的串行通信,以及TMS320LF2407與CAN總線的通信。其中PC機與TMS320LF2407的RS-485通信,采用MAXIM公司生產(chǎn)的MAX48X/49X系列收發(fā)器芯片,完成RS-485標(biāo)準(zhǔn)通信。由于PC機上提供的是標(biāo)準(zhǔn)的RS-232C串行接口,因此,需要RS-232C/RS-485轉(zhuǎn)換器進行接口轉(zhuǎn)換。如圖1所示。應(yīng)用TMS320LF2407內(nèi)嵌的CAN模塊和總線接口芯片PCA82C250,實現(xiàn)了TMS320LF2407與CAN總線的串行通信。

    2.TMS320LF2407的RS-485通信

      TMS320F2407有較強的串行通信能力,設(shè)計到的控制類寄存器較多,這使系統(tǒng)設(shè)計比較靈活。設(shè)計時,首先對控制類寄存器進行初始化,包括數(shù)據(jù)格式、中斷使能、中斷優(yōu)先級、波特率等參數(shù)的設(shè)置。初始化完成以后,就可以發(fā)送和接收數(shù)據(jù)了。如果要發(fā)送數(shù)據(jù),只要把數(shù)據(jù)寫入SCITXBUF即可,由串行通信SCI模塊自動完成發(fā)送數(shù)據(jù)。如果要接收數(shù)據(jù),只要把SCIRXBUF的內(nèi)容讀出即可(從引腳SCIRXD/IO移位來的信息由串行通信SCI模塊本身自動去掉起始位、停止位、校驗位,并將數(shù)據(jù)放到SCIRXBUF中)。代碼如下:

      初始化TMS320LF2407的SCI模塊

      *SCICCR=0x0007;//1個停止位,不使能奇偶校驗,8位字符

      *SCICTL1=0x0023;//使能接受和發(fā)送

      *SCICTL2=0x0003;//使能接受中斷

      *SCIHBAUD=0x0001;

      *SCILBAUD=0x0089;//設(shè)置波特率=9600bps,此時系統(tǒng)時鐘為30M

      *SCIPRI=0x0010;//高優(yōu)先級

      TMS320LF2407接收上位機中斷響應(yīng)程序

      Voidinterruptint1()//SCI高優(yōu)先級中斷,屬于DSP的INT1中斷

      {

      if(*PIVR==0x0006)//查詢中斷向量判斷是否發(fā)生了串口接收中斷

      {

      …//對接受數(shù)據(jù)進行處理

      arm(“clrcINTM”);//開總中斷

      return;//返回

      }

      else

      {

      arm(“clrcINTM”);//開總中斷

      return;//返回

      }

      TMS320LF2407給上位機發(fā)送數(shù)據(jù)程序

      Voidsend(char*p)//把欲發(fā)送的數(shù)據(jù)采用指針方式傳遞

      {

      while(*p!=’

    主站蜘蛛池模板: 延寿县| 开平市| 牟定县| 贵南县| 普安县| 旬阳县| 孝义市| 永修县| 东源县| 胶南市| 鄂尔多斯市| 无锡市| 诸城市| 辉南县| 尚义县| 盈江县| 和顺县| 崇左市| 台南市| 揭西县| 昭苏县| 宁武县| 宜宾县| 长宁县| 天峨县| 礼泉县| 任丘市| 乐至县| 尖扎县| 东山县| 连南| 威远县| 卢湾区| 高密市| 东方市| 承德市| 长岭县| 南雄市| 苍溪县| 大同市| 龙里县|