SPi触发直接存储器存取

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在主对话网站中。所有的帖子和账号都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程在//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
2个帖子/ 0个新
最后发表
kidmose
离线
最后看到:1个月3天前
加入:2016-12-06 16:29
SPi触发直接存储器存取

你好,

我有一个问题与获得直接存储器存取被触发和外部ADC。

配置:

-------------------------

Da14585

外部ADC, SPI总线

DMA: 2通道,一个用于spi tx一个用于spi rx

要求的功能

-----------------------

每次样品准备好时,ADC将SPI_OUTPUT设置为Low,然后必须传输32位数据。为此,我配置了DMA由外围设备触发。

问题

--------------------------

DMA被触发,但是在接收到第一个样本后,它不会等待SPI_OUTPUT变低,然后再次请求数据。因此,相同的样品再次从ADC发送。如果我将它编程为1024个样本,它会以等待下一个数据的速度读取数据。因此DMA启动被正确触发,但我希望它与spi_output同步。

进一步的信息:

ADC以每秒1024个采样的速度处于连续模式采样。因此,当我需要1024个样本时,我预计这需要1秒。然而,它的速度要快得多,问题是dma只是在全速一遍又一遍地读取相同的样本。

当前的配置如下,但我也试图有tx长度= 1和循环启用。

直接存储器存取配置

-------------------------

DMA_setup ti_ads1018_spidma_cnf (TI_ADS1018_DMA_TX + 1) = {{/ / RX .channel_number = DMA_CHANNEL_0 .bus_width = DMA_BW_HALFWORD .irq_enable = DMA_IRQ_STATE_ENABLED .irq_nr_of_trans = 0, .dreq_mode = DMA_DREQ_TRIGGERED .a_inc = DMA_AINC_FALSE .b_inc = DMA_BINC_TRUE .circular = DMA_MODE_NORMAL .dma_prio = DMA_PRIO_7 .dma_idle = DMA_IDLE_BLOCKING_MODE .dma_init = DMA_INIT_AX_BX_AY_BY .dma_req_mux = DMA_TRIG_SPI_RXTX .dma_sense = DMA_SENSE_LEVEL_SENSITIVE .src_address = SPI_RX_TX_REG0,.dest_address = spi_data . length = 1024, .callback = NULL, .user_data = NULL,}, {/ / TX .channel_number = DMA_CHANNEL_1 .bus_width = DMA_BW_HALFWORD .irq_enable = DMA_IRQ_STATE_DISABLED .irq_nr_of_trans = 0, .dreq_mode = DMA_DREQ_TRIGGERED .a_inc = DMA_AINC_FALSE .b_inc = DMA_BINC_FALSE .circular = DMA_MODE_NORMAL .dma_prio = DMA_PRIO_7 .dma_idle = DMA_IDLE_BLOCKING_MODE .dma_init = DMA_INIT_AX_BX_AY_BY .dma_req_mux = DMA_TRIG_SPI_RXTX .dma_sense = DMA_SENSE_LEVEL_SENSITIVE,.src_address = NULL, .dest_address = SPI_RX_TX_REG0, .length = 1024, .callback = NULL, .user_data = NULL,}};

关键词:
附件:
设备:
PM_Dialog
离线
最后看到:2小时49分钟前
工作人员
加入:2018-02-08 11:03
嗨kidmose,

嗨kidmose,

我们将很快通过您的注册邮箱与您取得联系。

谢谢,PM_Dialog