阅读:1697回复:12
求8位机读写ide硬盘程序或流程!
光看ata协议只能读出idenfity,扇区读写还不会。谁给点资料啊。
|
|
沙发#
发布于:2003-10-21 08:19
没人回应!
|
|
板凳#
发布于:2003-10-21 14:52
再顶
|
|
地板#
发布于:2003-10-21 19:03
协议写的很清楚哦
|
|
地下室#
发布于:2003-10-22 09:21
协议太长,看晕了。问个问题,如果硬盘要用8位总线,是不是一定要有CFA特性?如果不是该怎么设?PIO模式read sectors后read buffer是不是一定要靠INT读?还有LBA命令怎么写,我按照协议写但是老是得到地址错误报告!
|
|
5楼#
发布于:2003-11-05 21:20
读写硬盘的数据总线,对数据寄存器的访问是16位的,对其它寄存器的访问是8位的。
[编辑 - 11/5/03 by resou] |
|
6楼#
发布于:2003-11-06 00:38
read sector后设备请求主机进行数据交换,主机可以直接以16位方式连续读256次data寄存器既可得到sector的数据,多扇区读就256乘以扇区数。LBA方式时首扇区地址是0扇
|
|
7楼#
发布于:2003-11-06 09:31
读写硬盘的数据总线,对数据寄存器的访问是16位的,对其它寄存器的访问是8位的。 我的意思是用8位总线访问数据寄存器+其它寄存器。现在问题解决了一部分(原先的硬盘是坏的!),也可以用8位总线读取任何数据,问题在于硬盘一定要有CFA特性。所以还是想8转16来读写,苦于转换电路成本、复杂! |
|
8楼#
发布于:2003-11-06 21:51
不知道你是用什么mcu的,我是用51的,用P0 P2做为数据总线,P1做为控制总线,就不存在16位到8位的转换啊,而且还不影响P0 P2的其它用途
说说你的做法吧 |
|
9楼#
发布于:2003-11-07 08:51
用P0 P2做为数据总线??硬盘是D0-D15哦,你2根线怎么够?
我是使用D0-D7数据线,A0-A2地址线。 |
|
10楼#
发布于:2003-11-07 23:33
51的IO是8位的哦,P0 P2就是16位了
|
|
11楼#
发布于:2003-11-07 23:39
P0的0-7 跟P2的0-7 组成16位数据总线,P1的0-4 为地址总线,P1的56分别为RW控制线
读取控制寄存器只需要用到P0 P1,读数据寄存器要同时用到P0 P2 P1 P0 P2仍然可以用做外部存储器接口 读取硬盘跟读ROM/RAM使用不同的指令即可。 |
|
12楼#
发布于:2003-11-08 08:55
瞧,咱们都会错意了。我还以为你的IC的IO排列是P0--PXX,你说的是用IO口读写啊,当然可以拉,我打算最后不行才走这一步。现在我的方案是使用“总线”,指IC真正地址数据线,只有8位。这样做我可以随意扩展外围设备,而且速度比IO快很多(有DMA)。所以我才一直考虑8转16。
|
|