久久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變頻調速系統中程序運行的結果,證明了這種通信方式的可行性。

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

主站蜘蛛池模板: 久草在线观看福利 | 8888四色奇米在线观看不卡 | 亚洲第一视频区 | 首页国产精品萌社区 | 十六一下岁女子毛片免费 | 亚洲综合久久一本伊伊区 | 成人午夜影视全部免费看 | 国产性较精品视频免费 | 天天影视色香欲综合网老头 | 草草影院一级毛片a级 | 91资源视频 | 国产日本三级在线播放线观看 | 黄视频网站观看 | 成年女人在线观看 | 国产a级三级三级三级中国 国产a级午夜毛片 | 一级α片| 亚洲精品资源在线 | 亚洲a级 | 成人三级做爰在线观看男女 | 手机看片1024久久香蕉 | 久久午夜精品视频 | 欧美一级毛片欧美大尺度一级毛片 | 欧美日韩免费看 | 国产高清在线a视频大全凹凸 | 欧美日韩国产亚洲综合不卡 | 美国一级毛片免费看成人 | 日本护士一级毛片在线播放 | 欧美日韩中文字幕久久伊人 | 国产亚洲一区二区三区在线观看 | 亚洲福利精品一区二区三区 | 亚洲黄网在线 | 国产www在线观看 | 婷婷午夜激情 | 国产稀缺精品盗摄盗拍 | 欧美爱爱网站 | 精品国产福利久久久 | 一级特黄特交牲大片 | 国产高清一级视频在线观看 | 精品欧美成人bd高清在线观看 | 国产特级 | 欧美日韩国产亚洲综合不卡 |