久久88香港三级台湾三级中文-久久91-久久91精品国产91久-久久91精品国产91久久-久久91精品国产91久久户

  • 頭條基于DSP的CAN總線通信的設計與實現
    2020-10-27 作者:李璐、張宏川 等  |  來源:《電氣技術》  |  點擊率:
    分享到:
    導語本文介紹了TMS320F2812的eCAN模塊與TMS320LF2407的CAN模塊之間通信以及兩者與廣州致遠的CAN-USB I智能接口卡之間通信時CAN控制器的硬件電路設計及應用方法。利用該方法可以在波特率高達1Mbps的條件下可靠、穩定地傳輸數據,而且時間延時很小。在雙PWM變頻調速系統中的應用結果表明了該方法的可行性。

    1 引言

    CAN總線是一種支持分布式控制和實時控制的串行通信網絡,由于其獨特的設計思想和高可靠性,使其有較高的通信速率和較強的抗干擾能力,可以作為現場總線應用于電磁噪聲比較大的場合。CAN總線已經成為最有發展前途的現場總線之一。

    許多微處理器都將CAN控制器嵌入到系統中,成為片上的微處理器,TI公司推出的TMS320F2812和TMS320LF2407就在其中。這種結構成本低、運行穩定、功能完備,是一種很有前途的CAN通信系統組成方案。

    上述兩種DSP上的CAN模塊有所不同,TMS320F2812 DSP片上的增強型CAN控制器eCAN模塊,其性能比TMS320LF2407 DSP內嵌CAN控制器有較大的改進。

    本文主要介紹TMS320F2812的eCAN模塊與TMS320LF2407 的CAN模塊之間通信以及兩者與廣州致遠的CAN-USB I智能接口卡之間通信時CAN控制器的硬件電路以及軟件設計,同時對程序運行結果進行了分析,實驗證明了這種通信方式的可行性,并在雙PWM變頻調速系統中得到了應用。

    2 CAN節點通信設計

    TMS320F2812的eCAN模塊與TMS320LF2407的CAN模塊之間通信以及兩者與廣州致遠的CAN-USB I智能接口卡之間的連接示意圖如圖1所示。由于TMS320F2812和TMS320LF2407上的CAN模塊集成了CAN控制器,提供了完整的CAN協議,因此圖1中 的TMS320F2812的eCAN模塊與TMS320LF2407的CAN模塊之間的通信僅需收發裝置即可。兩者與上位機的通信則通過CAN-USB I智能接口卡。

    基于DSP的CAN總線通信的設計與實現

    圖1 通訊電路連接示意圖

    2.1 CAN節點的硬件設計

    硬件結構圖如圖2 所示。該硬件結構主要實現TMS320F2812和TMS320LF2407的通信以及兩者和上位機的通信。

    基于DSP的CAN總線通信的設計與實現

    圖2 CAN節點硬件結構圖

    考慮TMS320F2812和TMS320LF2407之間傳輸數據的電平匹配問題,對TMS320F2812和TMS320LF2407均采用PHLIIP公司的PCA82C250作為CAN收發器。其能提供CAN總線的差動發送能力及對CAN控制器的差動接收能力,信號使用差分電壓傳送;兩條信號線被稱為CAN總線(CAN_H和CAN_L),將收發器的RS端接地以實現高速傳輸,在CAN_H和CAN_L之間接120歐電阻為終端匹配電阻。

    TMS320F2812的CANTXD和CANRXD輸出的高電平信號是3.3V的,而PCA82C250需要5V供電,因此在收發器和TMS320F2812之間加高速光耦6N137以實現電平匹配,并起到TMS320F2812和CAN總線隔離的作用,從而保護了TMS320F2812。TMS320LF2407的電路連接原理相同。TMS320F2812和TMS320LF2407兩者與上位機之間的通訊利用CAN總線時,只需加一個CAN-USB I即可。

    2.2 CAN節點的軟件設計

    本文主要討論下位機的程序。TMS320F2812的eCAN模塊的郵箱0為發送郵箱,郵箱16為接收郵箱。TMS320LF2407的CAN模塊的郵箱3為發送郵箱,郵箱2為接收郵箱。

    雖然MS320F2812的eCAN模塊與TMS320LF2407的CAN模塊有所不同,但是兩者的CAN寄存器(兩者都有的寄存器)在結構和功能上都是相同的,所以即使代碼不能完全兼容,在移植上是非常容易的。CAN節點的軟件設計主要分為三部分:初始化程序、數據發送程序、數據接收程序。兩者的這三部分程序的基本流程大體上是一樣的,所以下面只對TMS320F2812的eCAN模塊的程序進行介紹。

    2.2.1 主程序

    圖3為主程序流程圖。主程序如下:

    void main(void)

    {

    InitSysCtrl(); //初始化系統

    /*關中斷*/

    DINT;

    IER = 0x0000;

    IFR = 0x0000;

    InitPieCtrl(); //初始化PIE中斷

    InitPieVectTable(); //初始化PIE中斷矢量表InitECan(); //初始化CAN寄存器

    /*使能PIE中斷*/

    PieCtrl.PIEIER9.bit.INTx5 = 1;

    IER |= M_INT9; //使能CPU中斷

    EINT; //開全局中斷

    ERTM; //開實時中斷

    for(;;){}

    }

    該程序中InitSysCtrl()為系統初始化程序, 同時設置系統時鐘,本程序選用系統時鐘為120MHZ,CAN的時鐘與系統時鐘相等。InitEcan()為初始化CAN寄存器的子程序。for(;)為循環等待CAN的接收中斷,一旦TMS320F2812接收成功TMS320LF2407或者上位機發送來的數據,則立即進入中斷程序,讀出郵箱中的數據。CAN的發送程序寫在了CAN的接收中斷程序里面,用于向上位機發送需要的數據。

    基于DSP的CAN總線通信的設計與實現

    圖3 主程序流程圖

    2.2.2 初始化程序

    初始化程序一般是CAN模塊的初始化。在雙PWM系統中, TMS320F2812需要接收TMS320LF2407發送的數據,以及發送數據給上位機,所以將郵箱的初始化也寫在了CAN的初始化程序中,并且將發送和接收的初始化程序寫在了同一個程序中。這樣做可以避免重復初始化兩個郵箱共同應用到的寄存器,簡化程序。具體流程圖如下:

    基于DSP的CAN總線通信的設計與實現

    圖4 初始化流程圖

    本程序中發送采用查詢方式,接收采用中斷方式,所以在初始化流程圖中還包括中斷的的相關設置。

    2.2.3 數據發送程序

    TMS320F2812中的每個郵箱均為64位,被分成兩個32位的郵箱消息數據低寄存器(MDRL)和高寄存器(MDRH)。程序中設置郵箱0為發送郵箱,將變量i、j分別賦值給郵箱0的MDRL和MDRH,ID為0x00000000的標準幀。

    TMS320LF2407的CAN中每個郵箱有4個16位的存儲空間,分別為MBXnA、MBXnB、MBXnC和MBXnD,TMS320LF2407的接收程序中設郵箱2為接收郵箱。同時還設置MBXnA和MBXnB分別對應TMS320F2812的MDRL的低8位和高8位數據,MBXnC和MBXnD分別對應TMS320F2812的MDRH的低8位和高8位數據。

    程序如下:

    int32 i=0;

    int32 j=1;

    int32 MessageSendCount=0;

    i++; //i自加1

    j++; //j自加1

    ECanaShadow.CANME.all;

    ECanaRegs.CANTRS.all = 0x00000001;

    while(ECanaRegs.CANTA.all == 0);

    ECanaRegs.CANTA.all = 0x00000001;

    ECanaMboxes.MBOX0.MDRL.all= i;

    ECanaMboxes.MBOX0.MDRH.all= j;

    MessageSendCount++; //發送次數

    發送程序運行的結果如圖5-圖7所示:

    基于DSP的CAN總線通信的設計與實現

    圖5 CCS3.3變量窗口顯示TMS320F2812郵箱0的發送情況

    從圖5中可以看出,當程序停止時當i和j分別為10000和10001,此時 TMS320F2812的郵箱0的MDRL和MDRH發送的數據分別為10000和10001,與變量i和j的值對應相等,同時MessageSendCount為10000,說明程序運行了10000次。

    基于DSP的CAN總線通信的設計與實現

    圖6 CCS2000變量窗口顯示郵箱2的接收情況

    從圖6中可以看出,TMS320LF2407的郵箱2的MBX2A和MBX2B分別為10000和0,分別于圖5中TMS320F2812的MDRL的低8位和高8為數據對應。MBX2C和MBX2D分別為10001和0,分別與圖5中TMS320F2812的MDRH的低8位和高8為數據對應。同時接收次數RXCOUNT為10000,與TMS320F2812的發送次數相等。說明TMS320LF2407的CAN模塊的接收程序正確。

    基于DSP的CAN總線通信的設計與實現

    圖7 上位機的接收界面

    從圖7中可以看到,上位機收到的數據的序列號為10000,說明收到了10000個數據,數據的幀ID為0x00000000,幀類型為標準幀,與TMS320F2812的發送郵箱0的幀ID和幀類型相同。上位機收到的數據一組為從0到2710,另一組為0到2711,是十六進制的數據,轉換成十進制為0到10000和0到10001,對應TMS320F2812的MDRL和MDRH中的數據。

    2.2.4 數據接收程序

    中斷子程序的功能是一旦接收到TMS320LF2407或者上位機發送過來的數據,就產生接收中斷,進入中斷子程序,將收到的數據讀入給變量R_l和R_h。具體接收程序如下:

    interrupt void ECAN0INTA_ISR(void)

    {

    while(ECanaRegs.CANRMP.all!=

    0x00010000 ) ;

    ECanaRegs.CANRMP.all = 0x00010000;

    /*收到的數據在接收郵箱Mbox16*/

    R_l = ECanaMboxes.MBOX16.MDRL.all;

    R_h = ECanaMboxes.MBOX16.MDRH.all;

    MessageReceiveCount++; //接收次數

    PieCtrl.PIEACK.bit.ACK9 = 1;

    /*CAN的發送程序*/

    ......

    EINT;

    }

    限于篇幅的原因,不再給出接收程序的運行結果。

    3 CAN模塊通信在雙PWM變頻調速系統中的應用

    圖8為雙PWM異步電機變頻調速系統結構框圖。整流部分和逆變部分分別由TMS320F2812 DSP和TMS320LF2407 DSP控制??刂七^程中,整流部分和逆變部分要進行數據傳輸,即兩片DSP之間需要數據通信。本文采用兩片DSP上自帶的CAN模塊進行通信。此外,兩片DSP還需要與上位機進行通信。其硬件和軟件設計如第二節所示。

    基于DSP的CAN總線通信的設計與實現

    圖8 雙PWM異步電機變頻調速系統結構框圖

    4 結束語

    本文介紹的TMS320F2812的eCAN模塊與TMS320LF2407 的CAN模塊之間通信以及兩者與上位機之間的雙向通信的硬件結構簡單,軟件實現方便。在雙PWM變頻調速系統中程序運行的結果,證明了這種通信方式的可行性。

    (編自《電氣技術》,作者為李璐、張宏川 等。)

主站蜘蛛池模板: 日韩中文字幕在线亚洲一区| 亚洲国产品综合人成综合网站| 日韩中文字幕精品久久| 伊人日本| 欧美日批| 国产毛片一级aaaaa片| 狠狠色丁香久久婷婷综合五月| asian极品呦女xx农村| 国产日韩欧美亚洲综合在线| 欧美日韩在线视频专区免费| 亚洲国语在线视频手机在线| 91精品视频在线播放| 欧美在线观看一区二区| 国产最新在线视频| 美国黄色网| 精品无码一区在线观看| 丁香婷婷开心激情深爱五月| 精品久久久久久午夜| 欧美精品白嫩bbwbbwbbw| 99草视频| 人妖另类xx00视频| 久草网免费| 日本不卡视频一区二区三区| 华人在线视频| 免费黄色高清视频| 欧美大黄视频| 欧美午夜免费一级毛片| 国产a免费视频| 国产主播久久| 国产在线视频www色| 国产视频一二三区| 国产精品伦子一区二区三区| 操出水视频| 国产成人精品午夜视频'| 国产精品久久久久9999| 国产欧美精品午夜在线播放| 国产亚洲久久| 欧美亚洲国产成人综合在线| 日韩做爰在线观看免费| 青青青青啪视频在线观看| 亚洲污|