微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于键盘输入&液晶显示问题

关于键盘输入&液晶显示问题

时间:10-02 整理:3721RD 点击:
我原来从没有接触过DSP,但现在由于工作原因从事DSP编程,现要编一段键盘输入&液晶显示的汇编程序,书我看过一些了,但还是不知道怎么下手好,十分的困惑,究竟要用什么口,是SPI或是I/O,还是.......,请求各位老师和各位高手帮我指点一下思路和方法.
我用的是LF2047
谢谢各位!!

  这首先要看你选用哪一种液晶,与DSP如何连接,键盘也是一样。不知道硬件配置情况,编程无从谈起。

参考一下例程,会有所启发

我的电路很简单,用2-4译码器选通4个LED,LED和DSP的E口连接
现在我有个疑问,假设要把数据C0送到E口,我怎么表示E口的地址?
应为用单片机的时候,po口的地址为80H,在写指令的时候既可以写成80H,也可以写成po,但在DSP中我是直接写“E”还是……?E口的地址是多少?
我看过一本书上面说PEDATDIR的高八位是方向,低八位是数据,我想问一下,PEDATDIR是不是可以作为E口地址用,把数据通过PEDATDIR的低八位传到我的LED上?(问题很愚蠢,还是请大家帮帮我,谢谢啦~~!!)
我用的全是汇编程序

     我也还没有实际用过。但是准备要用,所以看过点资料。我觉得你的理解是对的,直接向 PEDATDIR  (7096H), 地址写:0FFxx, 0FF表示方向,xx 就是送往E口的数据。

PEDATDIR   地址是 7095H,  不是 7076H。上一贴写错了。

谢谢楼上的几位啦!
我想还有一个问题想请教一下:SARAM存储器可以映射到程序存储器也可以映射到数据存储器中,但是对于外部和内部有什么区别呢?在编程的时候有什么影响呢?

SARAM 有一段时间把我折腾得够呛。程序老是莫名其妙地被破坏。曾在本坛发过一贴,转贴在这里:

1。SARAM确实既可做程序存储器,又可做数据存储器;
2。SARAM在程序地址空间中的地址是08000H- 087FFH,在数据地址空间中的地址是
0800H- 0FFFH;
SPRS145 p15 Memory map 中提示了这一信息

3。究竟是映射到程序地址空间,还是映射到数据地址空间,由SCSR2 的DON,PON决定,
4。RESET CPU 后的DEFAULT 状态是:既映射到程序地址空间,同时也映射到数据地址空间。就是说程序区与数据区有一部分是重叠在一起的.实际上这是最危险的情况,稍不小心,程序就会被数据破坏了,只见最简单的程序,居然也频频跑飞,自己还莫名其妙呢。

后来我对付的办法是 CMD文件中分配存储区时注意,外部程序存储区从8800h 开始,避开SARAM。SARAM就专门用作数据存储区吧,免得冲突。


麻烦你我还有点问题,在程序存储空间和数据存储空间中都有External这一部分,按照你告诉我的外部程序存储区从8800h 开始,外部数据存储区地址从8000h,我想想问一下,这两部分External空间是不是相当于是给一个外扩的存储器留出来的呢?如果不是,它的作用是什么呢?
还有就是IO空间我一直不明白它到底是做什么用呢?(我的感觉是IO空间总是闲置着没有用)

从TI公司文档 spr145 p21 memory map 看,程序区与数据区的 8000h - 0FFFFh,都是External,都可以用作外部扩张存储器。我的目标板上确实也配置了64K 字RAM,32K用作程序存储器,32K用作数据存储器,地址都是8000-FFFF。
但是后来发现8000H- 8800H 地址SARAM 占用了。分配到这片地址的外部RAM实际是用不上的。而且按缺省配置,SARAM 还一身二任,既是程序存储器,又是数据存储器。因此才会发生写数据破坏程序的奇怪现象。为避开这一问题,外部程序存储区干脆从
8800H开始使用。
I/O 空间我也觉得奇怪,64K中只用了屈指可数的几个字。外设端口都映射到数据存储区去了。这种安排一定有它的道理吧。我们一时理解不了也就算了。


我现在看了一些书了,可还是很糊涂,但又不知道哪里糊涂,所以我想用做实验的的方法来看看,我手里现在有2407的评估板和仿真器,但却不知道要怎么用它?也不知道它能够做哪些试验,想请教你一下,谢谢你^_^

有了仿真器和评估板,可以动手了。
先找本实验指导书,把书上的实验原模原样做上一两个。然后再按自己的使用方向,从一些小程序开始,一点一点试,编程,编译,连接, DEBUG ,测试等等。我是这么过来的,不过比你早几个月而已。

向开发板Load程序的过程是不是就是所谓的FLASH烧录的过程呢?
我刚才在网上看到有很多人在Load程序的次数达到十次左右的时候,就不能再做,是不是表示在向Load开发板FLASH里Load程序的次数有限制,而且在十次左右呢?

我对I/O空间也不是很理解,本来想自己扩展一个外设接口的,因为不熟悉没有做,2407的I/O引脚挺多的,一般情况下够用了,我理解其余的IO空间要通过地址译码再加上IS引脚才能寻址,当然还要加上一定的外围设备如373等来锁存数据,现在用的目标板只扩展了有限的几个IO地址

谢谢楼上的解释!
我好像明白一些IO空间的问题了
谢谢大家了!^_^

不是,开发过程中只在一开始烧一次FLASH,就是修改00-3F处的中断向量表。以后 Load Program 只是将程序 Load 到 RAM 中。(我是这样做的,别人也许有其他办法)。这样 Load 次数应该没有什么限制。

\"开发过程中只在一开始烧一次FLASH,就是修改00-3F处的中断向量表。\"
我不是很明白你说的这句话的意思?所谓烧录不是把程序下载到FLASH中么?

烧 FLASH 与 Load program 是两回事。
Load Program 是把程序运行文件下载到程序 RAM 中,而烧 FLASH 是把程序文件烧到FLASH 程序存储器。二者用的工具不同。烧FLASH 好多地方都提醒大家小心,再小心,弄不好就烧坏片子。 Load Program ,那就轻松得很,一天 Load 好多次。

问题:
1. Load program 的时候是把程序运行文件下载到程序 RAM 中,这里的的RAM是评估板里的片内DARAM还是片内SARAM呢?
2.如果程序Load在了RAM中,那么开发板内的片内FLASH是不是没用到?
3. 你说“二者用的工具不同。”那么他们分别用的是什么工具?烧FLASH 是怎样的一个过程呢?
我的问题多了点,希望你不要觉得烦。谢谢你了^_^

Load Program 到底 Laod 到哪里,是由 CMD 文件规定的。
如果可能,开发阶段不用片内Flash 当然方便多了,免得经常烧写 Flash。
烧 FLASH, 通常用 CCS 窗口里的: Tools-> On Chip Flash Programmer.

我在我的cmd文件中把 .text汇编码放在了FLASH中了,并没有把汇编代码放在RAM阿?我不太明白你说的意思
我在CCS的Tools中查了一下,没有找到On Chip Flash Programmer这一项,能不能再解释一下呢?
谢谢啦!

On Chip Flash Programmer 是所谓\" CCS 插件\",需要单独安装.如果没有安装和配置,菜单中看不到。
当然烧FLASH也有其他方法(好像有一个DOS 下运行的命令),我没有用过,说不清了。只是我觉得 Load Program 是不能把程序烧入FLASH 的。

你告诉我说Load程序的时候是把程序Load到运行程序的RAM中,可是在我的cmd文件中我把RAM全用作数据存储器了,而且.text段代码放到的FLASH中,那么Load的时候怎么会Load到RAM中呢?

     在我的环境里,确实是我说的情况。你那边是什么回事,不知道了。莫非直接用 Load Program 就真能烧  FLASH ?哪位权威解释一下。我只是对自己做过的东西,略知一二,其他说不清了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top