主题中讨论的其他器件: 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