阅读:1667回复:10
怎样读D12的ID?
各位大虾:
请教两问题: 1 怎样读D12的ID?我看到别人说用READ chip ID(命令FD)来读,发完命令后,是要接着读出两BYTE数据吗?数据值为多少才表示命令生效了,是不是不为0就是生效了呢? 2,发的命令好像都无效有那些原因? |
|
沙发#
发布于:2003-07-03 18:22
怎么没人知道?
|
|
板凳#
发布于:2003-07-03 18:47
好象没有这条命令?反正我在命令表中没查到。
|
|
|
地板#
发布于:2003-07-03 19:58
呵呵,其实那就是个寄存器而已,你怎么读写别的寄存器就怎么读这个寄存器,这个寄存器的值是固定的,只能读不能写,datasheet上会告诉你寄存器的地址是多少。
|
|
地下室#
发布于:2003-07-03 23:03
没有,我找了半天也没有FD这个命令
|
|
5楼#
发布于:2003-07-04 08:40
D11的数据手册上好象有
|
|
|
6楼#
发布于:2003-07-04 10:09
没有,我找了半天也没有FD这个命令 我估计它不是个命令,只是个寄存器而已,而你之前提到的那个函数里也就是几条读寄存器的指令而已,你怎么读的其他寄存器就读这个寄存器。 |
|
7楼#
发布于:2003-07-04 13:49
使用读取ID命令(0xfd)去读,读回两个字节的内容,第一个字节应为0x12,第二个字节为0x10。如果正确,则表明D12向单片机发送数据没有问题。
unsigned short D12_ReadChipID(void) { unsigned short i,j; if(bEPPflags.bits.in_isr == 0) DISABLE; outportb(D12_COMMAND, 0xFD); i=inportb(D12_DATA); j=inportb(D12_DATA); i += (j<<8); if(bEPPflags.bits.in_isr == 0) ENABLE; return i; } |
|
|
8楼#
发布于:2003-07-04 22:18
为什么我读出的不是0x12,0x10,而是0x10,0x00?
难道是硬件有错? |
|
9楼#
发布于:2003-07-04 23:08
jinghuiren 真是热心!
|
|
10楼#
发布于:2003-07-06 16:58
读出的ID不是0x1210是否说明硬件有问题,但可以进行软连接。而且clockout时钟频率可以变化
|
|