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.

[参考译文] TM4C1294NCPDT:GPIO 模式下的 EPI 接口-数据只读、波特率约为波特率的一半-如何解决?

Guru**** 1818760 points
Other Parts Discussed in Thread: TM4C1294NCPDT, ADS930
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/919001/tm4c1294ncpdt-epi-interface-in-gpio-mode---data-is-read-only-with-approximately-half-of-baud-rate--how-to-fix-this

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: ADS930

你(们)好 我们正在尝试设置 TM4C1294NCPDT EPI 接口以从 ADS930读取数据。

低速读取示例:

我将 EPI 时钟设置为20MHz、工作正常。

然后、我检查使用 DMA 从 EPI FIFO 中读取数据的缓冲区。

馈入 ADS930 ADC 的信号为200kHz 方波、因此我知道我想查看的值是多少、EPI 是否真正使用20MHz 波特率。  

我看到、我获得的样本几乎是使用20MHz EPI 时钟时所需的样本数量的两倍。

DMA 和 EPI 配置:

ROM_EPIDividerSet (EPI0_BASE、4);
// EPIClk =(Divider = 0)? SYSCLK:(SYSCLK /(((Divider / 2)+ 1)* 2)// 1 -> 120MHz/2,2 un 3 -> 120MHz/4,4 -> 120MHz/6=20MHz
ROM_EPImodeSet (EPI0_BASE,EPIMODE_General);

EPI_EPIRE_0 (EPSIM0_BASE,EPIRE_GP0_GPIM_0)

EPI_NbCONFIG_SIZE、0);

ROM_EPIFOConfig (EPI0_BASE、EPI_FIFO_CONFIG_RX_1_8 | EPI_FIFO_CONFIG_RSTALLERR);

EPIIntRegister (EPI0_BASE、 EPIInterruptHandler);
ROM_EPIIntEnable (EPI0_BASE、EPI_INT_DMA_RX_DONE | EPI_INT_ERR);
while (HWREG (EPI0_BASE + EPI_O_STAT)& EPI_STAT_INITSEQ){}

////// DMA 配置//////////////////////////////////

//此处对 DMA 使用附加抽象层,但定义相同,因此您应该能够了解 DMA 的配置方式

EPIRXDMA = NAFT::DMA (UDMA_CH30_EPI0RX、UDMA_ARB_1、UDMA_SRC_INC_NONE、UDMA_DST_INC_8、UDMA_SIZE);
EPIRXDMA.setHighPriority(true);
EPIRXDMA.setUseBurst(true);
EPIRXDMA.setDataSource(reinterpret_cast (EPI0_BASE + EPI_O_READFIFO0); 

 

 

我还检查了 DMA RX 传输完成后是否不再有挂起的 EPI 读操作。  EPINONBlockingReadCount 返回0。

此外、如果 DMA 传输数据速度太慢或繁忙、FIFO 已满且我丢失数据、我还为 RX STALL 启用了中断、但也不会触发该中断-因此 RX FIFO 永远不会满。

我已经尝试过20MHz、15MHz、12MHz 的 EPI 时钟、但在所有情况下波特率都要慢约2倍。

有什么想法吗? 如果有一些帮助、我将不胜感激。

卡利斯

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

    您好!

     我有一些问题和意见。

     -您是否在示波器上测量了 EPICLK 并且它在您指定的频率上?

     -您是否尝试过 ROM_EPIDividerSet (EPI0_BASE、3)、以便 EPICLK 为30Mhz、这与 ADS930匹配?

     - 您能否使用 诸如 EPI_FIFO_CONFIG_RX_1_4的 FIFO 电平阈值进行实验?

     ——你能用乒乓方式进行实验吗?