SPi触发直接存储器存取

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

你好,

我有一个isuse与获得DMA被触发和外部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个样本时,我希望它花一秒钟。然而,它的速度要快得多,问题是dma只是以全速反复读取相同的样本。

当前的配置如下,但我也尝试了tx lengt = 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
离线
最后看到:52分57秒前
工作人员
加入:2018-02-08 11:03
嗨kidmose,

嗨kidmose,

我们会尽快以你的注册电邮地址与你联络。

谢谢,PM_Dialog