阅读:846回复:3
是不是在SMART那个固件中就已经实现了数据的转移到外部RAM?
在哪里实现数据的 转移呢,是不是在SMART那个固件中就已经实现了数据的转移呢,怎么实现啊
|
|
|
沙发#
发布于:2004-02-26 15:00
在中断处理中的关中断与开中断之间来完成这个数据的转移是必须的,否则会被新的中断读取的数据覆盖掉,在这个里面的地址记数是个非常重要的,这个来指示外部RAM的寻址这个肯定是2个字节的数据。该存于哪里肯定要是个全局变量,读的时候是不同的计算呢,还是同一个变量呢,两个,重新开始的时候,必须要初始化这个变量为0 ,在把数据传到内部RAM后再不片选D12,再转移数据。
|
|
|
板凳#
发布于:2004-02-26 14:49
还是用CS来不选择D12来避免在同一时刻往两个RAM上写数据,就是说单片机一个语句执行而在两个RAM中同时操作,存在隐患,虽然在D12中操作的是很少,写的话就是往FF03,FF02上操作根本上是不关于RAM的0000--7FFF,所以写是不会影响RAM中的数据的,读的时候也只是对地址FF02。FF03操作,根本不会从RAM中读数据,所以不会影响操作结果。 ,,对D12操作的时候是不影响外部RAM的。对外部RAM操作的时候是对地址0000---7FFF,只要在读写操作到XX02,XX03的时候的时候就可可以操作到D12,那么数据会是什么比如读RAM的时候,往这个 地址取数据的时候,那么那个地址有两个数据在等你取你取哪个呢?不能确定就会出错,D12是不是除了,问题是只要发往奇数偶数地址的都是数据,那么就更不行了,所以必须要片选控制
现在已经决定了要片选 |
|
|
地板#
发布于:2004-02-26 14:32
实现是实现了,不过在把数据往外部RAM中写的时候,D12在当写的地址为FF02、FF03的时候怎么处理呢,是不影响呢,还是数据突变,会不会数据往两个地方都写呢,这样会不会出错呢,担心的就是这个并且在读数据到内部RAM之后再转移到外部RAM的时候,如果是传输大于64个字节的时候就会在把数据放到内部RAM中的时候,主端点就又中断了根本来不及等把数据移到外部RAM中了,这样肯定不行。那就只能在中断一次传输64个字节后把读到数据后直接把数据转移到外部RAM中,也可在中断中经过内部RAM把数据放到外部RAM中去,这个过程必须在一次中断中完成。这样的话,关键的就是地址的分配上了,现在分配给UT62256的地址为0000---7FFF,只要往这个地址里连续放数据就可以了,只在外部RAM中写数据是不会影响D12的。因为D12只有在先发命令再发数据,发的命令也只有发往XX03时候的时候才有效
接下来的数据也只有发往XX02的时候才有效而我们在转移数据的时候肯定是先发往XX02在XX03的,最坏的情况就是第一次的03后下一次的02都刚好是D12的某个特别设置,比如设置为DMA方式了,D12工作模式变了,这种可能性有吗?应该是有的。。那么就必须考虑这个片选了,现在不放心的是什么呢,怕在中断处理中不片选这个设备,那怎么读这个数据呢,那只能在内部缓冲区里转移数据,让两者独立开来。这样会影响速度的吧, 那么那个缺陷肯定存在吗,仔细分析一下,地址是什么呢,直接在改片选呢还是,片选花不了多少执行时间,但是物理的改变有这么快吗,应该可以的吧。 |
|
|