TI中文支持网
TI专业的中文技术问题搜集分享网站

DSP5509A用EMIF接口扩展外设时,地址是如何映射的

我是初学DSP新人一枚,在用5509A做键盘操控数码管显示实验时指导书上写的是键盘等外设扩展到了CE3空间,然后给出了键盘地址,但是我不清楚这个地址是怎么来的,请各位为我解惑

下面是键盘部分的电路图与实验代码

代码:

// 定义指示灯寄存器地址和寄存器类型
#define LBDS1 (*((unsigned int *)0x601000))
#define keyboard (*((unsigned int *)0x600400))    
#define GPIO_SEL (*((unsigned int *)0x400000))

Nancy Wang:

keyboard是直接通过emif与5509连接的吗?能否贴一下相关的主程序。

xuan Song:

回复 Nancy Wang:

您好,谢谢您的回复,主程序如下:
//keyboard code
#include "myapp.h"
#include <csl.h>
#include <csl_pll.h>
#include <csl_chip.h>
#include <csl_gpio.h>
#include <stdio.h>
#include <stdlib.h>
#include <csl_irq.h>
#include <csl_mcbsp.h>

#define ST1_55*(int *)0x03
#define ST3_55*(int *)0x04
// 定义指示灯寄存器地址和寄存器类型
#define LBDS1 (*((unsigned int *)0x601000))
#define keyboard (*((unsigned int *)0x600400))
#define GPIO_SEL (*((unsigned int *)0x400000))
// 子程序接口
void Delay(unsigned int nDelay); // 延时子程序

unsigned int time=0;
unsigned int temp_key,temp_key1;
unsigned int keycode[100];

main()
{
// unsigned int uLED[5]={0,1,2,4,0xFF}; // 控制字,逐位置1: 0001B 0010B 0100B 1000Bunsigned int uLED[10]={0x0db,0x50,0x6b,0x73,0x0f0,0x0b3,0x0bb,0x51,0x0fb,0x0f3};
CLK_init();// 初始化DSP运行时钟ST3_55 =ST3_55|0x0040;//定义CE3的映射,禁止片内ROMSDRAM_init();// 初始化EMIF接口GPIO_SEL=0;while ( 1 ){temp_key=keyboard;temp_key=temp_key & 0x00ff;if(0xff!=temp_key){ temp_key1=temp_key;Delay(20);temp_key=keyboard;temp_key=temp_key & 0x00ff;if(temp_key == temp_key1){//time++;//keycode[time]=temp_key;switch(temp_key){case 0x0fb:LBDS1=0x0ff-uLED[2]; //s202break;case 0x0f7:LBDS1=0x0ff-uLED[3];//break;case 0x0ef:LBDS1=0x0ff-uLED[4];break;case 0x0df:LBDS1=0x0ff-uLED[5];break;case 0x0bf:LBDS1=0x0ff-uLED[6];break;case 0x07f:LBDS1=0x0ff-uLED[7];break;case 0x0fd:LBDS1=0x0ff-uLED[1];break;case 0x0fe:LBDS1=0x0ff-uLED[0];break;default:break;}}}}
}

void Delay(unsigned int nDelay)
{unsigned int ii,jj,kk=0;for ( ii=0;ii<nDelay;ii++ ){for ( jj=0;jj<2048;jj++ ){kk++;}}
}

在原理图里键盘是连在SN74HC245上的,当CE3与A11均为1的时候SN74HC245片选信号有效

赞(0)
未经允许不得转载:TI中文支持网 » DSP5509A用EMIF接口扩展外设时,地址是如何映射的
分享到: 更多 (0)