你好,
我有一个问题与获得直接存储器存取被触发和外部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,}};
关键词:
设备:
嗨kidmose,
我们将很快通过您的注册邮箱与您取得联系。
谢谢,PM_Dialog