久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    DND開發(fā)論壇

     瘋狂金屬 2011-05-03

    以文本方式查看主題

    - DND開發(fā)論壇 (http://www./cgi-bin/forum/leoboard.cgi)
    -- (http://www./cgi-bin/forum/forums.cgi?forum=2)
    --- DSP CAN控制器是不是和獨(dú)立控制器不一樣? (http://www./cgi-bin/forum/forums.cgi?forum=2&topic=595)


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 10:41am

    上次winshton大哥說,作為接受節(jié)點(diǎn),如果其標(biāo)識(shí)符做了filter&mask,那么當(dāng)從節(jié)點(diǎn)發(fā)送消息時(shí),接受節(jié)點(diǎn)通過讀自己的標(biāo)識(shí)符,可以知道從節(jié)點(diǎn)的標(biāo)識(shí)符。
    如主機(jī)設(shè)置成可接受任意節(jié)點(diǎn)(全部filter&mask)的消息,當(dāng)從節(jié)點(diǎn)以標(biāo)識(shí)符1000 0000 010 發(fā)過來消息時(shí),主機(jī)讀自己的11位標(biāo)示符,可以讀到1000 0000 010。
     
      可我在DSP 280X里面用mailbox郵箱做實(shí)驗(yàn)室不是這樣的情況:
      郵箱0 做發(fā)送郵箱,標(biāo)識(shí)符設(shè)置成:0000 0000 001  發(fā)送數(shù)據(jù)01H
      郵箱13(任意選的,做接收郵箱)標(biāo)識(shí)符初始化設(shè)置成:1111 1111 111。數(shù)據(jù)初始化為0x0H
    然后設(shè)置郵箱13 的驗(yàn)收濾波全部屏蔽,即可以接受任意11位標(biāo)示符發(fā)過來的消息,結(jié)果是數(shù)據(jù)成功接收,但接受成功后再讀郵箱13的標(biāo)識(shí)符,還是1111 1111 111。沒有變成0000 0000 001.
      我很郁悶,根本標(biāo)識(shí)符不變,這樣的話,郵箱13怎么知道01H是郵箱0發(fā)過來的消息呢? 也沒辦法像兩位版主教我的那樣,通過讀標(biāo)識(shí)符來識(shí)別功能碼+地址碼了
     


    -- 作者: yuanfang
    -- 發(fā)布時(shí)間: 2008/07/08 10:44am

    你能否確定是郵箱13接收了報(bào)文??

    比如郵箱1,郵箱2在default的情況下是不是也是接收模式??是不是數(shù)據(jù)成功接收後放到了郵箱1中,你卻一直去讀郵箱13??

    你的CAN接收是中斷還是查詢方式??如果是中斷,就知道是哪一個(gè)mail box發(fā)生了接收中斷,如果是查詢,也應(yīng)該知道是查到哪一個(gè)mailbox時(shí)有新數(shù)據(jù)。


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 11:21am


    遠(yuǎn)方大哥:
    我只使能了郵箱0 和郵箱13
    其他的我都關(guān)閉了,
    另外,我使用的是中斷方式,也只有mail0 和mailbox13使能了中斷,分別是發(fā)送中斷和接受中斷,切用的不同的中斷響應(yīng)線。我能判斷是只有mail13發(fā)生了接受中斷


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 11:23am

    另外,我還做了試驗(yàn),讓郵箱0發(fā)送成功一次產(chǎn)生一次中斷,同時(shí)發(fā)送數(shù)據(jù)+1,這樣,接受數(shù)據(jù)也會(huì)+1.
    試驗(yàn)結(jié)果一樣 數(shù)據(jù)是接收到了,但I(xiàn)D沒有變呢。呵呵,


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 11:25am

    所以才比較郁悶,這里只有我一個(gè)人搞這個(gè),又是新手,所以問題較多,請(qǐng)版主多多包涵。


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 11:51am

    下面是我的代碼,調(diào)試是成功的,沒有語法錯(cuò)誤,有詳細(xì)的注釋,反正實(shí)際情況就跟我描述的一樣;
    void InitECana(void)// Initialize eCAN-A module
    {EALLOW;// EALLOW enables access to protected bits
    /* Configure eCAN RX and TX pins for eCAN transmissions using eCAN regs*/  
       ECanaRegs.CANTIOC.bit.TXFUNC = 1;
       ECanaRegs.CANRIOC.bit.RXFUNC = 1;  

    ECanaShadow.CANMC.all = ECanaRegs.CANMC.all;
    ECanaShadow.CANMC.bit.SCB = 1;//擴(kuò)展幀模式
    ECanaRegs.CANMC.all = ECanaShadow.CANMC.all;

       ECanaMboxes.MBOX0.MSGCTRL.all = 0x00000000;//初始化
       ECanaMboxes.MBOX17.MSGCTRL.all = 0x00000000;

    //中斷設(shè)置
    ECanaRegs.CANMIM.all=0x00020001;//允許Mail17和Mail0在接收、發(fā)送到信息時(shí)產(chǎn)生中斷
    ECanaRegs.CANMIL.all=0x00000001;//郵箱0在發(fā)送成功后在ECan1INT上產(chǎn)生中斷,郵箱17在接收成功后在ECan0INT上產(chǎn)生中斷

       ECanaShadow.CANGIM.all = 0;
       ECanaShadow.CANGIM.bit.I0EN = 1;   // Enable eCAN1INT or eCAN0INT
    ECanaShadow.CANGIM.bit.I1EN = 1;   // Enable eCAN1INT or eCAN0INT
       ECanaRegs.CANGIM.all = ECanaShadow.CANGIM.all;
     ECanaRegs.CANMD.all=0xFFFF0000;//郵箱屬性設(shè)置,1為接收郵箱,0為發(fā)送郵箱
    /* Disable all Mailboxes  */
    ECanaRegs.CANME.all = 0;// Required before writing the MSGIDs
       
    ECanaLAMRegs.LAM17.all=0x9FFFFFFF;//LAMI=1,LAM[28~0]全部為1,表示全部屏蔽


       EDIS;
    }

    void SelfTest(void)   //實(shí)際測(cè)試函數(shù)
    {
       ECanaMboxes.MBOX0.MSGID.all=0x9555AAA0;
       ECanaMboxes.MBOX17.MSGID.all=0xD5550001;
       ECanaMboxes.MBOX17.MDL.all=0;
       ECanaMboxes.MBOX17.MDH.all=0;

       ECanaMboxes.MBOX0.MSGCTRL.bit.DLC=8;
       ECanaMboxes.MBOX17.MSGCTRL.bit.DLC=8;

        ECanaMboxes.MBOX0.MDL.all = 0x00000001;
        ECanaMboxes.MBOX0.MDH.all = 0x00000000;
    EALLOW;

    ECanaRegs.CANME.all=0x00020001;//允許郵箱0和郵箱17使用

    ECanaRegs.CANMC.bit.STM=1;   //設(shè)置CAN為自測(cè)試模式

    EDIS;

    ECanaLAMRegs.LAM17.all=0x9FFFFFFF;//LAMI=1,LAM[28~0]全部為1,表示全部屏蔽

    for(i=0;i<1000;i++)//循環(huán)做試驗(yàn)
    {  
       
     if(ECanaRegs.CANRMP.all==0x00020000)
    {

      ECanaRegs.CANRMP.all=0x00020000;
    }

         ECanaRegs.CANTA.all = 0xFFFFFFFF;

         ECanaRegs.CANTRS.all = 0x00000001;                      // 允許郵箱0發(fā)送
       
         while(ECanaRegs.CANTA.all != 0x00000001 ) {}            // 等待發(fā)送成功
         ECanaRegs.CANTA.all = 0x00000001;                      // 發(fā)送成功后 復(fù)位 發(fā)送成功標(biāo)志
         loopcount++;

       
       
    }
       
    interrupt void ECana_receive_isr(void)//接收中斷函數(shù)
    {
     

     ReceiveID=ECanaMboxes.MBOX17.MSGID.all;//讀取接收郵箱ID

     ECanaRegs.CANRMP.bit.RMP17=1;//復(fù)位接收成功標(biāo)示,為下一次接收做準(zhǔn)備
     Flagreceive++;     //中斷一次標(biāo)志加1
     
     PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;    // Issue PIE ACK

     }


    interrupt void ECana_send_isr(void)//發(fā)送中斷函數(shù)
    {
     
     Flagsend++;  //中斷一次標(biāo)志加1
     ECanaMboxes.MBOX0.MDL.all++;//同時(shí)發(fā)送數(shù)據(jù)加1
     
     PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;    // Issue PIE ACK

    }



    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 11:55am

    哦,對(duì)了,yuanfang大哥:我讀的是17號(hào)郵箱,上面說舉例時(shí),我說的是13號(hào)郵箱,不過,沒有什么區(qū)別,我也只使能了這兩個(gè)郵箱


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 02:29pm

    我剛才看了devicenet上一個(gè)叫youngerreader的網(wǎng)友發(fā)的那篇關(guān)于2407 CAN功能的文章,知道了其實(shí)DSP的CAN 的郵箱的標(biāo)識(shí)符在啟用濾波的情況下是具備隨發(fā)送節(jié)點(diǎn)的標(biāo)識(shí)符而改變的功能的
     可能是我哪里沒有設(shè)置好,但該設(shè)置的我都設(shè)置了啊!


    -- 作者: winshton
    -- 發(fā)布時(shí)間: 2008/07/08 02:33pm

    看不清楚濾波寄存器和屏蔽寄存器都是用什么表示的,你貼出來的像這樣ECanaLAMRegs.LAM17.all 的變量,我們沒用過不知道是指什么寄存器。
    從程序結(jié)構(gòu)上看倒是沒什么問題。


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 03:55pm

    按照 DSP的寄存器定義:LAM17.31=1:表示接受信息是標(biāo)準(zhǔn)格式或者擴(kuò)展格式,可以使用濾波
                           LAM17.28~0=1:標(biāo)示屏蔽濾波,即無論是1還是0 都可以接受,如果LAM17.18~0=0;標(biāo)示必須與接受郵箱的ID嚴(yán)格匹配才行。


    -- 作者: winshton
    -- 發(fā)布時(shí)間: 2008/07/08 04:00pm

    我覺得還是軟件設(shè)置上的問題,可以到網(wǎng)上找一找CAN接口的測(cè)試代碼來試試,比較一下看看設(shè)置有什么不同


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 04:39pm

    a !!
    我突然覺得可能是我一直在 自測(cè)試模式下 做的試驗(yàn),結(jié)果不成功。有沒有這個(gè)可能呢?可惜我沒有兩塊硬件做實(shí)驗(yàn),不然可以驗(yàn)證一下

    因?yàn)樵贒SP CAN 文檔里有這樣一句話:
    “在自測(cè)試工作模式下,CAN模塊產(chǎn)生自己的應(yīng)答信號(hào),不連接到總線上也可以工作,消息不發(fā)送,但讀取回來存放在相應(yīng)的郵箱里,接收到的消息的MSGID不保存在MBR”
     因?yàn)镸SGID剛好是包含消息ID的寄存器,這樣的話,就不保存了


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/08 06:56pm

    但是我不能確認(rèn)一定就是這里出現(xiàn)了問題,我沒有設(shè)備可以試。
    如果真是這里有問題就好了,今天打電話聯(lián)系TI在中國的技術(shù)支持,那里的幾個(gè)工程師一口咬定說DSP 里面CAN不能支持上述功能,即不能獲取收到消息的ID,一旦每個(gè)郵箱的ID設(shè)置好,即使使用了屏蔽濾波,也是只能收消息,但郵箱本身的ID不會(huì)改變。
       真把我郁悶得要死,我在想,如果DSP里面的CAN模塊不能支持這些功能,不能支持對(duì)標(biāo)識(shí)符的解析,那CANopen 這些上層協(xié)議在DSP面前也無能為力了。


    -- 作者: winshton
    -- 發(fā)布時(shí)間: 2008/07/09 08:01am

    看芯片手冊(cè)上怎么說,不支持接收ID獲取還是符合CAN協(xié)議標(biāo)準(zhǔn)的CAN控制器么?TI的芯片設(shè)計(jì)師不會(huì)腦殘到這種地步吧


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/09 09:02am

    的確他們這樣跟我說,我還專門找了幾個(gè)不同的人問,說不行,要發(fā)送廣播信息,就要一個(gè)一個(gè)的發(fā),不就是廣播了嗎?有一個(gè)這樣說。
    恩,搞得我真是……。
    過了一會(huì)另一個(gè)打電話過來說,他說他做實(shí)驗(yàn)了,不行。我說網(wǎng)上都有人用24系列的做成了,都那樣用了,他說不知道,他做實(shí)驗(yàn)的結(jié)果是不行。
    后來,我問是不是自測(cè)試模式下不行,他說不清楚,他之前也是在自測(cè)試模式下做的,要另做實(shí)驗(yàn)才知道,再給我電話。
      芯片上說明了支持CAN2.0A&B協(xié)議的標(biāo)準(zhǔn)CAN控制器的。是不是只要是支持這協(xié)議就必定具備這功能?winshton大哥?
      芯片手冊(cè)上沒有說不支持接受ID獲取,當(dāng)然也沒有明說支持。
      只說自測(cè)試模式下,MSGID不保存到MBR中,但他也沒說MBR是什么東西,整個(gè)手冊(cè)里就出現(xiàn)MBR一次。


    -- 作者: winshton
    -- 發(fā)布時(shí)間: 2008/07/09 01:49pm

    那就在正常模式下試試,兩個(gè)CAN節(jié)點(diǎn)對(duì)發(fā),看看什么結(jié)果.
    MBR 有可能是 Memory buffer register   緩沖區(qū)的意思


    -- 作者: yuanfang
    -- 發(fā)布時(shí)間: 2008/07/09 06:24pm

    不會(huì)吧,收到了報(bào)文,但卻沒有標(biāo)識(shí)符?我覺得是TI的這個(gè)工程師對(duì)CAN的功能不太熟悉,總的感覺不太可能有這樣的設(shè)計(jì)。
    我知道Infineon的做法是這樣的,即只有一個(gè)mask寄存器,一般的還有一個(gè)專門的Filter寄存器,如果Mask被設(shè)置了,則要看Filter寄存器的值來比對(duì)。

    但I(xiàn)nfineon的CAN就是只設(shè)置Mask寄存器,而Filter寄存器設(shè)置在接收緩沖區(qū)的ID裡面,如果每個(gè)位都被設(shè)置為要比對(duì),那就是接收緩沖區(qū)的ID永遠(yuǎn)也不會(huì)變,因?yàn)椴灰粯拥腎D進(jìn)不來,進(jìn)來了就是一樣的,但如果不是每個(gè)位都mask,那就是變化。


    -- 作者: ccforever
    -- 發(fā)布時(shí)間: 2008/07/10 10:20am

    是的,后來我收到了TI的一封郵件,說正常模式下可以實(shí)現(xiàn)接受ID隨發(fā)送報(bào)文ID而改變的功能。
     呵呵,哎,終于弄清楚了……
    謝謝版主

     


    © 版權(quán)所有: DNDev.COM  版本: LB5000MX 2.00

      本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
      轉(zhuǎn)藏 分享 獻(xiàn)花(0

      0條評(píng)論

      發(fā)表

      請(qǐng)遵守用戶 評(píng)論公約

      類似文章 更多

      主站蜘蛛池模板: 国产欧美成人XXX视频| 秋霞电影院午夜无码免费视频| 国产午精品午夜福利757视频播放 国产午夜亚洲精品国产成人 | 久久五月丁香合缴情网| 久久精品国产久精国产一老狼| 99久久精品国产一区二区蜜芽| 国产精品自在自线视频| 精品久久人妻AV中文字幕| 亚洲国产良家在线观看| 国产精品亚洲一区二区三区喷水 | 亚洲精品爆乳一区二区H| 欧美不卡无线在线一二三区观 | 亚洲欧洲精品日韩av| 日韩A人毛片精品无人区乱码| 国产福利深夜在线观看| 粗大的内捧猛烈进出小视频| 色一情一乱一伦麻豆| 日韩在线视频观看免费网站| 国产性一交一乱一伦一色一情| 国产激情电影综合在线看| 亚洲精品一区二区妖精| 88国产精品欧美一区二区三区 | 国产裸体XXXX视频在线播放| 国产精品久久蜜臀av| 日产无人区一线二线三线乱码蘑菇| 免费AV片在线观看网址| 国产精品情侣呻吟对白视频| 无码人妻丰满熟妇区五十路在线| 美女自卫慰黄网站| 国产成人乱色伦区| 国色天香成人一区二区| 日本道精品一区二区三区| 亚洲另类精品无码专区| 国产美女自卫慰黄网站| 男女xx00上下抽搐动态图| 国产亚洲精品国产福APP| 被公疯狂玩弄的年轻人妻| 一区二区三区激情都市| 亚洲AV无码专区在线电影天堂| 国产精品福利自产拍在线观看| 日韩免费视频一一二区|