新聞中心

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

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

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

  DMA2通道初始化為E1接收:

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

  void dma2init(void)

  {

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

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

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

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

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

  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是一個兩維數(shù)組,在相關(guān)頭文件中定義,其語句為:

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

  #define ECAN1_MSG_BUF_LENGTH 4 //長度為4個字

  //緩沖區(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

評論


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

關(guān)閉