新聞中心

EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于dsPIC33FJ128MC506的CAN通信(07-100)

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

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

  DMA2通道初始化為E1接收:

本文引用地址:http://www.2s4d.com/article/92042.htm

  void dma2init(void)

  {

  DMACS0=0; //清DMA控制器狀態(tài)位

  DMA2CON=0x0020; //DM為外設(shè)間接尋址模式,支持從DMA寫,并讀到外設(shè)

  DMA2PAD=0x0440; //DMA0PAD下載為E1接收寄存器的地址

  DMA2CNT=0x0007; //傳輸計(jì)數(shù)寄存器為8

  DMA2REQ=0x0022; //DMA外設(shè)REQ編號(hào)選擇位

  DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); //DMA起始地址位

  DMA2CONbits.CHEN=1;

  }

  上面程序中的“DMA0STA= __builtin_dmaoffset(ecan1msgBuf);”和“ DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); ”分別指明了DMA的起始地址位為ecan1msgBuf和(&ecan1msgBuf[2][0],ecan1msgBuf是一個(gè)兩維數(shù)組,在相關(guān)頭文件中定義,其語(yǔ)句為:

  E1緩沖器的設(shè)置:

  #define ECAN1_MSG_BUF_LENGTH 4 //長(zhǎng)度為4個(gè)字

  //緩沖區(qū)為二維數(shù)據(jù)

  typedef unsigned int ECAN1MSGBUF [ECAN1_MSG_BUF_LENGTH][8];

  //數(shù)組位于DMA空間

  extern ECAN1MSGBUF ecan1msgBuf __attribute__((space(dma)));



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

評(píng)論


技術(shù)專區(qū)

關(guān)閉