你好,
我有一个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,}};
关键词:
设备:
嗨kidmose,
我们会尽快以你的注册电邮地址与你联络。
谢谢,PM_Dialog