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.

[参考译文] TMS570LC4357-EP:使用 GIO 进行并行数据采样

Guru**** 2467340 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1128410/tms570lc4357-ep-parallel-data-sampling-using-gio

器件型号:TMS570LC4357-EP

TI 团队、  

我正在使用上述微控制器。 我想对并行数据(12位)@ 10MHz 频率进行采样。 为此、我需要在 GIO 中断处对10MHz 时钟进行采样、并在 ISR 中对12位并行数据进行采样、并将数据存储在 RAM 中。

在最初执行此任务时 、我采用了外部时钟@ 5MHz 并尝试在每个边沿切换 GIO 引脚、但在5MHz 的给定频率下也无法实现这一点

您能告诉我这个微控制器是否能够满足我在第一段中描述的要求吗?

此致。

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

    您好!

    [引用 userid="488031" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum @ 1128410/tms570lc4357-EP-parally-data-sampling-using-gio"]我想对并行数据(12位) 10MHz 频率进行采样。 为此、我需要在 GIO 中断处对10MHz 时钟进行采样、并在 ISR 中对12位并行数据进行采样、并将数据存储在 RAM 中。[/引用]

    您使用哪个 GPIO 引脚对时钟进行采样? 我想它是 GPIO Porta 之一、对吧? 当 GPIO 检测到一个边沿时、它将生成一个中断。 但是、从检测到中断到进入 ISR 之间会有一些延迟。 我们没有显示延迟的数据、但我认为您可以通过在 ISR 中将另一个 GPIO 引脚置为有效来进行一些测量、您将知道从输入边沿检测到的时间、直到将另一个 GPIO 引脚置为有效。  

    [引用 userid="488031" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum 1128410/tms570lc4357-EP-parally-data-sampling-using-gio"]我已采用外部时钟@ 5MHz

    您能不能澄清如何使用5MHz 时钟? 您是否通过 GPIO 输入使用中断对5MHz 进行采样?

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

    您好、蔡  

    是的、我使用 GPIO Porta 引脚7进行中断检测(中断是来自频率为5MHz 的另一个源的时钟信号)。

    时钟设置:GCLK = 300MHz、VCLK1 = 150Mhz、HCLK = 150Mhz。

    在 ISR 中、我要切换 GPIO 引脚(GIO A 引脚1)、我的观察结果是 ISR 中的 GIO 切换频率接近740Khz。 它是否应该等于中断频率??

    此外、我想知道我可以对 GIO 中断进行采样并在 ISR 中执行某种操作的频率是多少?

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

    您好!

     您能否显示 GPIOA7和 GPIOA1的示波器捕获? 我建议您切换 GPIOA1、使其遵循 GPIOA7。 请注意、如果您在每个 GPIOA7边沿上交替切换 GPIOA1、GPIOA7只能将 GPIOA7的频率减半。  

     另请确认您是否已启用处理器高速缓存。  

     如前所述、从检测到中断到处理器进入 ISR 有一定的延迟。 检测到边沿后、一个中断请求从 GPIO 模块发送到 VIM、并且最终 IRQ 请求被发送到处理器、这个过程将需要一些周期。 处理器收到 IRQ 请求后、需要进行上下文切换、这也需要一些周期。 进入 ISR 后、您可能已经执行了一些读取-修改-写入操作(例如、读取 GPIOA1的状态、然后切换到相反状态)、这将再次花费周期。 如果您有一个快速输入(例如5MHz 输入)、如果您仍在处理当前 ISR 的过程中、则下一个边沿的处理速度可能不够快。 如果用汇编语言而不是 C 代码编写 ISR、则可以提高延迟。 例如、根据标志置1或清零 GPIOA1引脚、而不是读取 GPIOA1 DIN 寄存器的状态、然后置1为相反状态。  

     另请考虑硬件中断而不是软件中断。 有关详细信息、请参阅 TRM。 另一个建议是使用 FIQ 中断而不是 IRQ。 这些建议可能无法实现您所需的输出频率、但会改善延迟。