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

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

愿意討論can的filter過(guò)濾器嗎

作者:zbby 欄目:單片機(jī)
愿意討論can的FILTER過(guò)濾器嗎
can的腦袋長(zhǎng)達(dá)11(bit)或29(bit)
都被我拿來(lái)當(dāng)命令位了,
我用的是18f258(can連接)16f876a+2510
想讓can自動(dòng)套用各個(gè)過(guò)濾器來(lái)識(shí)別我的各個(gè)命令,
因?yàn)樗?個(gè)過(guò)濾器
但看到它的rb0con寄存器的
bit 1 JTOFF: Jump Table Offset bit (read ONLY copy of RX0DBEN)
1 = Allows Jump Table offset between 6 and 7
0 = Allows Jump Table offset between 1 and 0
Note: This bit allows same FILTER jump table for both RXB0CON and RXB1CON.
bit 0 FILHIT0: FILTER Hit bit
This bit indicates which acceptance FILTER enabled the message reception into Receive Buffer 0
1 = Acceptance FILTER 1 (RXF1)
0 = Acceptance FILTER 0 (RXF0)
這兩位,好像只是允許在FILTER0,和FILTER1之間切換,而如果你看SJA1000的說(shuō)明,他說(shuō)它的FILTER就32位:要么你開(kāi)一個(gè)32位的,要么你開(kāi)兩個(gè)FILTER,但每個(gè)只用16(bit)有效,但沒(méi)說(shuō)那16位,如何對(duì)應(yīng)can腦袋上的各個(gè)bit位;

另外在18的REGISTER 19-13: RXB1CON – RECEIVE BUFFER 1 CONTROL REGISTER
bit 2-0 FILHIT2:FILHIT0: FILTER Hit bits
These bits indicate which acceptance FILTER enabled the last message reception into Receive
Buffer 1
111 = Reserved
110 = Reserved
101 = Acceptance FILTER 5 (RXF5)
100 = Acceptance FILTER 4 (RXF4)
011 = Acceptance FILTER 3 (RXF3)
010 = Acceptance FILTER 2 (RXF2)
001 = Acceptance FILTER 1 (RXF1) ONLY possible when RXB0DBEN bit is set
000 = Acceptance FILTER 0 (RXF0) ONLY possible when RXB0DBEN bit is set
這里又允許你指定6個(gè)里的一個(gè)有效?
我就不懂了,rxf5是8(比特),一個(gè)有效,不夠長(zhǎng)阿,不能把腦袋都罩住,
還是你將所有的FILTER(6個(gè))都設(shè)上,然后can會(huì)自己在這幾個(gè)FILTER里自己找看看,來(lái)的信息適用哪個(gè)FILTER,就讓他通過(guò)。


2樓: >>參與討論
zbby
同時(shí)對(duì)于MICROCHIP的00738b文檔
同時(shí)對(duì)于MICROCHIP的00738b文檔(18can的例程)設(shè)置傳送優(yōu)先級(jí)的地方不懂
BOOL CANSendMessage(unsigned LONG id,
                     BYTE* Data,
                     BYTE DataLen,
                     enum CAN_TX_MSG_FLAGS MsgFlags)
{
    BYTE i;
    BYTE *ptr;
    // Find the first empty transmitter.
    if ( TXB0CON_TXREQ == 0 )
    {
        // TxBuffer0 is empty.  Set WIN bits to point to TXB0
        CANCON &= 0b11110001;
        CANCON |= 0b00001000;
    }
    else if ( TXB1CON_TXREQ == 0 )
    {
        // TxBuffer1 is empty. Set WIN bits to point to TXB1
        CANCON &= 0b11110001;
        CANCON |= 0b00000110;
    }
    else if ( TXB2CON_TXREQ == 0 )
    {
        // TxBuffer2 is empty. Set WIN bits to point to TXB2
        CANCON &= 0b11110001;
        CANCON |= 0b00000100;
    }
    else
        // None of the transmit buffers were empty.
        return CANFALSE;

    /*
     * Now that WIN has remapped RXB0 to empty buffer, simply
     * populate RXB0 buffer
     */

  //2003/05/20 zby 對(duì)于這里十分不懂
     //傳輸?shù)膬?yōu)先級(jí)怎么設(shè)置到rx的寄存器里面了?
    //而且對(duì)應(yīng)的兩位是bit 1 JTOFF: Jump Table Offset bit //(read ONLY copy of RX0DBEN)
//Note: This bit allows same FILTER jump table for both //RXB0CON and RXB1CON.
//bit 0 FILHIT0: FILTER Hit bit
//This bit indicates which acceptance FILTER enabled the //message reception into Receive Buffer 0
// Set transmit priority.
    RXB0CON = MsgFlags & CAN_TX_PRIORITY_BITS;


    // Populate Extended identifier information ONLY if it is
    // desired.
    if ( !(MsgFlags & CAN_TX_FRAME_BIT) )
        CANIDToRegs((BYTE*)&RXB0SIDH, id, CAN_CONFIG_XTD_MSG);
    else
        CANIDToRegs((BYTE*)&RXB0SIDH, id, CAN_CONFIG_STD_MSG);

    RXB0DLC = DataLen;

    if ( !(MsgFlags & CAN_TX_RTR_BIT) )
        RXB0DLC |= 0b01000000;

    // Populate data values.
    ptr = (BYTE*)&RXB0D0;
    for ( i = 0; i < DataLen; i++ )
        ptr[i] = Data[i];

    /*
     * Mark this buffer as ready to start transmit.
     * We are not using C bit field structure because RXB0 registers
     * are remapped to one of the empty transmit buffers and their
     * bit3 is not same as RXB0CON bit3.  To avoid confusion, in-line
     * assembly is used to directly set bit 3 of corresponding TXBnCON
     * register.
     */
#if defined(MCHP_C18)
     _asm
     bsf RXB0CON, 3, 0
    _endasm
#endif
#if defined(HITECH_C18)
       asm("bsf _RXB0CON,3");
#endif

    /*
     * Restore CAN buffer mapping so that subsequent access to RXB0
     * buffers are to the real RXB0 buffer.
     */
    CANCON &= 0b11110001;

    return CANTRUE;
}



   

3樓: >>參與討論
張明峰
請(qǐng)仔細(xì)閱讀數(shù)據(jù)手冊(cè)
就你第二個(gè)問(wèn)題我剛剛回答了一個(gè)用戶。答案在數(shù)據(jù)手冊(cè)DS41159A-Page191。

看CANCON寄存器的WIN2:WIN0位的意義。

4樓: >>參與討論
zbby
microchip.com網(wǎng)站可以下載那個(gè)文檔
你用那個(gè)名字查一下即可

5樓: >>參與討論
zbby
如何配置bit時(shí)間?

環(huán)境:18f258(自帶can)4MHZ16F876+2510(11.0592MHZ)聯(lián)絡(luò)
      我要求的設(shè)置是
      bit空間  Sjw   p     p1     p2
                1    1     4      4
      波特率 125k

      根據(jù)公式求預(yù)分頻數(shù)
      128'BPR  = 1.6 - 1 = 0.6;
      2510'sBPR = 4.42368 - 1 = 3.42368

     由于向寄存器寫入的時(shí)候必須是個(gè)整數(shù),
     我向128寫入0
         876寫入3
問(wèn)3。42368取3對(duì)還是取4對(duì)
0。6取0對(duì),還是取1對(duì)?

另外:如何利用示波器看出波特率?
      我的2510的第三腳輸出為11MHz,這正常嗎?

另外:我不知道為什么我不能在MICROCHIP的800-820-6247免費(fèi)技術(shù)支持電話那里產(chǎn)生中斷(今天總是接不通),可能優(yōu)先級(jí)太低,希望能打進(jìn)的朋友幫我問(wèn)一問(wèn)我這里的問(wèn)題。

另外:也希望同行能打我的電話0412-8227088/8227188/8227288轉(zhuǎn)8054 指導(dǎo)指導(dǎo),討論討論,研究研究 ,關(guān)于pic&&can!



zby 

6樓: >>參與討論
zbby
193頁(yè)我看了,還是沒(méi)懂,感謝張工。
This SELECTs which of the CAN buffers to SWITCH into the access bank area. This allows access
to the buffer registers from any data MEMORY bank. After a frame has caused an interrupt, the
ICODE3:ICODE0 bits can be copied to the WIN3:WIN0 bits to SELECT the correct buffer. See
Example 19-1 for code example.

這里是選擇哪個(gè)can緩沖跳接到接入點(diǎn),這將允許任何數(shù)據(jù)bank進(jìn)入這個(gè)緩沖寄存器,在幀正常接收引發(fā)中斷以后,icode3:icdpde0 這4個(gè)bit將被拷貝到win3:win0這4個(gè)bit位,以選擇正確的緩沖區(qū)。
具體看例子19-1(匯編的)

感謝張工。

7樓: >>參與討論
zbby
我的2510初始化
SPI_BitMod(CANCTRL, 0x07, 0x04);  

SPI_Write(CNF1,0x03);   //
  SPI_Write(CNF2,BTLMODE_CNF3 + PRSEG_4TQ);
  SPI_Write(CNF3,PHSEG2_4TQ);   


//2003/05/22 zby 關(guān)閉RB1
  SPI_Write(RXM1SIDH, 0xFF);        //屏蔽標(biāo)識(shí)符高位
  SPI_Write(RXM1SIDL, 0xFF);              //屏蔽標(biāo)識(shí)符低位
  
  SPI_Write(RXM1EIDH, 0xFF);          //屏蔽擴(kuò)大高位
  SPI_Write(RXM1EIDL, 0xFF);            //屏蔽擴(kuò)大低位
  
  SPI_Write(RXF2SIDH, 0xFF);          //過(guò)濾器標(biāo)識(shí)符高位
  SPI_Write(RXF2SIDL, 0xFF);          //過(guò)濾器標(biāo)識(shí)符低位
  SPI_Write(RXF2EIDH, 0xFF);          //過(guò)濾器擴(kuò)大高位
  SPI_Write(RXF2EIDL, 0xFF);          //過(guò)濾器擴(kuò)大低位


SPI_BitMod(RXB1CTRL,0xFF, 0x02);      //置接收緩沖區(qū)1控制位//接受所有成幀的幀//2003/05/20 但除了111111。。。。1111之外都進(jìn)不來(lái)


8樓: >>參與討論
zbby
18258 can的初始化
18258 can的初始化

CANInitialize(1,1,4,4,1,CAN_CONFIG_DEFAULT);





9樓: >>參與討論
net_boy
zbby老大,我較熟悉51系列,但我有一個(gè)項(xiàng)目
是和CANBUS有關(guān)的,本想選擇P8XC591做,但價(jià)格較高57元(人民幣),不知你選用的帶CAN的PIC芯片有何特點(diǎn),價(jià)格怎樣?你能否指點(diǎn)我一下?如果行的話我就要選PIC的芯片來(lái)做了。

10樓: >>參與討論
zbby
我的can通訊了!
下午microchip.com上?偛康800電話打通了,經(jīng)不知名的高手指點(diǎn)(我的毛病在兩邊波特率偏差太大),終于在下班之前的1個(gè)小時(shí),can通訊了,
經(jīng)過(guò)我編程測(cè)算,在tq和〉8 < 12 ;如果要求波特率介于9600 至125000hz,而且兩邊的波特率偏差小于250Hz,只有一個(gè)組合結(jié)果:
就是波特率定在45。7kHz,tqROOM組成為1:1:5:4(總和長(zhǎng)11tq)

11樓: >>參與討論
zbby
我的can總線通訊波特率配置參數(shù)生成程序的原語(yǔ)
總公式:boundrate = fosc /(2*all_tq*bpr)

//給出參數(shù)部分
node 甲:fosc1
node 乙:fosc2
要求甲的預(yù)分頻數(shù):起點(diǎn)  ,終點(diǎn)
要求乙的預(yù)分頻數(shù):起點(diǎn)  ,終點(diǎn)
兩者共同的tq和的:起點(diǎn)  ,終點(diǎn)
允許(或期望)兩點(diǎn)波特率的頻率誤差(比如200Hz 允許)
波特率期望范圍(比如9600 - 125000Hz)

//計(jì)算部分
甲的bpr1 起點(diǎn)-終點(diǎn)  步長(zhǎng)1 循環(huán)
    嵌套乙的bpr2 起點(diǎn) - 終點(diǎn) 步長(zhǎng) 1 循環(huán)
         嵌套兩點(diǎn)共同的tq和 起點(diǎn) - 終點(diǎn) 步長(zhǎng)1 循環(huán)
              
                     每次循環(huán)都計(jì)算
                     node 甲的 boundrate1
                     node 乙的 boundrate2
                     兩者差 boundrate1 - boundrate2
                        
                     判斷條件
                         (差  小于  允許值)
                         (波特率在你的要求范圍之內(nèi))
                      滿足:
                               打印當(dāng)前的 bpr1 ,bpr2

,tq
                      否則:
                              循環(huán)繼續(xù)



這樣今后can的波特率配置都不用手工計(jì)算了,十分方便,也十

分準(zhǔn)確。

12樓: >>參與討論
zbby
在廠子我是個(gè)干活的
價(jià)格真是不知道,
用的是PIC18F258,我寫在上面了吧。
具體你可以到MICROCHIP下載一個(gè)datasheet看看

13樓: >>參與討論
zbby
另外關(guān)于can的過(guò)濾器,我反復(fù)想求證的一件事
一個(gè)消息從can總線上來(lái),會(huì)被兩個(gè)過(guò)濾器過(guò)濾嗎?

我認(rèn)為只能有一個(gè)過(guò)濾器,就是這個(gè)消息一次只能經(jīng)過(guò)一個(gè)過(guò)濾器,要么成功被接受,要么被REJECT.

所以懇請(qǐng)幫助澄清是否會(huì)一次通過(guò)兩個(gè)過(guò)濾器?
尤其是會(huì)不會(huì)被filter0 ,filter1 過(guò)濾,因?yàn)槲夷D:浀煤孟裼幸粋(gè)寄存器變量可以打開(kāi)filter0,filter1的切換允許!就是當(dāng)filter0失敗時(shí),自動(dòng)調(diào)用filter1來(lái)過(guò)濾本次的消息。

f18258,2510有沒(méi)有這個(gè)自動(dòng)切換功能?

消息到底被幾個(gè)過(guò)濾器過(guò)濾?

14樓: >>參與討論
農(nóng)夫XP
過(guò)濾器也有個(gè)先后問(wèn)題阿。。
先過(guò)濾,,如果成功就不會(huì)往下發(fā)送了。。直接得到過(guò)濾器編號(hào)。。

結(jié)構(gòu)圖上的過(guò)濾器的箭頭就這個(gè)意思吧。。

15樓: >>參與討論
zbby
我從MICROCHIP上海。800得到的消息是
一個(gè)消息一次只經(jīng)過(guò)一個(gè)過(guò)濾器的過(guò)濾(相對(duì)于rxb0,rxb1而言)。

而在我們李工的實(shí)踐中,在rxb0緩存上設(shè)立了兩個(gè)過(guò)濾器。好像都發(fā)揮了作用,即開(kāi)啟了filter0 ,filter1 分別過(guò)濾消息和廣播,成功了。
這不是說(shuō)明一個(gè)消息至少經(jīng)過(guò)了兩個(gè)過(guò)濾器了嗎?

所以說(shuō)是否有一個(gè)機(jī)制可以讓消息經(jīng)過(guò)所有的過(guò)濾器,只要符合其中一個(gè)就接收?

我越來(lái)越糊涂了!。。。

16樓: >>參與討論
張明峰
我的理解
收到的消息會(huì)讓所有過(guò)濾器過(guò)濾(RXB0=>0/1,RXB1=>2/3/4/5),具體經(jīng)過(guò)哪個(gè)過(guò)濾器會(huì)體現(xiàn)在寄存器RXBnCTRL的FILHIT位。你的試驗(yàn)即驗(yàn)證了此點(diǎn)。

17樓: >>參與討論
zbby
you are right
i just now learn the knowledge .

看起來(lái),還是文檔沒(méi)有看仔細(xì)。



參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
鉛酸電池容量怎么檢測(cè)???那個(gè)網(wǎng)站可以查到電池放電曲線!
關(guān)于RB中斷的問(wèn)題
愿意討論一下關(guān)于枚舉參數(shù)的引用嗎?
一個(gè)picc的連接錯(cuò)誤!
誰(shuí)有pic的關(guān)于I2C的中文資料
免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)