TI中文支持网
TI专业的中文技术问题搜集分享网站

RM44L920使用DMA进行standard SPI传输数据问题

本需求要周期性采集4个ADC的数据,4片ADC共享同一个SPI, 使用几个CS来编码片选。SPI数据长度设置为8bit, 每读取一个adc数据时,需要发送1个命令加3个clock来获取数据。

现在想采用DMA获取数据方式,把 TX standard mode连在DMA CH0上, RX standard mode 连在DMA CH1上,因为要使用CS进行片选,所以设置数据长度为32bit,发送和接受packet设置分别如下:

    g_dmaCTRL dmaCtrl_tran = {

     ( uint32 ) &***[0],                 // initial source address

    ( uint32 ) &spiREG1->DAT1,                // initial destination address

     DMA_CH1,                                         // next ctrl packet to be trigger + 1

       4,                                                    // frame   count
       4,                                                   // element count
       0,                                                   // element destination offset
       4,                                                  // element source offset
       0,                                                 // frame destination offset
       16,                                              // frame source offset
      0x04,                                          // dma port
     ACCESS_32_BIT,                      // read element size
     ACCESS_32_BIT,                   // write element size
     1,                                             // trigger type – frame/block
     ADDR_OFFSET,                      // addresssing mode for source
     0,                                            // addresssing mode for destination
     0,                                          // auto-init mode
     NO_CHANNEL,                 //   uint32 COMBO;      // next ctrl packet trigger(Not used)
    };

 g_dmaCTRL  dmaCtrl_rec= {

     ( uint32 ) &spiREG1->BUF,                 // initial source address

     ( uint32 ) Spi1DmaRevData,             // initial destination address

     DMA_CH0,                                 // next ctrl packet to be trigger + 1

       4,                  // frame   count
       4,                  // element count
       4,               // element destination offset
       0,               // element source offset
       16,              // frame detination offset
       0,                // frame source offset
      0x04,                       // dma port
     ACCESS_32_BIT,          // read element size
     ACCESS_32_BIT,          // write element size
     1,                                     // trigger type – frame/block
     0,                                     // addresssing mode for source
     ADDR_OFFSET,              // addresssing mode for destination
     0,                                           // auto-init mode
     NO_CHANNEL,                 // next ctrl packet trigger(Not used)
    };

目前读取数据不成功, 观察示波器波形,每周期仅仅送出了两个byte的数据,第一个cs片选只选中了第一个byte的数据,按照设计,应该要送出16 byte的clock,每个cs应该要片选上4个byte的数据。但是spiControlData数组用来进行spi 中断来传输数据片选是没有问题的。

请问以上我的配置有问题吗?该如何使用DMA来进行spi数据传送呢?

谢谢!

Susan Yang:

很抱歉,对RM44L920这款芯片不熟悉,建议您去英文E2E发帖询问以获取更好的支持

e2e.ti.com/…/312

赞(0)
未经允许不得转载:TI中文支持网 » RM44L920使用DMA进行standard SPI传输数据问题
分享到: 更多 (0)