搜索
bottom↓
回复: 12

关于单片机地址的问题……

[复制链接]

出0入0汤圆

发表于 2010-9-28 20:34:52 | 显示全部楼层 |阅读模式
马老师,能不能解释一下这几句话“在实验板上,利用MCU 自己的读写时序特征,可以很方便地读写LD 芯片的
寄存器。在现有连接中,MCU 的A14 连接到LD 芯片的CSB*,而MCU 的A8 连接到
LD 芯片的A0。
并行方式的读写函数为:
#define LD_INDEX_PORT (*((volatile uint8 xdata*)(0x8100)))
#define LD_DATA_PORT (*((volatile uint8 xdata*)(0x8000)))
void LD_WriteReg( uint8 ulAddr, uint8 ucVal )
{
LD_INDEX_PORT = ulAddr;
LD_DATA_PORT = ucVal;
}
uint8 LD_ReadReg( uint8 ulAddr )
{
LD_INDEX_PORT = ulAddr;
return (uint8)LD_DATA_PORT;
}
8100: 第14 位=1 第8 位=1
8000: 第14 位=1 第8 位=0
于是MCU 向LD 芯片的CSB*和A0 发出信号,配合此时的数据线,可以对LD
芯片的寄存器进行读写操作,十分方便。第15 位=1 是为了避开低端地址。”?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-9-28 21:19:48 | 显示全部楼层
你到底什么地方不明白?关键的地方。
把你明白的地方说明。
如果什么都不明白,要从基础学起。

这个是51的系统吧。

系统对这个LD芯片采用RAM操作的并行方式来读写LD的寄存器(你需要知道LD芯片的操作时序)

“第15 位=1 是为了避开低端地址。”?

估计这个系统外挂了RAM,RAM的地址不超过32K,在地址空间的低端,LD的地址定义在32K以上的空间,这样对RAM操作和对LD操作不会冲突。

出0入0汤圆

 楼主| 发表于 2010-10-2 17:46:21 | 显示全部楼层
回复【1楼】machao
-----------------------------------------------------------------------

#define LD_INDEX_PORT (*((volatile uint8 xdata*)(0x8100)))
#define LD_DATA_PORT (*((volatile uint8 xdata*)(0x8000)))
这两句话不明白,0x8100,0x8000这两个地址是怎么来的?

出0入0汤圆

发表于 2010-10-8 23:30:24 | 显示全部楼层
这个需要看硬件电路的设计。
好象你没有什么基础的,还是从基本的开始学习的好。

出0入0汤圆

 楼主| 发表于 2010-10-11 12:00:05 | 显示全部楼层
我的基础有点差,我主要是学AVR的,但是我确实想搞懂这个芯片……

出0入0汤圆

 楼主| 发表于 2010-10-11 17:03:24 | 显示全部楼层
点击此处下载 ourdev_588956J1WE0G.pdf(文件大小:369K) (原文件名:LD3320开发手册.pdf)
点击此处下载 ourdev_588957LAG4L0.pdf(文件大小:109K) (原文件名:LD3320测试板原理图.pdf)

出0入0汤圆

发表于 2010-10-11 19:40:08 | 显示全部楼层
楼上的,抱歉。没有基础学AVR是没有用的,也学不好。

出0入0汤圆

 楼主| 发表于 2010-10-12 12:05:43 | 显示全部楼层
马老师,请不要回避我的问题,基础我会自己搞(没人教),现在不也是向您学习请教问题嘛……
我就是那几个地址搞不懂,还有这个
#define MP3_BEIJING_START        0x0000;
#define MP3_BEIJING_SIZE        0x0868;
#define MP3_SHANGHAI_START        0x0C00;
#define MP3_SHANGHAI_SIZE        0x0ab0;
#define MP3_TIANJIN_START        0x1800;
#define MP3_TIANJIN_SIZE        0x0a20;
#define MP3_CHONGQING_START        0x2400;
#define MP3_CHONGQING_SIZE        0x0990;
#define MP3_NIHAO_START        0x3000;
#define MP3_NIHAO_SIZE        0x1170;
也不太懂,麻烦回答一下……

出0入0汤圆

发表于 2010-10-12 18:03:58 | 显示全部楼层
其实我已经告诉你了。

#define LD_INDEX_PORT (*((volatile uint8 xdata*)(0x8100)))  
#define LD_DATA_PORT (*((volatile uint8 xdata*)(0x8000)))

这个是LD的读写端口地址(估计LD是个大容量的存储器芯片),这个地址是硬件设计时决定的。你如果要真正的知道,就需要学习计算机接口方面的硬件基础,还要了解LD芯片的使用(看手册),这样就能看懂硬件设计,也就明白0X8000,0X8100的意义。

下面估计是这个LD中存放的MP3语音数据,前面表示这段MP3数据在LD中存放的起始地址,后面表示表示这段数据的长度。

#define MP3_BEIJING_START 0x0000;
#define MP3_BEIJING_SIZE 0x0868;
#define MP3_SHANGHAI_START 0x0C00;
#define MP3_SHANGHAI_SIZE 0x0ab0;
#define MP3_TIANJIN_START 0x1800;
#define MP3_TIANJIN_SIZE 0x0a20;
#define MP3_CHONGQING_START 0x2400;
#define MP3_CHONGQING_SIZE 0x0990;
#define MP3_NIHAO_START 0x3000;
#define MP3_NIHAO_SIZE 0x1170;


比如:
#define MP3_SHANGHAI_START 0x0C00;
#define MP3_SHANGHAI_SIZE 0x0ab0;

表示SHANGHAI的这段MP3数据(可能就是播报上海的语音)在LD中从0X0C00处开始存放,长度为0X0AB0字节。

我不是回避你的问题,因为根据你的基础,我解释了你也不一定能明白和理解。

出0入0汤圆

 楼主| 发表于 2010-10-14 12:08:13 | 显示全部楼层
谢谢马老师的回答,我还想问一下,MP3语音数据是怎样写入内存的?相应的关键字是怎样写入的?

出0入0汤圆

发表于 2010-10-14 12:29:18 | 显示全部楼层
1。需要了解MP3文件的格式
2。在PC上用UltraEdit打开该MP3文件(十六进制方式),跳过文件头,仅将语音部分的编码数据取出,并记录下字节数,作为十六进制数据备用。
3。将所有的MP3文件中取出的语音部分数据整理合并,然后写到LD中对应的地址中。

注意,在制作原始的MP3文件时,所有MP3文件的码率和格式应该是统一的。

这样处理,播放系统不需要什么文件系统,MCU直接到对应的地址读数据,然后扔给MP3解码器就可以了。

以上反映出嵌入式系统的剪裁特性,经过剪裁,你的系统就是一个“专用”的,特殊MP3播放器。

你要付咨询费的,两瓶五粮液:)

出0入0汤圆

 楼主| 发表于 2010-10-14 22:35:32 | 显示全部楼层
马老师果然是我们的好老师!!!

出0入0汤圆

 楼主| 发表于 2010-10-17 18:56:56 | 显示全部楼层
马老师,对我们这些自学者有没有什么建议?现在我是一点头绪也没有……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 02:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表