新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于CAN總線與RS-485的DSP通信接口設計

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

        作者: 時間:2009-08-26 來源:網絡 收藏

        1.概述

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

          現場是一種開放式、數字化、多點的控制系統局域網絡,是當今自動化領域中最具有應用前景的技術之一,是現場中的應用熱點。由于總線具有速率高、開放性好、報文短、糾錯能力強以及控制簡單、擴展能力強、系統成本低等特點,越來越受到人們的關注。

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

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

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

        2.TMS320LF2407的RS-485通信

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

          初始化TMS320LF2407的SCI模塊

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

          *SCICTL1=0x0023;//使能接受和發送

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

          *SCIHBAUD=0x0001;

          *SCILBAUD=0x0089;//設置波特率=9600bps,此時系統時鐘為30M

          *SCIPRI=0x0010;//高優先級

          TMS320LF2407接收上位機中斷響應程序

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

          {

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

          {

          …//對接受數據進行處理

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

          return;//返回

          }

          else

          {

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

          return;//返回

          }

          TMS320LF2407給上位機發送數據程序

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

          {

          while(*p!=’

        主站蜘蛛池模板: 嘉祥县| 克什克腾旗| 额尔古纳市| 巫溪县| 吴江市| 和田县| 东平县| 微博| 芜湖市| 宜州市| 延川县| 共和县| 宁蒗| 巩留县| 武邑县| 克山县| 乡宁县| 平泉县| 曲水县| 泸州市| 汤阴县| 丽水市| 花莲市| 江津市| 建宁县| 喀喇| 封开县| 明水县| 河池市| 海伦市| 临泽县| 漳平市| 普格县| 依兰县| 遂平县| 博客| 阿拉善盟| 周口市| 怀集县| 四川省| 始兴县|