3. Functions and Operations of DMACในส่วนนี้อธิบายถึงการทำงานของ DMAC ในแตละ transfer mode.
3.1 Software-Block Transfer
3.2 Software-Burst Transfer
3.3 Hardware-Demand Transfer
3.4 Hardware-Block Transfer & Burst Transfer
3.5 Channel Priority Control
3.1. Software-Block Transferในส่วนนี้อธิบาย Software-Block transfer.
รูปที่ 3-1 โชว์ตัวอย่างการทำงานของ Software-Block transfer. ในรูปที่ 3-1, ใช้การเซตดังต่อไปนี้
- Transfer mode : Software request Block transfer (ST=1, IS[5:0]=000000, MS=00)
- Transfer source start address : SA(DMACSA=SA)
- Transfer source address control : Increment and reload available (FS=0, RS=1) (ใช้งานการเพิ่มและโหลดค่าซ้ำ)
- Transfer destination start address : DA(DMACDA=DA)
- Transfer destination address control : Increment and reload not available (FD=0, RD=0) (ไม่ใช้งานการเพิ่มและโหลดค่าซ้ำ)
- Transfer data size : Half-word (16 bits), the number of blocks = 2, the number of transfers = 3 (TW=01, BC=1, TC=2)
- BC/TC reload : Reload available (RC=1) (ใช้งานโหลดค่าซ้ำ)

DMAC กระทำการทำงานดังต่อไปนี้, เมื่อข้อมูลการ transfer นี้ถูกเซตจาก CPU และจากนั้นการสตาร์ทของการ transfer ถูกสั่งขึ้น
- เนื่องจากการระบุสเปคของ transfer data width นี้, แต่ละ transfer จะถูกกระทำโดย half-word (16 bits)
- สอดคล้องกันกับ start addresses ของ transfer source และ transfer destination, การระบุสเปคของ data width และการเพิ่มขึ้น/คงที่, การ transfer
จะถูกกระทำใน area นี้ จาก address SA ไปหา address DA, เป็นจำนวน blocks (=BC+1)
- ในกรณีของ Block transfer, ช่องว่างระหว่างการ transfer (Transfer Gap) เกิดขึ้นทุกๆเวลาที่การ transfer บล๊อคหนึ่งเสร็จสมบรูณ์
. - DMAC กระทำ data transfer เป็นจำนวนของบล็อค (=BC+1) คูณจำนวนของ transfers (=TC+1). ขนาดของ data ที่ถูก transfer โดยแต่ละ transfer ที่
ร้องขอจาก CPU คือ "Data width (TW) x Number of blocks (BC+1) x Number of transfers (TC+1)".
- เมื่อการ transfer เสร็จสมบรูณ์แล้ว DMAC แจ้ง CPU ให้ทราบถึงการเสร็จสมบรูณ์นั้น
- ถ้าการสตาร์ทของ transfer ถูกสั่งขึ้นอีกครั้งหลังจากการ transfer เสร็จสมบรูณ์, การ transfer จะถูกสตาร์ทขึ้นใหม่จาก transfer start address (SA+0) อัน
ก่อนหน้า, เพราะว่า transfer source address ได้ถูกเซตไว้เป็นให้โหลดซ้ำ(reload)(RS=1). ในขณะที่ transfer destination address ไม่ได้ถูกระบุไว้เป็น
ให้โหลดซ้ำ (RD=0), การ transfer จะถูกสตาร์ทจากแอดเดรสถัดไป (DA+12) หลังจากแอดเดรสที่จบลงในการ transfer ก่อนหน้า พร้อมทั้งขณะที่การโหลดซ้ำ
ของ BC/TC ถูกระบุ, ค่าเดียวกันกับการ transfer ก่อนหน้าถูกโหลดซ้ำ(reload)เพื่อจำนวนของบล็อคและจำนวนของ transfers สำหรับการ transfer ครั้งถัดไป.
ช่องว่างระหว่างการ transfer(Transfer Gap) คือคาบเวลาที่ซึ่งการ transfer ไม่ถูกทำให้ทำงาน, และมันจะถูกสอดใส่เพื่อป้องกันหนึ่งใน DMAC channels จากการครอบครอง system bus access right. ถ้าหลาย channels มีการร้องขอการ transfer, DMAC จะสวิทช์ชาแนลเหล่านั้นที่จะกระทำการ transfer operation ที่เวลาของTransfer Gap. ความถี่ของการเกิด Transfer Gap สามารถถูกควบคุมโดยการปรับการเซตของ BC และ TC
อย่างไรก็ตาม,การเข้าถึงบัสอย่างถูกต้องนี้(bus access right) ก็ยังส่งผ่านไปถึง CPU ที่เวลา Transfer Gap อีกด้วย System buses ใน product นี้อยู่ใน Multi-layered configuration พร้อมด้วย system bus พิเศษที่กำหนดให้ใช้กับ DMA. ด้วยเหตุผลนี้, ถ้าไม่มีการขัดแย้งระหว่าง CPU และปลายทางที่เข้าถึง, transfer สามารถถูกกระทำที่เวลาเดียวกันกับการทำงานของ CPU. ถึงแม้ว่ามีการขัดแย้งระหว่าง CPU และปลายทางที่เข้าถึง, การทำงานของ CPU จะมีผลกระทบเพียงเล็กน้อยตราบเท่าที่ DMAC transfer อยู่ใน address area group ต่างกัน(RAM and Peripheral, or Flash memory and RAM, etc). อย่างไรก็ตาม ถ้าการ transfer อยู่ใน address area group เดียวกัน(RAM and RAM, etc.), the CPU operation and/or system performance อาจจะมีผลกระทบ ขึ้นอยู่กับจำนวนของบล็อคที่ใช้ ; ดังนั้นจึงควรระมัดระวัง
("Address area group" ที่กล่าวถึงข้างบนนี้อ้างอิงถึง a group of address areas ที่ถูกต่ออยู่บน AHB system bus ซึ่งมี bus bridge เดียวกัน.)