ESM335x SPI驱动DMA数据收发

   日期:2024-01-23     浏览:95    评论:0    
核心提示:为了满足SPI大数据量传输的应用,我们对SPI的驱动进行了更新,升级后的SPI驱动程序通过DMA控制数据收发。
ESM335x提供了1路4线制全双工SPI接口,可设置的波特率从1.5KHz到48MHz,ESM335x(WEC7)标准的SPI驱动采用IO模式进行数据收发,在 大数据量通讯时,IO模式传输速度较慢,并且会占用相当多的CPU资源,进而影响整个系统的运行效率。,

ESM335x提供了1路4线制全双工SPI接口,可设置的波特率从1.5KHz到48MHz,ESM335x(WEC7)标准的SPI驱动采用IO模式进行数据收发,在大数据量通讯时,IO模式传输速度较慢,并且会占用相当多的CPU资源,进而影响整个系统的运行效率。

为了满足SPI大数据量传输的应用,我们对SPI的驱动进行了更新,升级后的SPI驱动程序通过DMA控制数据收发。经过对比测试,同样的传输过程,当在IO模式下CPU占用率接近100%时,采用DMA方式传输的CPU占用率仅在10%左右。ESM335x SPI接口采用DMA传输方式的数据传输率可达到每秒2MBytes。

升级后的驱动与原来的驱动程序提供的用户API函数接口完全相同,在应用程序中配置SPI参数时增加MCSPI_CHCONF_DMAR_ENABLE 和 MCSPI_CHCONF_DMAW_ENABLE宏定义即使能DMA传输,否则采用原来的IO方式时行数据传输。下面是示例代码:

  #include "stdafx.h"

  #include "mcspi.h"

  #define XCH_SIZE (0x2000)

  int _tmain(int argc, _TCHAR* argv[])

  {

    HANDLE hSPI;

    BOOL rc;

    BYTE TxBuf[XCH_SIZE];

    BYTE RxBuf[XCH_SIZE];

    DWORD dwSpiConf;

    DWORD dwSpiCount, dwWorldSize, dwWL;

    DWORDi;

    hSPI = SPIOpen( _T("SPI1:"));

    if( hSPI == INVALID_HANDLE_VALUE )

      goto cleanUp;

    dwWL = 8;  // 8-bits SPI,有效的设置为4-bits至32-bits

    dwSpiConf =

      MCSP1_MODE0 |  // SPI时序模式0

      

      MCSPI_CHCONF_DMAR_ENABLE | MCSPI_CHCONF_DMAW_ENABLE|

      MCSPI_CHCONF_WL(dwWL);

    rc = SPIConfig( hSPI, 8000000, dwSpiConf);  // 波特率8MHz

    if( !rc )

      goto cleanUp;

    if( dwWL > 16 )

      dwWorldSize = sizeof(UINT32);

    else if(dwWL > 8 )

      dwWorldSize = sizeof(UINT16);

    else

      dwWorldSize = sizeof(UINT8);

    dwSpiCount = 2000;

    for(i=0; i<dwSpiCount; i++)

    {

      TxBuf[i] = i;  // 初始化数据收发buffer

      RxBuf[i] = 0;

    }

    dwSpiCount *= dwWorldSize;  // 传输的字节数

    rc = SPIWriteRead( hSPI, TxBuf, RxBuf, dwSpiCount );

    if( !rc )

    {

      // 数据传输有错,错误处理...

    }

  cleanUp:

    if( hSPI != INVALID_HANDLE_VALUE )

    {

      SPIClose(hSPI);

    }

    return 0;

  }

ESM335x SPI接口同样支持4种标准的SPI通讯模式,下图是ESM335x主芯片数据手册中对SPI各个模式的定义说明。

此次驱动升级针对ESM335x和EM335x系列的WEC7工控主板,需要更新SPI驱动的用户可与我们联系升级。

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服