打印

关于实时输入后存储地址问题

[复制链接]
1106|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
zhangmangui| | 2013-12-10 17:14 | 只看该作者
如果不接地址线  同时也有外部的存储器  
你的这个数据是写向哪个区的   这个区对应的片选就会使能
这个使能连接的存储器也会被选中  这个数据就会送入到选中的存储器
但是地址不连接   只能一次一次地覆盖到同一个地址中   
如果外扩的是flash  那就无法擦除  因为没有偏移地址

使用特权

评论回复
板凳
polaris0327|  楼主 | 2013-12-10 17:35 | 只看该作者
zhangmangui 发表于 2013-12-10 17:14
如果不接地址线  同时也有外部的存储器  
你的这个数据是写向哪个区的   这个区对应的片选就会使能
这个使 ...

怎么定义它写向哪个区呢?这个是现在我遇到的关键问题。

每次覆盖之前是不是可以定义一个数组把这个数据存储一下?

使用特权

评论回复
地板
zhangmangui| | 2013-12-10 17:53 | 只看该作者
polaris0327 发表于 2013-12-10 17:35
怎么定义它写向哪个区呢?这个是现在我遇到的关键问题。

每次覆盖之前是不是可以定义一个数组把这个数据 ...

就拿55x系列给你说   存储器区如下图所示  
比如你的flash是连接到CE1片选上    也就是映射到了字地址0x400000-0x800000
你向这些地址写数据  也就是向外扩的flash写数据

使用特权

评论回复
5
polaris0327|  楼主 | 2013-12-10 18:11 | 只看该作者
zhangmangui 发表于 2013-12-10 17:53
就拿55x系列给你说   存储器区如下图所示  
比如你的flash是连接到CE1片选上    也就是映射到了字地址0x4 ...

外扩的是AD,采样完成后8位数据想要写入到ce1的一个地址,然后每次覆盖之前让本次的值赋给一个数组,怎么才能让这个写入的地址在ce1里呢?

使用特权

评论回复
6
zhangmangui| | 2013-12-10 18:29 | 只看该作者
polaris0327 发表于 2013-12-10 18:11
外扩的是AD,采样完成后8位数据想要写入到ce1的一个地址,然后每次覆盖之前让本次的值赋给一个数组,怎么 ...

外扩的DA还是AD呢   如果是AD的话  还需要转换时钟  转换使能等怎么接的

使用特权

评论回复
7
polaris0327|  楼主 | 2013-12-10 19:06 | 只看该作者
本帖最后由 polaris0327 于 2013-12-10 19:07 编辑
zhangmangui 发表于 2013-12-10 18:29
外扩的DA还是AD呢   如果是AD的话  还需要转换时钟  转换使能等怎么接的

AD的时钟是信号发生器给的,低频信号采样完了直接8位输入

使用特权

评论回复
8
zhangmangui| | 2013-12-10 23:59 | 只看该作者
polaris0327 发表于 2013-12-10 19:06
AD的时钟是信号发生器给的,低频信号采样完了直接8位输入

那你的意思就是直接读取数据就可以啦
这样很简单  直接定义任何一个映射区的地址
然后通过指针的方式读数据就可以啦

使用特权

评论回复
9
polaris0327|  楼主 | 2013-12-11 09:16 | 只看该作者
zhangmangui 发表于 2013-12-10 23:59
那你的意思就是直接读取数据就可以啦
这样很简单  直接定义任何一个映射区的地址
然后通过指针的方式读 ...

随便定义一个映射区地址,怎么才能让AD过来的数据写入那个地址啊?读取的话我知道怎么实现

使用特权

评论回复
10
zhangmangui| | 2013-12-11 09:24 | 只看该作者
polaris0327 发表于 2013-12-11 09:16
随便定义一个映射区地址,怎么才能让AD过来的数据写入那个地址啊?读取的话我知道怎么实现 ...

定义一个数据不行吗
int *deminaddr;  
deminaddr = (int *)0x200000;
*deminaddr = 0x00aa;
这样就写出去了

使用特权

评论回复
11
polaris0327|  楼主 | 2013-12-11 16:46 | 只看该作者
本帖最后由 polaris0327 于 2013-12-11 17:01 编辑
zhangmangui 发表于 2013-12-11 09:24
定义一个数据不行吗
int *deminaddr;  
deminaddr = (int *)0x200000;

这个是把0x00aa写到0x200000里边了吧,这样只是激活了片选,ad过来的8位数据实时数据在哪啊。。。
难道是激活ce1后数据过来自动进入到ce1的第一个地址0x200000了么?

使用特权

评论回复
12
zhangmangui| | 2013-12-11 17:25 | 只看该作者
polaris0327 发表于 2013-12-11 16:46
这个是把0x00aa写到0x200000里边了吧,这样只是激活了片选,ad过来的8位数据实时数据在哪啊。。。
难道是 ...

如果是CE1的话  这个0x200000(字节地址)就会将数据送出
对外面的AD或者外扩存储器来说   地址应该是0  数据应该是0xaa
对DSP来说0x200000(字节地址)只是个基地址

使用特权

评论回复
13
zhangmangui| | 2013-12-11 17:25 | 只看该作者
polaris0327 发表于 2013-12-11 16:46
这个是把0x00aa写到0x200000里边了吧,这样只是激活了片选,ad过来的8位数据实时数据在哪啊。。。
难道是 ...

我说的不够清楚是吧
也没有想过资料

使用特权

评论回复
14
polaris0327|  楼主 | 2013-12-11 17:32 | 只看该作者
zhangmangui 发表于 2013-12-11 17:25
我说的不够清楚是吧
也没有想过资料

实在是才接触不久啊,有很多不懂的地方多多指导 啊

使用特权

评论回复
15
zhangmangui| | 2013-12-11 17:39 | 只看该作者
polaris0327 发表于 2013-12-11 17:32
实在是才接触不久啊,有很多不懂的地方多多指导 啊

基地址是对DSP来说的  也就是在哪些地址范围之内  也就是那个的CEx片选会作用
就拿0x200000(字地址0x400000)来说  给这个地址写就会映射到CE1区
CE1片选   接下来给0x200000+Add写  对外部扩展在CE1上的来说  实际的操作地址就是Add

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

86

帖子

0

粉丝