This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP430FR5994:外部 DMA 触发器(P1.0、DMAE0)支持的最大频率

Guru**** 2577385 points
Other Parts Discussed in Thread: MSP430FR5994

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/937575/ccs-msp430fr5994-maximum-frequency-supported-for-the-external-dma-trigger-p1-0-dmae0

器件型号:MSP430FR5994

工具/软件:Code Composer Studio

我使用  是 MSP430FR5994 Launchpad。 数据表显示、通过将外部时钟连接到 P1.0/DMAE0并在配置 DMA 时选择触发 DMA_TRIGGERSOURCE_31、DMA 可由外部时钟触发。 我的问题是、它在外部时钟的最大支持频率、例如12MHz、24MHz 等 数据表未提及此信息、或者我未找到它。  

我在几个月前提出这个问题,但我没有得到答案。 我自己做了一些实验后、发现它支持高达1MHz 的外部触发信号。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Yubo、

    我认为最大触发频率将取决于每次触发时传输的数据量(以及读取/写入相关存储器所需的时间)。 您是否在实验中为每个触发器传输一个字?  

    BR、
    Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在我的设置中、DMA 在每次触发时从端口3 (P3.0--P3.7)读取一个字节。  

    void CONFIG_DMA()
    {
    dma_disableInterrupt (dma_channel_0);
    
    /*初始化通道0 */
    dma_initParam param0 ={dma_channel_0、 //使用通道0
    DMA_TRANSFER_SINGLE、 //单次触发模式
    帧大小、//传输大小等于图像大小
    DMA_TRIGGERSOURCE_31、 //触发 src 31 (DMAE0、P1.0作为接受外部触发信号的输入)
    DMA_SIZE_SRCBYTE_DSTBYTE、//字节到字节传输
    DMA_TRIGG_RISINGEDGE //在上升沿触发
    };
    dma_init (&param0);
    
    }
    
    
    //设置端口5 (FVLD)的中断处理程序*/
    #pragma vector=PORT5_vector
    __interrupt
    void PORT5_ISR ()
    {
    
    GPIO_DisableInterrupt (CAMERA_FVLD);//禁用中断
    
    
    DMA_setSrcAddress (DMA_CHANGE_0、
    (uint32_t)(&P3IN)、 //数据源 PORT3
    dma_direction 不变); // src addr 不变
    DMA_setDstAddress (DMA_CHANGE_0、
    (uint32_t)(img_buffer)、 //数据目标 img_buffer
    dma_direction 增量); //目标地址自增加
    dma_enableTransfers (dma_channel_0);
    
    
    dma_enableInterrupt (dma_channel_0);//启用 DMA
    
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Yubo、

    根据系列用户指南中的 DMA 部分、DMA 每次传输需要4个 MCLK 周期。 如果传输的目标是 FRAM、则限制为8MHz (8Mbytes/s)- RAM 将更快。 是否可以尝试将目标(img_buffer)更改为 RAM 以查看这是否加快了速度?  我假设您以16MHz 的频率运行、并且处于工作模式(不会在代码中的任何位置睡眠)。

    BR、
    Leo

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Leo、

    我的 MCLK 为8MHz。 我认为您的回答"每次传输 DMA 需要4个 MCLK 周期"可以回答我之前的问题。 我不需要更高的 DMA 处理速率、因此我的当前设置足以满足我的要求。  

    谢谢、

    Yubo