问答

汇集网友智慧,解决技术难题

21ic问答首页 - TAG
  • 使用McBSP模拟SPI进行收发数据,通过DMA怎么进行发送呢 sos

    我使用McBSP模拟SPI进行以太网CH395Q收发数据,通过DMA怎么配置了源地址和目的地址,源地址为我要发送的数据,目的地址为McbspaRegs.DXR1.all,那么接下来怎么样进行配置才能发送呢,还需要拉低片选使能和发送写命令吗 EALLOW; /* 发送DMA初始化 */ DmaRegs.DMACTRL.bit.HARDRESET = 1; // 硬件复位 __asm(" NOP"); // Only 1 NOP needed per Design DmaRegs.CH1.MODE.bit.CHINTE = 1; // 通道中断使能 DmaRegs.CH1.BURST_SIZE.all = 0; // 每次突发传输1+0个字 DmaRegs.CH1.SRC_BURST_STEP = 0; // 指定处理触发数据时递增/递减后的源地址步长 DmaRegs.CH1.DST_BURST_STEP = 0; // 指定处理触发数据时递增/递减后的目的地址步长 DmaRegs.CH1.TRANSFER_SIZE = 0; // 指定数据传输大小为1+0(每次突发传输的循环次数) // 在接收到一些数据后移动下一个字到buffer中 DmaRegs.CH1.SRC_TRANSFER_STEP = 1; // 源传输步进寄存器(指针增/减步长) DmaRegs.CH1.DST_TRANSFER_STEP = 0; // 目的传输步进寄存器(指针增/减步长) DmaRegs.CH1.SRC_ADDR_SHADOW = (Uint32)&S_MCBSP_DMA.DMATxCash[0]; // 数据源地址影子寄存器 DmaRegs.CH1.SRC_BEG_ADDR_SHADOW = (Uint32)&S_MCBSP_DMA.DMATxCash[0]; // 数据源开始地址影子寄存器 DmaRegs.CH1.DST_ADDR_SHADOW = (Uint32)&McbspaRegs.DXR1.all; // 目的地址起始影子寄存器 = MCBSP数据传输寄存器位15-0 DmaRegs.CH1.DST_BEG_ADDR_SHADOW = (Uint32)&McbspaRegs.DXR1.all; // 目的地址起始影子寄存器 = MCBSP数据传输寄存器位15-0 DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // 外设中断清除 DmaRegs.CH1.CONTROL.bit.SYNCCLR = 1; // 清除同步标志位 DmaRegs.CH1.CONTROL.bit.ERRCLR = 1; // 清除同步错误标志位 DmaRegs.CH1.DST_WRAP_SIZE = 0xFFFF; // 目标换行大小寄存器 DmaRegs.CH1.SRC_WRAP_SIZE = 0xFFFF; // 源目标换行大小寄存器 DmaRegs.CH1.MODE.bit.SYNCE = 0; // 同步使能 DmaRegs.CH1.MODE.bit.SYNCSEL = 0; // 同步模式 DmaRegs.CH1.MODE.bit.CHINTE = 1; // 通道中断使能 DmaRegs.CH1.MODE.bit.CHINTMODE = 1; // 通道中断生成模式 DmaRegs.CH1.MODE.bit.PERINTE = 1; // 外设中断触发使能 DmaRegs.CH1.MODE.bit.PERINTSEL = DMA_MXEVTA; // 外设中断触发源 DmaRegs.CH1.CONTROL.bit.PERINTCLR = 1; // 外设中断清除 DmaRegs.CH1.MODE.bit.CONTINUOUS = 1; // 写1重新初始化DMA,等待下次触发信号 DmaRegs.CH1.BURST_SIZE.all = 0; DmaRegs.CH1.TRANSFER_SIZE = DataLen - 1; DmaRegs.CH1.CONTROL.bit.RUN = 1;

    DMA mcbsp 使用

    2614浏览量 0回复量 关注量
  • DSP28335的MCBSP发送没问题,但是接收数据乱序

    DSP28335的MCBSP发送没问题,但是接收数据出现乱序,请问有人遇到这样的问题吗?

    BSP DSP mcbsp DSP28335

    16849浏览量 2回复量 关注量