亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        TMS320F2812DSP與MT6056i觸摸屏的通信設(shè)計(jì)和調(diào)試

        2014-04-29 11:35:27馮惕
        電子世界 2014年15期

        【摘要】為了將MT6056i觸摸屏作為TMS320F2812數(shù)字系統(tǒng)的人機(jī)界面,提出了溝通兩者信息交換的通信設(shè)計(jì)方案。此設(shè)計(jì)根據(jù)各設(shè)備的功能特點(diǎn),采用MAX3232芯片構(gòu)成硬件的通信接口,觸摸屏主動(dòng)按批發(fā)送、運(yùn)用F2812中SCI增強(qiáng)功能FIFO使F2812的CPU按批進(jìn)行通信數(shù)據(jù)接收和發(fā)送、最后觸摸屏按批接收的數(shù)據(jù)傳送流程實(shí)現(xiàn)了兩設(shè)備的通信。設(shè)計(jì)方案給出了F2812和MT6056i的基本設(shè)置、程序及數(shù)據(jù)回送通信的調(diào)試方法。該方案可有效解決F2812與觸摸屏之間的通信問題,成功地使之作為F2812數(shù)字系統(tǒng)的人機(jī)界面。

        【關(guān)鍵詞 】F2812;觸摸屏;通信;先進(jìn)先出;宏指令

        1.引言

        DSP強(qiáng)大的運(yùn)算功能 、快捷的處理速度使之成為許多系統(tǒng)的控制核心,如若配以觸摸屏作為其人機(jī)界面,不但操作顯示性則能大幅度提高,而且還有趨勢(shì)線、數(shù)據(jù)報(bào)表、監(jiān)控、報(bào)警等多種功能,使系統(tǒng)進(jìn)一步趨于完美。

        由于目前工業(yè)用觸摸屏主要是作為PLC控制系統(tǒng)的人機(jī)界面,不能直接與DSP配套使用,其關(guān)鍵問題是兩者無法進(jìn)行通信。本文根據(jù)文獻(xiàn)[1]所述系統(tǒng)通信部分的設(shè)計(jì)和調(diào)試經(jīng)驗(yàn),介紹TMS320F2812(文中簡(jiǎn)稱F2812)DSP與威綸通科技有限公司MT6056i觸摸屏(文中簡(jiǎn)稱MT6056i)的通信設(shè)計(jì)和調(diào)試的具體方法。

        2.F2812與MT6056i的硬件連接

        觸摸屏一般通過串行通信接口RS-232與其它設(shè)備進(jìn)行通信,F(xiàn)2812外設(shè)串行通信接口SCIA需通過接口轉(zhuǎn)換電路才能與觸摸屏RS-232接口相連[1] ,見圖1。MAX3232芯片中11端、12端分別與F2812的SCITXDA/GPIOF4端、SCIRXDA/GPIOF5端相連。J1插座中的1端、2端與3端分別與9 針RS232通信接口的5端、2端與3端相連。

        圖1 通信接口電路

        3.通信原理

        MT6056i與F2812之間采用主從通信方式,觸摸屏為主設(shè)備,F(xiàn)2812為從設(shè)備。一次通信中,MT6056i發(fā)送請(qǐng)求幀,F(xiàn)2812收到后發(fā)送響應(yīng)幀。

        F2812方面,啟用SCI的FIFO功能。當(dāng)一幀N(通信幀長度,1~16,初始化時(shí)設(shè)定,文中取N=12)個(gè)字節(jié)全部進(jìn)入FIFO接收寄存器組,在CPU查詢時(shí)刻(若N個(gè)字節(jié)已全部到位)或在接收中斷時(shí)刻,即將其一起轉(zhuǎn)出,經(jīng)校驗(yàn)無誤后,存入一數(shù)組,按協(xié)議規(guī)則將其有用信息提取、變換,并根據(jù)其中的信息進(jìn)行相應(yīng)操作。之后,將要顯示的信息按協(xié)議規(guī)則存入另一數(shù)組,經(jīng)處理后送入FIFO發(fā)送寄存器組,由SCIA串行通信接口一批逐字節(jié)發(fā)出。

        觸摸屏RS-232接口接收該通信幀后,觸摸屏內(nèi)CPU將其整合為界面上可接受的數(shù)據(jù)格式,在人機(jī)界面相應(yīng)位置上顯示出來,一次通信結(jié)束。

        每間隔一定時(shí)間,重復(fù)上述過程,就可連續(xù)進(jìn)行F2812與MT6056i之間的信息交換,實(shí)現(xiàn)觸摸屏對(duì)F2812數(shù)字系統(tǒng)的動(dòng)態(tài)監(jiān)控。

        4.F2812主要通信設(shè)置及程序

        F2812用C語言在CCS3.3中進(jìn)行編程和調(diào)試。以下為F2812通信的初始化函數(shù),“//”后為前一句語句的簡(jiǎn)要說明。其主要功能是根據(jù)通信要求為通信控制寄存器(SCICCR),控制寄存器1(SCICTL1)、控制寄存器2(SCICTL2),波特率寄存器(SCIHBAUD和SCILBAUD),F(xiàn)IFO發(fā)送寄存器(SCIFFTX)、FIFO接收寄存器(SCIFFRX),F(xiàn)IFO控制寄存器(SCIFFCT)設(shè)置參數(shù)[2-3]?;就ㄐ艆?shù)為波特率19200bps,每個(gè)字符幀10位:1位起始位、8位數(shù)據(jù)位、無校驗(yàn)位、1位停止位。

        void scia_fifo_init()

        {

        SciaRegs.SCICCR.all=0x0007;

        SciaRegs.SCICCR.bit.SCICHAR=7;

        //8位字符

        SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;

        //空閑線模式

        SciaRegs.SCICCR.bit.LOOPBKENA=0;

        //禁止回送測(cè)試

        SciaRegs.SCICCR.bit.PARITYENA=0;

        //禁止奇偶校驗(yàn)

        SciaRegs.SCICCR.bit.STOPBITS=0;

        //一個(gè)停止位

        SciaRegs.SCICTL1.bit.all=0x0003;

        SciaRegs.SCICTL1.bit.RXENA=1;

        //使能接收

        SciaRegs.SCICTL1.bit.TXENA=1;

        //使能發(fā)送

        SciaRegs.SCICTL1.bit.SLEEP=0;

        //禁止睡眠

        SciaRegs.SCICTL1.bit.TXWAKE=0;

        //非多處理器模式

        SciaRegs.SCICTL1.bit.SWRESET=0;

        //SCI軟件復(fù)位

        SciaRegs.SCICTL1.bit.RXERRINTENA=0;

        //禁止接收錯(cuò)誤中斷

        SciaRegs.SCICTL2.bit.TXINTENA =0;

        //禁止發(fā)送中斷

        SciaRegs.SCICTL2.bit.RXBKINTENA =0;

        //使能RXRDY/BRKDY中斷

        SciaRegs.SCIHBAUD =0x0000;

        SciaRegs.SCILBAUD =0x00f3;

        //低速外設(shè)時(shí)鐘為37.5 MHz時(shí),波特率為19200bps

        SciaRegs.SCIFFTX.bit.TXFFILIL=0;

        //發(fā)送中斷級(jí)位為0

        SciaRegs.SCIFFTX.bit.TXFFIENA=0;

        //禁止發(fā)送FIFO匹配中斷

        SciaRegs.SCIFFTX.bit.TXINTCLR=0;

        //不影響TXFFINT標(biāo)志位

        SciaRegs.SCIFFTX.bit.TXFFINT=0;

        //保留發(fā)送中斷標(biāo)志位默認(rèn)值

        SciaRegs.SCIFFTX.bit.TXFFST=0;

        //保留發(fā)送狀態(tài)位初始值SciaRegs.SCIFFTX.bit.TXFIFOXRESET=0;

        //發(fā)送復(fù)位且發(fā)送FIFO指針為0

        SciaRegs.SCIFFTX.bit.SCIFFENA=1;

        //使能FIFO功能

        SciaRegs.SCIFFTX.bit.SCIRST=1;

        //FIFO重新開始發(fā)送或接收

        SciaRegs.SCIFFRX.bit.RXFFIL=12;

        //接收中斷級(jí)位為12,為N。

        SciaRegs.SCIFFRX.bit.RXFFIENA=1;

        //使能接收匹配中斷

        SciaRegs.SCIFFRX.bit.RXFFINTCLR=0;

        //不影響RXFFINT標(biāo)志位

        SciaRegs.SCIFFRX.bit.RXFFINT=0;

        //保留接收中斷標(biāo)志位默認(rèn)值

        SciaRegs.SCIFFRX.bit.RXFIFST=0;

        //保留接收狀態(tài)位初始值

        SciaRegs.SCIFFRX.bit.RXFIFORESET=0;

        // 接收復(fù)位且接收FIFO指針為0

        SciaRegs.SCIFFRX.bit.RXFFOVRCLR=0;

        // 不影響接收FIFO溢出標(biāo)志位

        SciaRegs.SCIFFRX.bit.RXFFOVF=0;

        //保留接收FIFO溢出標(biāo)志位的默認(rèn)值

        SciaRegs.SCIFFCT.all=0x00;

        //FIFO控制寄存器配置成默認(rèn)狀態(tài)

        SciaRegs.SCICTL1.bit.SWRESET=1;

        // 重新使能SCI

        SciaRegs.SCIFFRX.bit.RXFIFORESET=1;

        //重新使能FIFO接收

        }

        上述函數(shù)嵌入原系統(tǒng)main函數(shù)的初始化程序段。原main函數(shù)前要添加對(duì)應(yīng)串口通信的頭文件。實(shí)時(shí)通信相應(yīng)語句嵌入for循環(huán)或中斷循環(huán)結(jié)構(gòu)內(nèi),以便進(jìn)行動(dòng)態(tài)監(jiān)控,如:

        #include "DSP281x_Device.h"

        #include "DSP281x_Examples.h"

        Uint16 dataA[12];

        /定義數(shù)組,通信接收時(shí)用。

        Uint16 dataB[12];

        //定義數(shù)組,通信發(fā)送時(shí)用。

        //定義其它變量。

        void main(void)

        {

        Uint16 i;

        EALLOW;

        //允許寫入受保護(hù)的寄存器。

        GpioMuxRegs.GPFMUX.all=0x0030;

        //將GPIOF4端設(shè)置為SCITXDA端、GPIOF5端設(shè)置為SCIRXDA端 。

        EDIS;

        //禁止寫入受保護(hù)的寄存器。

        scia_fifo_init();

        //SCIA初始化。

        for(;;)

        {

        …//其它程序段

        if(SciaRegs.SCIFFRX.bit.RXFFINT==1)

        //說明FIFO中已有12字節(jié)

        {

        for(i=0;i<12;i++)

        { dataA[i]=SciaRegs.SCIRXBUF.all;}

        //將接收FIFO中的數(shù)據(jù)放入數(shù)組dataA

        …//命令處理程序

        for(i=0; i< 12; i++)

        {SciaRegs.SCITXBUF=dataB[i]&0x00FF;}

        //將數(shù)組dataB的數(shù)據(jù)放入發(fā)送FIFO中

        SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;

        //清除中斷標(biāo)志RXFFINT

        }

        …// 其它程序段

        }

        }

        收、發(fā)語句之間命令處理程序的作用是根據(jù)協(xié)議約定將dataA數(shù)組中的信息進(jìn)行處理,并將將要在屏幕上顯示內(nèi)容的有關(guān)信息放入dataB數(shù)組。

        5.通信調(diào)試

        觸摸屏與F2812能否通信,可采用數(shù)據(jù)回送方法進(jìn)行試驗(yàn)。F2812方面的設(shè)置和編程見第4節(jié)所述,并循環(huán)體中加入語句,使數(shù)組dataB = 數(shù)組dataA。

        另外,在EB8000觸摸屏編程軟件中,在系統(tǒng)參數(shù)→設(shè)備列表中新增一個(gè)的設(shè)備,這個(gè)“PLC”(選中)的名稱為“MODBUS RTU Device”,所在位置選為“本機(jī)”,類型設(shè)置選為“Free Protocol”,接口類型為RS232[4],通信口設(shè)置為“COM1,19200,8,N,1”。設(shè)計(jì)圖2所示觸摸屏界面,界面上有4(可根據(jù)需要確定,但要不能大于N/2)個(gè)數(shù)值輸入元件NE_0~NE_3和4個(gè)數(shù)值顯示元件ND_0~ND_3。設(shè)置NE_0~NE_3對(duì)應(yīng)界面變量LW0~LW3,ND_0~ND_3對(duì)應(yīng)界面變量LW10~LW13。變量顯示格式均為16位16進(jìn)制數(shù)。配上以下觸摸屏宏指令程序:

        macro_command main()

        short aaaa[6],bbbb[6], return_value

        char command[12],response[13]

        FILL(command[0], 0, 12) //將數(shù)組12個(gè)元素置“0”

        FILL(response[0], 0, 13)

        while 1

        GetData(aaaa[0], "Local HMI", LW,0, 4)

        //將界面上LW0起的4個(gè)數(shù)據(jù)(字)送入aaaa[0]為首的4個(gè)字變量

        HIBYTE( aaaa[0],command[0])

        LOBYTE( aaaa[0],command[1])

        HIBYTE( aaaa[3],command[6])

        LOBYTE( aaaa[3],command[7])

        OUTPORT(command[0],"MODBUS RTU Device",12) INPORT(response[0],"MODBUS RTU Device",13, return_value)

        if (return_value > 0) ?then

        read_data[0] = response[1]

        read_data[0]=read_data[0]+(response[0] << 8)

        read_data[3] = response[7]

        read_data[3]=read_data[3]+(response[6] << 8)

        SetData(read_data[0], "Local HMI", LW, 10, 4) //將aaaa[0]為首的4個(gè)字變量中數(shù)據(jù)送入界面上LW0起的4個(gè)字

        end if

        DELAY(1)

        圖2 觸摸屏通信調(diào)試界面

        系統(tǒng)試運(yùn)行,如在輸入數(shù)字框鍵入一16進(jìn)制數(shù),輸出數(shù)字框也會(huì)顯示相應(yīng)的數(shù)值,說明通信暢通。之后,就可把F2812中的數(shù)組dataB與數(shù)組dataA的聯(lián)系斷開,將dataA的數(shù)據(jù)進(jìn)一步處理;把F2812中要顯示的數(shù)據(jù)送入dataB。另外觸摸屏的界面和宏指令程序也要改變以滿足實(shí)際系統(tǒng)需要。

        6.結(jié)語

        實(shí)踐證明,加接串行通信轉(zhuǎn)換接口,運(yùn)用F2812串行通信接口的FIFO功能,結(jié)合MT6056i宏指令編程可有效解決F2812與MT6056i之間的通信問題。盡管此設(shè)計(jì)是針對(duì)F2812與MT6056i的,但也可供F28xx系列DSP與WEINVIEW其它系列觸摸屏的配套使用提供參考。

        參考文獻(xiàn)

        [1]馮惕,淮文軍.基于F2812與觸摸屏通信的雙電機(jī)變頻器設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2013,21(5):1310-1313.

        [2]劉和平,鄧力,江渝等.數(shù)字信號(hào)處理器原理、結(jié)構(gòu)及應(yīng)用基礎(chǔ)[M].北京:機(jī)械工業(yè)出版社,2007.

        [3]蘇奎峰,呂強(qiáng),耿慶鋒等.TMS320X281xDSP 原理及C程序開發(fā)[M].北京:北京航空航天大學(xué)出版社,2008.

        [4]EB8000觸摸屏操作手冊(cè)[Z].

        作者簡(jiǎn)介:馮惕(1958—),男,江蘇蘇州人,碩士,副教授,高級(jí)工程師,現(xiàn)供職于蘇州職業(yè)大學(xué)電子信息工程學(xué)院,研究方向:滿意優(yōu)化控制,電機(jī)的變頻控制,數(shù)據(jù)通信等。

        不卡一区二区三区国产| 中文字幕无码专区一VA亚洲V专| 人人爽亚洲aⅴ人人爽av人人片| 精品国产一区二区三区av新片| 97丨九色丨国产人妻熟女| 影音先锋男人站| 亚洲毛片网| av天堂一区二区三区精品 | 国产中文欧美日韩在线| 五月天国产精品| 午夜日本理论片最新片| 日韩av在线播放人妻| 国产午夜精品一区二区三区嫩草| 在线视频你懂的国产福利| 久草久热这里只有精品| 精品女同一区二区三区| 成l人在线观看线路1| 亚洲欧美日韩综合在线观看| 免费啪啪av人妻一区二区| 文字幕精品一区二区三区老狼| 尤物网址在线观看| 日日摸日日碰人妻无码老牲| 国语自产啪在线观看对白| 人禽杂交18禁网站免费| 中日韩精品视频在线观看| 欧美日韩中文字幕日韩欧美| 伊人五月亚洲综合在线| 国模精品一区二区三区| 亚洲男同帅gay片在线观看| 国产人妖xxxx做受视频| 亚洲国产中文字幕精品| 中文无码日韩欧| AV无码一区二区三区国产| 一区二区国产视频在线| 亚洲天堂免费成人av| 亚洲视频一区二区三区视频| 99re8这里有精品热视频免费| 国产91对白在线观看| 国产免费网站在线观看不卡| 69精品人人人人| 97se在线观看|