阅读:1563回复:6
关于D12中的 D12_ReadChipID 函数问题
在周立功的51单片机开发USB的程序中,我看到这样一个函数,D12_ReadChipID, 不甚理解,请各位指教
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; } 此函数是要得到chipid, 但我查阅了几遍d12 的数据手册,也没有找到0xfd 这个命令码,难道是隐含的代码,还是我的手册不全??? |
|
沙发#
发布于:2003-08-16 18:47
那是一个寄存器,里面存的是该芯片的版本信息和产品信息,是只读的,值是固定的,一般通过读这个id来检测芯片是否是好的,或者地址数据以及片选等是否都是正常的
|
|
板凳#
发布于:2003-08-18 10:11
正如你说的,这个基本函数可以用来检测本地cpu和d12之间的数据通路。那么,读出的device id 应该是多少呢 ?
另外,你说0xfd 是一个寄存器,为何d12的datasheet 中找不到有关此寄存器的描述。 请赐教!! |
|
地板#
发布于:2003-08-18 10:55
datasheet里面是没有的
读出来的应该是 12 10 |
|
地下室#
发布于:2003-08-18 23:19
12 10
这个数是对于d12 这类芯片的唯一标识,还是每颗d12 均有一个特定的标号? 请问什么资料中可以找到关于此问题的说明,请明示,先行谢过。 |
|
5楼#
发布于:2003-08-19 11:29
唯一的
不过我有的时候会读出来00 00 一开始我程序有问题的时候时读不出来的 读出来的话只是告诉你你的硬件读写d12没有太大的问题 |
|
6楼#
发布于:2003-08-19 12:39
如果有时读出是12 10,有时读出00 00, 那如何来保证硬件读写是正确的呢?
|
|