工具/软件:Code Composer Studio
我们将数据从内部存储器传输到外部器件(NET2272)、以下代码运行良好:
while (循环计数--)
{
DSPWriteIO16 ((UINT32)(0x08005)、*(pTxBuf++));
}
其中0x08005是外部器件的地址、pTxBuf 是内部存储器的指针。 但它很慢、因此我们要将其转换为 DMA 传输、如下所示:
//Initialize the Subbank Address Register ver229 DMA to NetChip
*(int *) dMSA = DMSRC4;
//设置源地址
*(int *) DMSDI =(int) pTxBuf;
//设置目标地址
*(PUCHAR *) DMSDI =(PUCHAR)(0x08005);
//设置元素计数寄存器
*(int *) DMSDI =环计数;
//设置同步选择和帧计数寄存器
*(int *) DMSDI = 0x0000;
//set the transfer mode control register DMD=2 destination is I/O、DMS=1 source is data space
*(int *) DMSDI =(1 << DLAXS)|(2 << DMD)|(1 << sind)|(1 << DMS);
//启用 DMA 通道(以便可以开始传输)
*(volatile int *) DMPREC = 0x01010u;
//等待 DMA 传输完成
while (*(volatile int *) DMPREC & 0x00010)
{
}
但是、DMA 不会启动。 请帮助我找到我的代码中的任何错误。
谢谢。