基于dsPIC33FJ128MC506的CAN通信(07-100)
—— 基于dsPIC33FJ128MC506的CAN通信
ECAN接收和發(fā)射緩沖區(qū)的設(shè)置
本文引用地址:http://m.butianyuan.cn/article/92042.htmDMA(直接存儲器訪問)方式是外設(shè)SFR與RAM間進(jìn)行數(shù)據(jù)復(fù)制的非常高效的機(jī)制,dsPIC33FJ128MC506的ECAN模塊支持DMA傳輸,共有8個(gè)DMA通道可供選擇。在此我們選用0和2通道分別作為ECAN1的發(fā)射和接收。初始化語句如下:
DMA0通道初始化為ECAN1發(fā)射:
void dma0init(void)
{
DMACS0=0; //清DMA控制器狀態(tài)位
DMA0CON=0x2020; //DMA為外設(shè)間接尋址模式,支持從DMA讀,并寫到外設(shè)
DMA0PAD=0x0442; //DMA0PAD下載為ECAN1發(fā)射寄存器的地址
DMA0CNT=0x0007; //傳輸計(jì)數(shù)寄存器為8
DMA0REQ=0x0046; //DMA外設(shè)REQ編號選擇位
DMA0STA= __builtin_dmaoffset(ecan1msgBuf); //DMA起始地址位
DMA0CONbits.CHEN=1;
}
評論