4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:863回复:3

请问固件问题

楼主#
更多 发布于:2002-12-31 15:28
我在读周立功的固件的程序,其中看到很多不明白的地方,清各位大侠赐教:
1: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;
}
这是D12ci.c中的一个函数,其中outportb(D12_COMMAND, 0xFD);中的FD是哪里来得那?我在D12的资料中还没有看到这个命令阿/

2:还是D12ci.c中
unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
{
unsigned char c;

if(bEPPflags.bits.in_isr == 0) DISABLE;

outportb(D12_COMMAND, 0x80 + bEndp);//读取端点状态
c = inportb(D12_DATA);

if(bEPPflags.bits.in_isr == 0)
ENABLE;

return c;
}
其中的outportb(D12_COMMAND, 0x80 + bEndp)0x80是不是应该是0x40?不然的话0x80 + bEndp好像还没有这个命令阿.
3:在那个MainLoop.h中
#define SWAP(x) ((((x) & 0xFF) << 8) | (((x) >> 8) & 0xFF))
它实现的是将高8位和低8位交换,为什么要这样那?
4:d12的命令D0h可以分配地址并且使能,那为什么还要用D8h来使能端点那?为什么不在分配的时候同时使能那?

我是菜鸟,望各位大侠赐教,谢谢了!

最新喜欢:

dacongtoudacong...
dacongtou
驱动中牛
驱动中牛
  • 注册日期2002-11-11
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-12-31 15:48
1,0fdh他们说那是得到产品ID命令(READ CHIPID),但是手册上没有,你试试看
2,80-85是读端点状态命令,后面可读出一字节数据
3,D0是使能地址,D8是使能普通/同步端点(注意控制端点不用使能)
4qiuxh
驱动小牛
驱动小牛
  • 注册日期2002-11-27
  • 最后登录2008-04-14
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-01-05 18:40
怎么这么冷清啊?我还有个问题啊
就是关于晶振的问题,如果我用的是外部的时钟来控制d12的时钟,是不是就是将d12的XTAL1脚接上控制芯片的时钟输出脚就行了?我看到手册上面是这样说得,如果是这样的话那个set_mode明亮中的关于时钟分频系数的设置是不是就没有用了啊?随便写一个数?我想应该是这样的,不知道对不对啊?清大侠确认一下,谢谢了!
Parker
驱动牛犊
驱动牛犊
  • 注册日期2002-09-29
  • 最后登录2007-10-11
  • 粉丝0
  • 关注0
  • 积分110分
  • 威望11点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-05 21:06
从XTAL1输入的时钟是d12正常工作所需要的,且必须是6MHz,set_mode中的分频系数是对d12内部基准频率(48MHz)的分频,此频率在clock out上输出.
不以物喜,不以己悲。
游客

返回顶部