浮點(diǎn)系列芯片ADSP2116中DMA的應(yīng)用
來源:IC解密中的DMA2.1 ADSP2116中DMA的數(shù)據(jù)傳輸類型
ADSP2116中的DMA包含14條獨(dú)立通道,可完成下列類型的數(shù)據(jù)傳輸操作:
●片內(nèi)存儲(chǔ)器與片外存儲(chǔ)器或片外設(shè)備之間的傳輸操作;
●片內(nèi)存儲(chǔ)器與其它ADSP2116的片內(nèi)存儲(chǔ)器之間的傳輸操作;
●片內(nèi)存儲(chǔ)器與主處理器之間的傳輸操作;
●片內(nèi)存儲(chǔ)器與串行口之間的傳輸操作;
●片內(nèi)存儲(chǔ)器與Link口之間的傳輸操作;
●片內(nèi)存儲(chǔ)器與SPI口之間的傳輸操作;
●片外存儲(chǔ)器與片外設(shè)備之間的傳輸操作。
2.2 ADSP2116 中與DMA有關(guān)的寄存器
DMA的編程實(shí)際上是通過內(nèi)部核心處理單元或外部主機(jī)對(duì)片內(nèi)有關(guān)的I/O寄存器設(shè)置來完成的,與DMA有關(guān)的I/O寄存器如表1所列??刂萍拇嫫髦饕脕碓O(shè)置數(shù)據(jù)傳輸?shù)姆较颉?shù)據(jù)格式、是否鏈?zhǔn)降炔僮?;參?shù)寄存器用來設(shè)置數(shù)據(jù)傳輸?shù)牡刂?、?shù)目等信息;數(shù)據(jù)緩存器則主要用來緩存?zhèn)鬏數(shù)臄?shù)據(jù),以提高數(shù)據(jù)的傳輸率。這些I/O寄存器都被映射到片內(nèi)存儲(chǔ)器的前256個(gè)地址上。
2.3 ADSP2116中DMA一般傳輸過程的設(shè)置
DMA一般傳輸過程的設(shè)置步驟如下:
(1)設(shè)置對(duì)應(yīng)通道的參數(shù)寄存器
(2)設(shè)置對(duì)應(yīng)通道的DMA控制寄存器,并將其中的DMA使能位設(shè)為有效
(3)開始DMA數(shù)據(jù)傳輸
(4)DMA傳輸結(jié)束后,產(chǎn)生對(duì)應(yīng)的中斷,并通過程序?qū)χ袛噙M(jìn)行處理。
2.4 ADSP2116x中的鏈?zhǔn)剑模停?BR> 為了減少由DMA引起的中斷,ADSP2116x中的DMA控制器提供了鏈?zhǔn)剑模停凉δ?。所謂鏈?zhǔn)剑模停?,是指在?dāng)前的DMA結(jié)束時(shí),I/O處理器能夠自動(dòng)加載DMA參數(shù)并開始下一個(gè)DMA傳輸。利用這種特性,程序能夠設(shè)置多個(gè)具有不同屬性的DMA傳輸。在鏈?zhǔn)剑模停吝^程中,通常先把每次DMA傳輸?shù)挠嘘P(guān)參數(shù)寫成一個(gè)傳輸控制塊(TCB),并把它們存儲(chǔ)在片內(nèi)。傳輸過程中,在當(dāng)前的DMA結(jié)束時(shí),I/O處理器將對(duì)鏈?zhǔn)街羔樇拇嫫鳎ǎ茫校┻M(jìn)行控制以使其指向存儲(chǔ)在片內(nèi)的下一個(gè)TCB。
CPx在鏈?zhǔn)剑模停林芯哂蟹浅V匾淖饔?,它是一個(gè)19位的寄存器,其中低18位是偏移地址,在ADSP2116x中,這組偏移地址加上0x00040000后才是片內(nèi)存儲(chǔ)器中的實(shí)際地址,其中最高一位為中斷控制位。該位在被設(shè)置的情況下,I/O處理器將在鏈?zhǔn)剑模停两Y(jié)束時(shí)產(chǎn)生一個(gè)中斷,實(shí)際上CPx指向的是TCB的最大地址,在TCB中,各有關(guān)DMA參數(shù)寄存器的排列順序如表2所列。表中的“x”代表所用到的DMA通道。鏈?zhǔn)剑模停羵鬏斶^程的設(shè)置步驟如下:
(1)在片內(nèi)存儲(chǔ)器中設(shè)置好所有的TCB
(2)設(shè)置對(duì)應(yīng)通道的控制寄存器,并將其中的DMA使能位和鏈?zhǔn)绞鼓芪辉O(shè)為有效
(3)將第一個(gè)TCB的最大地址寫到CPx中,并開始鏈?zhǔn)剑模停恋膫鬏?BR>(4)傳輸結(jié)束后,產(chǎn)生對(duì)應(yīng)的中斷。
有兩點(diǎn)要特別注意:第一是鏈?zhǔn)剑模停林荒馨l(fā)生在同一DMA通道內(nèi);二是SPI口不支持鏈?zhǔn)剑模停痢?/FONT>