dma

    0热度

    1回答

    我有一个STM32F769I-EVAL配置为接收基于ST的AN4666代码的8位并行数据。我期望发生的情况是:来自输入设备的时钟触发输入捕捉DMA并将数据写入SDRAM,直到OC定时器中断禁止传输。此时,我可以操纵SDRAM中的数据并将其传输到其他地方。但是,硬件配置完成并且启用输入捕捉后,会出现DMA传输错误。 HAL_DMA_IRQHandler函数中errorcode(6)的值表示设置了FI

    0热度

    1回答

    我试图从使用DMA的I2C传感器(BNO055)获取数据,但我无法启动DMA传输。我发现很多F1,F3和F4 STM微控制器的例子,但对F0没有任何帮助。 我只是: 我使用轮询方法初始化传感器,它工作正常。 我初始化使用DMA此代码: ` void I2C1_DMA_Init(uint8_t *BNO055_DMA_buffer) { RCC->AHBENR |= (RCC_AHBPe

    -1热度

    1回答

    我有一个A/D信号CPU每当它有新的样本,并通过一个SPI,这是几个字节的CPU读取。 我的问题是,我们可以在这里使用DMA吗?谁和如何告诉DMA传输新数据? 使用DMA有意义吗?这基本上就像一个中断I/O。每次A/D都会发出新的样本,主要软件会告诉DMA将其传输。所以效率没有提高。主要还是不断涉及I/O。

    0热度

    1回答

    在我的项目,我想开发一个PCIE Linux设备驱动程序与32位MSI handler.For为此我写了这样的代码: if((pci_resource_flags(dev,i)&IORESOURCE_TYPE_BITS)==IORESOURCE_MEM) { printk(KERN_INFO "memmap1"); devInfo->resource[i]

    2热度

    1回答

    如上所述,dma引擎和dma控制器(专注于linux)有什么区别? 什么时候linux dma引擎到位?这是一个特殊的设备还是始终是支持dma的所有外围设备的一部分? 当浏览linux源代码时,我发现了驱动程序ste_dma40.c。任何驱动程序如何使用此引擎?

    2热度

    4回答

    我试图在DMA模式下实现UART,每次按下按钮时传输一个简单的字符串。 所以我用CubeMX生成代码,并且我在正常(非循环)模式下配置了UART2 TX DMA,也没有FIFO并且没有突发。 每当我在调试模式下运行代码,我看到我第一次尝试发送字符串,它工作正常并发送字符串,但在DMA IRQ处理程序内,它调用TxHalfCpltCallback而不是TxCpltCallback,还有UART gS

    2热度

    1回答

    我想在基于Zynq-7000的平台上使用DMA引擎将PCM流传输到Zynq PL中的自定义I2S控制器。我的I2S控制器连接到外部放大器。我想通过AXI-DMA控制器使用DMA。这是目前我的数据通路: 我在Zynq PS上使用Linux 4.10内核。我使用Linux ASoC子系统生成pcm流并控制我的外部音频放大器。我有512MB的DDR RAM连接到Zynq。我想用这个RAM的一部分来运行我

    0热度

    1回答

    对于CPU可以直接传输数据比DMA(直接内存访问控制器)更快的情况,我有点困惑吗?反之亦然? 感谢

    2热度

    2回答

    我正在使用2.6.35.3内核的嵌入式Linux系统。 在设备内部,我们需要一个4MB + 192kB连续的DMA缓存器用于我们的数据采集驱动器之一。驱动程序使用SPI传输将数据复制到此缓冲区。 用户空间应用程序发出一个mmap系统调用,将缓冲区映射到用户空间,然后直接读取可用数据。 使用“alloc_bootmem_low_pages”调用分配缓冲区,因为使用其他方法(如kmalloc)不可能分

    2热度

    1回答

    我正在使用stm32f3发现板和来自CubeMX的HAL。我想在ADC4上使用2个ADC通道。我以循环模式配置DMA。 Befor在主主循环,我称之为: HAL_ADC_Start_DMA(&hadc4, DMA_adc4_buffer, 16); 我实现的功能HAL_ADC_ConvHalfCpltCallback和HAL_ADC_ConvCpltCallback。现在奇怪的部分:HAL_A