芯片:TMS320C6747
程序配置1:把C6747的UART1配置成DMA发送,每次传输350字节,波特率115200,传输一次耗时约30ms。
程序配置2:SPI1配置成主机模式,访问外部芯片的周期为5ms。SPI1非DMA模式。
EDMA的OPT配置:DAM位置1,TCC配置成13,TCC中断位配置成1。
acnt=1,bcnt=350,ccnt=1
代码运行在L2RAM,数据也在L2RAM。
现在发现在串口正常发送的时候,SPI访问也是每5ms一次,很均匀,好像串口的DMA发送没有占用CPU的时钟。
DMA方式按照我的理解:
1、DMA申请总线;
2、DMA获取总线,CPU放弃总线;
3、DMA传输;
4、DMA传输完成,CPU重新获取总线。
在DMA传输的时候CPU是无法取得总线的?
DMA的传输是否可以被CPU中断?
为什么串口通过DMA发送的时候CPU也能通过SPI按时访问外部芯片呢(数据和代码都在L2RAM)?
C6000是如何在CPU和DMA之间分配时钟的和数据总线的?
L2RAM的数据是否无需数据总线即可传输?
Nancy Wang:
建议阅读以下链接,关于master与slave内部如何建立连接并通信。
processors.wiki.ti.com/…/AM1x_SoC_Architectural_Overview
user4039376:
回复 Nancy Wang:
您好,看了之后还是有些疑问。
实验2:把串口数据占有率提升到95%,芯片也能正常运行各种程序,一点时序干扰都没有。
是不是芯片不由设计师配置EDMA3,CPU到外设(IO口,SPI,UART)的传输都要通过EDMA3来传输?即CPU到外设的链路:
CPU–L1–L2–EDMA3–外设因为仲裁线上EDMA3的优先级最高,没有同等优先级的主控,如果芯片内部不是由EDMA3来搬运,那么一定会影响实时性;由同一个主控来访问,主控会交替访问内存。不知道我的理解是否正确。
Nancy Wang:
回复 user4039376:
cpu和EDMA是独立的,你配置成edma传输才是通过edma传输。
edma3是直接可以访问外设的。