音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

用tl16c752擴展串口遇到的問題

作者:hexiaobo 欄目:通信技術(shù)
TL16C752擴展串口遇到的問題
采用TMS320LF2407主控芯片,擴展一片TL16C752b,采用中斷方式。通訊調(diào)試始終有問題:
1、關(guān)閉TL16C752的fifo,只打開接收中斷或發(fā)送中斷,接收或發(fā)送工作正常;
2、當(dāng)同時打開接收、發(fā)送中斷時,發(fā)送接收中斷均不能正常進入;
3、打開fifo,關(guān)閉流控制,trigger level設(shè)為16byte,只打開接收中斷時,接收數(shù)據(jù)基本正常,但每次time_out中斷會多進入一次;
4、打開fifo時,發(fā)送始終不能正常工作。當(dāng)連續(xù)往thr中存入多個數(shù)據(jù)時,tx腳不能發(fā)送數(shù)據(jù);當(dāng)僅往thr中存入一個數(shù)據(jù)時,數(shù)據(jù)可以發(fā)送出來,但其后程序再也不能進入中斷處理程序。
  請高手指點,調(diào)了一個星期,網(wǎng)上查了一大通,找不出毛病。另外流控制是否一定需要(包括硬件流、軟件流)?多謝了!

2樓: >>參與討論
chunyang
你應(yīng)該仔細看器件手冊,操作時序是決定性的
流控不是必要,只是為了提高效率,但會使編程時序復(fù)雜化,先期不要開啟。

3樓: >>參與討論
daguang72
流控制統(tǒng)統(tǒng)關(guān)閉
我一直在用SC16C2550B,并口擴展2個串口,查詢方式,5V系統(tǒng),沒問題,原來是3.3V系統(tǒng),芯片不能正常工作,后換得5V系統(tǒng)才正常,問周理工技術(shù)支持這是怎么回事兒,他們也解釋不了,你的系統(tǒng)是幾伏的?

4樓: >>參與討論
hexiaobo
3.3V系統(tǒng)
TL16C752數(shù)據(jù)手冊上寫的是3.3V電源沒問題。SC16C2550B是5V芯片嗎?l16c752有64byteFIFO,其實用不到,價格還比較貴(40RMB)。而且在不使用FIFO時,芯片還有BUG(讀數(shù)據(jù)時必須加延時),現(xiàn)在還沒搞定,苦惱!

5樓: >>參與討論
daguang72
哈哈
SC16C550說是2.5~5V均可用,實際我測試結(jié)果是只能用在5V
我相信芯片輕易不會出問題,估計還是你軟件的問題,強烈建議用FIFO方式,這樣能節(jié)省CPU大量處理時間,另外在每次查詢到FIFO中有錯誤的時候要重新初始化一下這個芯片,這一點很重要

6樓: >>參與討論
hexiaobo
新的進展
停了兩個星期,現(xiàn)在重新調(diào),有了新的進展。
1、增加了對TL16C752讀寫指令周期,每次讀寫TL16C752寄存器額外再加2us延時,只開接收中斷時(IER設(shè)0x01),接收數(shù)據(jù)正常,沒有了原來time_out中斷會多進入一次的問題;
2、每次初始化TL16C752后,一開發(fā)送中斷(IER設(shè)0x02),芯片立刻提起中斷,INT腳轉(zhuǎn)為高電平(此時實際并未發(fā)送數(shù)據(jù)),此時讀IIR寄存器,偶爾可以復(fù)位中斷(INT腳轉(zhuǎn)為低電平),多數(shù)情況下INT腳一直保持高電平,導(dǎo)致無法正常進入中斷服務(wù)程序;
3、在主程序中如果直接循環(huán)發(fā)送數(shù)據(jù),數(shù)據(jù)可以正常發(fā)出。

7樓: >>參與討論
hexiaobo
源程序
//中斷服務(wù)程序
void interrupt INT6(void)
{
          WORD ax,i;

    *XINT1CR|=0x8000;
    ax=IIR_FCR_EFR_A&0x3f;
//RHR interrupt
    if(ax==0x04)
    {
        for(i=0;i<8;i++)
        {
            RecvBuffer[PtrRecv++]=RHR_THR_DLL_A;
            Delay(1);
            }
    }
//RHR timeout interrupt
         else if(ax==0x0c)
         {
        do
        {
            RecvBuffer[PtrRecv++]=RHR_THR_DLL_A;
            Delay(1);
        }while(LSR_A&0x01);
         }
//THR interrupt
    else if(ax==0x02)
    {
//RHR_THR_DLL_A=0x5a;
         }

         else IIR_FCR_EFR_A=0x06;       //Clear FIFO
}

//初始化 TL16C752
void InitializeCom(void)
{
    UWORD i;

    *PFDATDIR|=0x0002;         //RESET TL16C752
    Delay(100);
    *PFDATDIR&=0xfffd;

    MCR_A=0x08;         //Enable INT
    Delay(2);
    IIR_FCR_EFR_A=0x07;    //Enable FIFO;Clear FIFO;8 byte FIFO
    Delay(2);
    LCR_A=0x80;            //Set Baudrate
    Delay(2);
    if(System.Baudrate2>7)i=5;
    else i=System.Baudrate2;
    RHR_THR_DLL_A=LBaudrateTableCom[i];
    Delay(2);
    IER_DLH_A=HBaudrateTableCom[i];
    Delay(2);
    LCR_A=0x03;           //8 data bit;1 stop bit;0 parity bit
    Delay(2);

    IER_DLH_A=0x02;        //Enable RHR/THR interrupt
}

從示波器上看,初始化程序最后一條指令一執(zhí)行,INTA腳立刻變?yōu)楦唠娖剑M入中斷服務(wù)程序后執(zhí)行ax=IIR_FCR_EFR_A&0x3f(讀IIR),大多數(shù)情況下INTA腳不能轉(zhuǎn)為低電平,中段不能被復(fù)位,現(xiàn)在問題的癥結(jié)就在這里了。
各位大佬一起幫忙分析一下,多謝!


8樓: >>參與討論
hexiaobo
新進展
昨天又仔細看了芯片手冊,發(fā)現(xiàn)讀寫的有效脈寬必須大于2倍輸入時鐘周期。現(xiàn)有的震蕩器頻率為3.072M,這樣需要的讀寫寬度必須大于670ns,問題就在這里!dsp的主頻40M,在增加了7個讀寫指令周期后,讀寫寬度也只到100ns,遠遠達不到芯片的要求。在換了10M的震蕩器后,讀IIR寄存器可以清除發(fā)送中斷了,F(xiàn)在A口的發(fā)送接收均已正常,B口仍然不能正常操作。其實10M也沒達到手冊的要求時序,由于手頭上沒有更高頻率的震蕩器,因此還要再等等。

9樓: >>參與討論
jake
我們有比TL16C752性價更好的---XR16M752,我們的Data rate(3.3V)可以達到16M,請跟我聯(lián)系:jakelei@baite-group.com  13723775328
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求助:TC35I總是找不到網(wǎng)絡(luò)
SIM300回音問題
那位有電話線插座的pcb封裝圖,手頭上一個在板子上搞不精確
USB線加長以后設(shè)備不能識別,如何解決啊,請教。!
向熟悉無線數(shù)傳模塊的朋友求助!
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號