主题中讨论的其他器件:ADC14L040
EPI 设为 GP 模式。
我想在不使用地址的情况下读取16位数据。
EPI 时钟设为60MHz、下图显示了 RD 引脚(EPI0S29)的波形。
如第一幅图所示、以大约33ns 的间隔生成8个输出、后跟一个50ns 的间隔、如第二幅图所示。
为什么有17ns 的间隙?
为了使用 TI ADC14L040、需要定期输出。
我需要检查哪个部件?
下面是将 EPI_SDRAM_dmareq 示例修改为 GP 模式的部分源代码。
(笑声)
MAP_EPIDividerSet (EPI0_BASE、1);// 60MHz EPI 时钟、30MHz RD 引脚
MAP_EPImodeSet (EPI0_BASE、EPI_MODE_General);
MAP_EPIConfigGPModeSet (EPI0_BASE、
EPI_GPMODE_CLKPIN |
EP_GPMODE_CLKGATE |
EPI_GPMODE_ASIZE_NONE |
EPI_GPMODE_DSIZE_16、
0、0);
MAP_EPIAddressMapSet (EPI0_BASE、
EPI_ADDR_PER_SIZE 64KB |
EPI_ADDR_PER_BASE_A);
while (EPI0->STAT 和 EPI_STAT_INITSEQ)
{}
MAP_EPIFOConfig (EPI0_BASE、EPI_FIFO_CONFIG_RX_1_8);// EPI_FIFO_CONFIG_RX_1_2);
MAP_EPINONBlockingReadConfigure (EPI0_BASE、0、EPI_NbCONFIG_SIZE、0xA0000000);
MAP_EPIIntEnable (EPI0_BASE、EPI_INT_DMA_RX_DONE);
MAP_IntEnable (INT_EPI0);
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
while (!(SysCtlPeripheralReady (SYSCTL_Periph_UDMA)))
{}
map_uDMAEnable();
map_uDMAControlBaseSet (pui8ControlTable);
MAP_uDMAChannelAssign (UDMA_CH20_EPI0RX);
MAP_uDMAChannelAttributeDisable (UDMA_CH20_EPI0RX、
UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST |
UDMA_ATTR_HIGH_PRIOR|
UDMA_ATTR_REQMASK);
MAP_uDMAChannelControlSet (UDMA_CH20_EPI0RX | UDMA_PRI_SELECT、
UDMA_SIZE_16 | UDMA_SRC_INC_NONE | UDMA_DST_INC_16 |
UDMA_ARB_1024);// UDMA_ARB_1);
MAP_uDMAChannelTransferSet (UDMA_CH20_EPI0RX | UDMA_PRI_SELECT、
UDMA_MODE_PINGONG、
(void *)&EPI0->READFIFO0、(void *)&internalReadBuf、
sizeof (internalReadBuf)/2);
MAP_uDMAChannelEnable (UDMA_CH20_EPI0RX);
MAP_EPINONBlockingReadStart (EPI0_BASE、0、128);