jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2131回复:7

求助:周立功89C51+D12,把89C51固件改到ADUC812??

楼主#
更多 发布于:2004-04-27 17:20
我买了周立功的SMART USB 开发板,我自己现在在做的是ADUC812+D12的数据采集,看周立功写的一书《PDIUSBD12固件编程与驱动开发》上所说,他所提供的固件移植到其他CPU上只需修改EPPHAL。C和MAINLOOP。C,我想问一下对EPPHAL。C具体改是该怎么改啊,我用的是KEIL C写。。请大侠多多指教,急中。。。。
aquariuscamus
驱动小牛
驱动小牛
  • 注册日期2004-02-18
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-22 12:40
硬件抽象层的作用是向上层提供统一的接口,这个要根据你的硬件来改,这个程序里提供了端口访问和FLASH读写的部分,拿端口访问来说,就是内存读写,但是有的机型或设计上面使用的I/O访问,就要改成I/O访问的。

主程序部分,他用的循环而且也没有作任何计算,应该根据自己的需要改一下,而且它没有提供USB协议之外的数据响应,这个也要加上
我的邮件地址:hwybird@sohu。com,两三天看一次
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-26 12:07
aquariuscamus
你好,谢谢,我昨天晚上把固件照着自己的电路图改了一下,发现在用周立功的驱动竟然也能用,用D12_TEST也可以读写端点,我现在不明白的是:你说它没有提供USB协议之外的数据响应,这个要加上。
  我现在是要在MCU外加一块存储器,然后通过D12来让PC机读存储器的数据,我想问一下,这样的话我该怎么做呢,还有就是PC机的应用程序读数据时只要用READFILE就行了吗!
  请多多指教!
  如果方便的话,请加我QQ:11624074


aquariuscamus
驱动小牛
驱动小牛
  • 注册日期2004-02-18
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-27 20:21
没有USB协议之外的响应是指:没有SCSI命令响应(在USB数据包中可以包含),诸如此类的命令(如果要兼容U盘的海量存储器标准,SCSI命令可能是对你比较有用的)。也就是说,就像网络打包一样,USB内部包含有数据,这些数据可以是数据也可以使相关命令。
推荐你看FRANK的USB研究报告(在这里感谢FRANK以及他的共享精神,他的相关报告让我在一个星期内搞定U盘软件设计)。
我不是很清楚你的控制器是什么,如果是DSP,可以将Flash直接映射到存储空间,通过响应SCSI命令读写,实现一个U盘。
当然,如果你自己有自己的协议,使用自己做的驱动程序,那么只需要响应自己规定的命令即可。
我的邮件地址:hwybird@sohu。com,两三天看一次
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-02 19:30
aquariuscamus
谢谢
FRANK的USB研究报告我以前看过了,当时我看的时候觉的他用的读写U盘我就没仔细看了,:),觉的自己的跟他还是有比较大的不同
这几天忙着自己如何改固件,已经有几天没来了,现在我已经弄懂了如何读写端点2的原理,但是有个问题没法解决

我先说一下我的问题吧:
我做的是数据采集,用的是ADUC812+D12,还扩展了一个RAM,没有
加RAM时,我用周立功的WRITEPORT2()和READPORT2()读写都正常,但是当我加了一个RAM,PC读数据就失败了,而且我用示波器看发现RAM的片选就一直没有有效过,我的端点2IN固件如下:
//主端点IN控制
void main_txdone(void)
{
 unsigned char i;
 D12_ReadLastTransactionStatus(5); //清中断标志位
 MCU_D12CS = 0x1;
 MCU_RAMCS = 0x0;                 //外部RAM片选
 databuff=0x0000;
 for(i=0;i<64;i++)                  
      { EpBuf = *databuff;
        databuff++;
       }
    MCU_RAMCS =0x1;
    MCU_D12CS = 0x0;  
   D12_WriteEndpoint(5, 64, EpBuf);

}
知我的固件这样写有没有问题?

还有一个问题就是我用USBHOUND监视只能监视到枚举过程,其他的数据

就没了,我用的是5.0版的,这是怎么回事啊!
我的QQ:11624074,希望多多指教。。。
aquariuscamus
驱动小牛
驱动小牛
  • 注册日期2004-02-18
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-05 00:06
在C语言里下面这段代码访问了绝对空间0x0000其实的内存,不论你的片选是否有效,你都没有选中需要的RAM,不论你使用单片机或是DSP,下面的这段代码都是有问题的。但是你的MCU我没有接触过,不能给你什么建议。

databuff=0x0000;
for(i=0;i<64;i++)
{ EpBuf = *databuff;
databuff++;
}

FRANK还有一篇调试的心得,你可以参考一下
我的邮件地址:hwybird@sohu。com,两三天看一次
jiangliq_2000
驱动牛犊
驱动牛犊
  • 注册日期2003-07-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-06 21:18
aquariuscamus,谢谢

引用---------------------------------------------
在C语言里下面这段代码访问了绝对空间0x0000其实的内存,不论你的片选是否有效,你都没有选中需要的RAM,不论你使用单片机或是DSP,下面的这段代码都是有问题的。但是你的MCU我没有接触过,不能给你什么建议。

databuff=0x0000;
for(i=0;i<64;i++)
{ EpBuf = *databuff;
databuff++;
}
-------------------------------------------------------
aquariuscamus,就你用过的单片机,如果用上面这段代码,会有什么问题呢,说来让我参考一下吧,说不定我能得到什么启发呢,谢谢!!
aquariuscamus
驱动小牛
驱动小牛
  • 注册日期2004-02-18
  • 最后登录2005-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-08 22:09
就拿51单片机来说,单片机大同小异,访问片内地址和片外地址是需要定义不同的数据类型的。使用汇编当然可以拉低或者拉高某一个引脚使选通有效,但是对于高级语言来说,通常都是由一些愈发扩展完成这个任务。你还是仔细看看芯片手册,或许会有帮助
我的邮件地址:hwybird@sohu。com,两三天看一次
游客

返回顶部