首页 > 其他分享 >ADI CCES ADSPI2156X UART DMA模式中,获取当前存到第几个数CurrXCount, 重新从头开始接收StartAddr

ADI CCES ADSPI2156X UART DMA模式中,获取当前存到第几个数CurrXCount, 重新从头开始接收StartAddr

时间:2024-02-09 10:55:18浏览次数:34  
标签:DMA 第几个 CCES CurrXCount UART pReg uint32 ADI

关键的一些寄存器

关键的寄存器 pUARTDstDMARegs

typedef struct
{
    uint32_t                         nTmrDevNum;         /* Timer assosiated to the selected UART for Autobaud */

    ADI_UART_TypeDef *const          pUARTRegs;          /* Pointer to base address of UART Memory Mapped Registers */

    ADI_PDMA_REGS *const             pUARTSrcDMARegs;    /* Pointer to base address of UART Source DMA channel */

    ADI_PDMA_REGS *const             pUARTDstDMARegs;    /* Pointer to base address of UART Destination DMA channel */

    uint32_t                         TxIntID;            /* Tx DMA Interrupt ID */

    uint32_t                         RxIntID;            /* Rx DMA Interrupt ID */

    uint32_t                         StatusIntID;        /* Status Interrupt ID */

    uint32_t                         TxDMAErrorIntID;    /* Tx DMA Error Interrupt ID */

    uint32_t                         RxDMAErrorIntID;    /* Rx DMA Error Interrupt ID */

    ADI_UART_DEVICE                 *pDevice;            /* Pointer to UART device instance data */

} ADI_UART_INFO;

CurrXCount

typedef volatile struct
{
    uint32_t   NextDescPtr;    /* Pointer to next Initial Descriptor */
    uint32_t   StartAddr;      /* Start address of current buffer */
    uint32_t   Config;         /* Configuration register */
    uint32_t   XCount;         /* XCOUNT - Inner loop count start value in number of MSIZE data transfers*/
     int32_t   XModify;        /* XMODIFY - Inner loop address increment, in bytes */
    uint32_t   YCount;         /* YCOUNT - Outer loop count start value (2D only), in number of rows*/
     int32_t   YModify;        /* YMODIFY - Outer loop address increment (2D only), in bytes*/
    uint32_t   Padding0;       /* padding */
    uint32_t   Padding1;       /* padding */
    uint32_t   CurrDescPtr;    /* Current Descriptor Pointer */
    uint32_t   PrevDescPtr;    /* Previous Initial Descriptor Pointer */
    uint32_t   CurrAddr;       /* Current Address */
    uint32_t   Status;         /* Status Register */
    uint32_t   CurrXCount;     /* Current XCOUNT */
    uint32_t   CurrYCount;     /* Current YCOUNT */
} ADI_PDMA_REGS;

看当前收到了多少个bytes,
ADI_PDMA_REGS.CurrXCount

自定义函数 adi_uart_Reset_dma_regiseter

void adi_uart_Reset_dma_regiseter(void* pInfo){

	ADI_UART_INFO * pinfo2 = (ADI_UART_INFO *)pInfo;

//	adi_pdma_ResetRegs(pinfo2->pUARTDstDMARegs);
	ADI_PDMA_REGS *pReg =pinfo2->pUARTDstDMARegs;
//    pReg->Config        = 0u;
//    pReg->NextDescPtr   = 0u;

//    pReg->XCount        = 0u;
//    pReg->XModify       = 0;
//    pReg->YCount        = 0u;
//    pReg->YModify       = 0;
//    pReg->Status        = ADI_PDMA_CLEAR_INTERRUPTS; /* Clear any pending interrupts */
//    pReg->CurrDescPtr   = 0u;
//    pReg->CurrXCount=0u;
    printf("pReg->StartAddr %p\n",pReg->StartAddr);
    printf("pReg->CurrXCount %d\n",pReg->CurrXCount);
    printf("pReg->CurrAddr %p\n",pReg->CurrAddr);
//    CurrAddr
    pReg->StartAddr     = 0u;

}

前提是接收完成,但是没有到达dma 触发个数的时候,或者想查看当前接收到哪里的时候,查看 CurrAddr 寄存器

标签:DMA,第几个,CCES,CurrXCount,UART,pReg,uint32,ADI
From: https://www.cnblogs.com/Nicoooolas/p/18012370

相关文章

  • (CCES) CCS 7.0 工程文件中 右上角有 小钥匙标志(转)
    https://blog.csdn.net/csdn392746239/article/details/85985091原因:应该是对单个源文件进行了build选项的操作,小钥匙表示这个源文件跟工程中的其他文件的配置不同。凡是设置过文件属性的,都会出现这个标志,重启是不行的,即是将其删除,如果再新建一个,只要与原来的重名,这个钥匙标志还......
  • 【警钟撅烂】不知道第几个
    网络流建立虚拟源点汇点编号分别为0,n+1然后初始化的时候从1到n....调题调了两个小时啊哈哈,被自己,蠢笑啦~#include<bits/stdc++.h>usingnamespacestd;constintN=605;constintM=2505;constintINF=(int)0x3f3f3f3f;intedgeid=1;inthead[N];structedg......
  • 已解决java.lang.IllegalAccessException异常的正确解决方法,亲测有效!!!
    已解决java.lang.IllegalAccessException异常的正确解决方法,亲测有效!!!文章目录问题分析与报错原因解决思路解决方法总结 ----------------------------------------------------------------------------------------------------------------问题分析与报错原因java.lang.IllegalA......
  • ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'mysql&
    转自https://www.cnblogs.com/jiangfeilong/p/10560754.html 关键要授予 WITHGRANTOPTION;#原因:修改数据库账号时删除了默认的localhostroot, 新建了%root 但没有赋予全部权限;解决方法:1.关闭数据库#mysqldstop2.在my.cnf里加入skip-grant-tables3.停止服务器......
  • DMA直接存储器存取
    一.DMA简介存储器到存储器的转运,一般用软件触发外设到存储器的转运,一般用硬件触发二.存储器映像终止地址取决于存储容量三.DMA框图四.DMA基本结构传输计数器:自减计数器自动重装器:是否将传输计数器恢复M2M:选择触发方式软件触发和循环模式不能同时使用五.DMA请求......
  • 串口DMA
    双缓冲区防止前一组数据没有及时处理后一组数据就来了,将前一组覆盖了。采用标志位的方法,标志位为1就将数组1的地址赋给DMA存储器的地址,并且将标志位置0。同理,标志位为0就将数组2的地址赋给DMA存储器的地址,并且将标志位置1。DMA+串口空闲中断传输计数器设置一个很大的值,串口没......
  • Podman使用(Mac M1)
    1.前言弃用docker选择使用podman的理由:使用虚拟机进行容器管理不需要本机root权限非守护进程podman命令与docker一致2.安装及配置使用homebrew安装podmanbrewinstallpodmanbrewinstallpodman-composebrewinstallpodman-desktop创建podman虚拟机:通过podman-d......
  • Qt Access violation - code c0000005 debug write access violation
    WhentryingtodebugmyQtapplication,theappthrowaexceptionas"Exceptionat0x77da2073,code:0xc0000005:writeaccessviolationat:0x1,flags=0x0"IamusingQtcreatorandvs2005compileranddebugger. Iloadtheprojectonvs2005a......
  • 质量保障工作的核心Roadmap
    之前写过不少关于质量保障体系建设的文章,围绕质量保障这个话题,也分享了很多落地实践案例。公众号后台又同学留言问了这样一个问题:如何在繁琐的工作中抓住质量保障工作的重点,有条不紊的开展工作?这篇文章,分享一下我自己总结的开展质量保障工作,希望能帮到大家。 下图是我结合自......
  • gerrit access control
    Specialandmagicreferenceshttps://vlab.noaa.gov/code-review/Documentation/access-control.html#referencesThereferencenamespacesusedingitaregenerallytwo,oneforbranchesandonefortags:refs/heads/*refs/tags/*However,everyrefe......