新聞中心

基于dsPIC33FJ128MC506的CAN通信(07-100)

——
作者:山東省科學(xué)院自動(dòng)化研究所 張?jiān)?李明強(qiáng) 莊汝科 時(shí)間:2009-03-04 來(lái)源:電子產(chǎn)品世界 收藏

  C1CTRL1bits.REQOP=4;

本文引用地址:http://m.butianyuan.cn/article/92042.htm

  while(C1CTRL1bits.OPMODE!=4); //請(qǐng)求進(jìn)入配置模式

  ecan1ClkInit(); //調(diào)用波特率設(shè)置函數(shù)

  C1FCTRLbits.DMABS=0b000; //在DMA RAM 中設(shè)置4個(gè)報(bào)文緩沖

  ecan1WriteRxAcptFilter(1,0x36,0,2,0); //配置接過(guò)收濾寄存器

  /*配置接收屏蔽寄存器,要注意的是,這里設(shè)為“1”的位是非屏蔽位,設(shè)為“0”的位為屏蔽位。這里的0x7FF將會(huì)對(duì)標(biāo)準(zhǔn)幀ID的每一位都進(jìn)行檢查是否對(duì)應(yīng)的過(guò)濾器相匹配*/

  ecan1WriteRxAcptMask(0,0x7ff,0);

  C1CTRL1bits.REQOP=0;

  while(C1CTRL1bits.OPMODE!=0); //進(jìn)入正常模式

  /*以下語(yǔ)句設(shè)置報(bào)文的發(fā)射接收控制*/

  C1RXFUL1=C1RXFUL2=C1RXOVF1=C1RXOVF2=0x0000;

  C1TR01CONbits.TXEN0=1; /*E1的0緩沖器為發(fā)射緩沖 */

  C1TR01CONbits.TXEN1=0; /* ECAN1的1緩沖器為接收緩沖 */

  C1TR01CONbits.TX0PRI=0b11; /* 發(fā)射緩沖的優(yōu)先級(jí)*/

  }

  數(shù)據(jù)的發(fā)射和接收

  寫(xiě)報(bào)文ID

  下面的函數(shù)將一個(gè)報(bào)文ID寫(xiě)到ECAN1的發(fā)射緩沖區(qū),其中各個(gè)參數(shù)代表的含義如下:

  /*buf -> 發(fā)射寄存器號(hào)

  txIdentifier ->發(fā)射報(bào)文的ID

  ide -> "0" 報(bào)文為標(biāo)準(zhǔn)幀

  "1" 報(bào)文為擴(kuò)展幀

  remoteTransmit -> "0" 報(bào)文為正常報(bào)文

  "1" 報(bào)文為遠(yuǎn)程報(bào)文 */

  void ecan1WriteTxMsgBufId(unsigned int buf, long txIdentifier, unsigned int ide, unsigned int remoteTransmit)

  {



關(guān)鍵詞: CAN TJA1054 dsPIC33FJ128MC506

評(píng)論


技術(shù)專(zhuān)區(qū)

關(guān)閉