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.

[参考译文] TMS570LS3137:EMIF 编程帮助

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579338/tms570ls3137-help-to-program-for-emif

器件型号:TMS570LS3137
主题中讨论的其他器件: HALCOGEN

尊敬的 e2e:

我正在尝试在 tms570ls3137中执行 EMIF 程序。  我不熟悉该控制器。 我不知道如何对 EMIF 进行编程。  

使用 EMIF_ASYNC1Init();函数我生成时钟和数据,但我不会生成所需的时钟(50MHz 至10MHz 之间的时钟)。

#include "sys_common.h"
#include
#include
#include "sci.h"
#include "het.h"
#include "system.h"
#include "EMIF.h"
#include "rti.h"

/*用户代码开始(1)*/

uint8_t DpramReadData = 0、DpramWriteData = 0;
uint16_t DpraAdress = 0;
extern uint32_t Time1Sec;
#define DPRAM_SYNC1 ((volatile UINT32 *)(0x60000000U))


#define DPRAM_CNTENB_ON hetREG1->DOUT |= 0X00000080
#define DPRAM_CNTENB_OFF hetREG1->DOUT &=~(0X00000080)
#define DPRAM_CNTRST_ON hetREG1->DOUT |= 0X00000200
#define DPRAM_CNTTRST_OFF hetREG1->DOUT &=~(0X00000200)

#define DPRAM_ADSB_ON hetREG1->DOUT |= 0X40000000
#define DPRAM_ADSB_OFF hetREG1->DOUT &=~(0X40000080)
#define DPRAM_FTBPIPE_ON hetREG1->DOUT |= 0X80000200
#define DPRAM_FTBPIPE_OFF hetREG1->DOUT &=~(0X80000200)
/*用户代码结束*/
/*用户代码开始(2)*/
/*********
* f4函数名称: fputc.
****说明:串行数据通过串行通道发送
(二 /
int fputc (int ch、文件*f)

while ((scilinREG->FLR &(UINT32) SCI_TX_INT)== 0U)//等待直到 TXRDY 位设置为高电平


scilinREG->td = ch;//将值保存到 sci 数据寄存器中
返回通道;

/*********
*四个函数名称:sciDisplayData
* 4说明:将整数转换为整数
(二 /
空 sciDisplayData (sciBASE-t * sci、uint8 *文本、uint32长度)

uint8 txt = 0;
uint8 txt1 = 0;
while (length---)(while (l

#if ((__little_endian__= 1)||(__little_ENDIAN__= 1)
txt =*文本--;
其他
txt =*文本++;
#endif
txt1 = txt;
txt &=~(0xF0);
Tx1 &=~(0x0F);
txt1 =txt1>>4;
if (txt<=0x9)

txt +=0x30;

否则、如果(txt > 0x9 && txt < 0xF)

txt +=0x37;

其他

TXT = 0x30;

if (txt1 <= 0x9)

Tx1 +=0x30;

否则、如果((txt1 > 0x9)&&(txt1 <= 0xF))

Tx1 +=0x37;

其他

Tx1 = 0x30;

while ((scilinREG->FLR & 0x4)== 4);//等待忙*/
sciSendByte (scilinREG、txt1);//发送文本
while ((scilinREG->FLR & 0x4)== 4);//等待忙*/
sciSendByte (scilinREG、txt);/*发送文本*/
};

空 Delay1Ms (uint32_t 延迟)

while (Time1Sec >= Delay);
Time1Sec = 0;

/*********
* f4名称函数:EMMIFdataWrite
****说明:生成 EMIF 数据写入
(二 /
空 EMMIFdataWrite (uint32_t offset、uint16_t DpramWriteData)

DPRAM_CNTENB_ON;
DPRAM_CNTRST_ON;
*(DPRAM_SYNC1 +offset)= DpramWriteData;

/*********
* f4名称函数:EMMIFdataWrite
****说明:生成 EMIF 数据写入
(二 /
uint16_t EMMIFdataRead (uint32_t offset)

DPRAM_FTBPIPE_OFF;// DPRAM 处于直通模式运行、
DPRAM_CNTENB_OFF;//
DPRAM_CNTRST_OFF;

DpramReadData =*(DPRAM_SYNC1 +偏移量);
返回 DpramReadData;

/*********
* F4函数名称:HardwareInit
****说明:密文初始化
(二 /
void 硬件初始化(void)

sciInit();//串行通信接口初始化//高端计时器初始化
hetInit();
rtiInit();
_enable_IRQ ();
rtiEnableNotification (rtiNOTIFICATION_COMPARE0);
rtiStartCounter (rtiCOUNTER_BLOCK0);
EMIF_ASYNC1Init();

/*********
*四名函数: main
*四:说明
(二 /
int main (空)

/*用户代码开始(3)*/

uint16_t DpramData = 0;
HardwareInit();

while (1)

Delay1Ms(1000);
printf("********* \n\n");
// DpraAdress =(0xAAA <<1);
// EMMIFdataWrite (0x000、0xAA);
// Delay1M(10);
DpramData = EMMIFdataRead (0x000);
// sciDisplayData (scilinREG、&DpramData、2);

plz 帮助我...

如果您有一些 EMIF_MITECTing_PLz Attach

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

    我已将您的帖子转发给我们的 SW 团队成员之一。 他们很快就会回来。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Prasanna、

    我们确实在 HALCoGen 中有一个示例、展示了如何配置 EMIF 以连接到 SDRAM。 目前、它是 TMS570LC43x/RM57x 器件的一部分。 但是、您仍然可以对 TMS570LS3137器件执行类似的步骤。 请注意 Pinmux 设置。

    截至今天、我们不提供任何具有异步存储器的示例。 我可以与我的团队成员核实他们是否开发了任何示例代码。 同时、请查看该示例(它是 HALCoGen 帮助文档的一部分)并查看它是否有用。 如果您仍然遇到任何问题、请告诉我。

    谢谢、此致、

    Veena