打印

max541驱动集成进NK.bin和动态加载的效果不一样

[复制链接]
2563|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rain_ning|  楼主 | 2011-7-5 13:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
max541为16bit DA芯片 为该芯片写的wince驱动集成进NK和动态加载效果不一样
1.集成进NK以后 我发现 max541本来应该输出1.25V的时候 却输出了1.8V的电压
2.使用DM动态加载时候 max541本来应该输出1.25V的时候 的确输出了1.25V的电压
这是为什么呢?

附代码:

void write_max541(unsigned long data)//16bit DA
{
RETAILMSG(TRUE, (TEXT("the num write into max541 is %x.\n"),data));  
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT&~(1<<1)|(1<<1);
delay_us(1);
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT&~(1<<1);//set up a falling edge
write_spi1(data>>8);//input prefix num
RETAILMSG(TRUE, (TEXT("the prefix num write into max541 is %x.\r\n"),data>>8));  
write_spi1(data&0xff);//input suffix num
RETAILMSG(TRUE, (TEXT("the suffix num write into max541 is %x.\r\n"),data&0xff));  
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT&~(1<<1);
delay_us(1);
v_pIOPregs->GPGDAT=v_pIOPregs->GPGDAT&~(1<<1)|(1<<1);//set up a rising edge
}



void write_spi1(unsigned char txdata)
{
  v_pSPIPregs->SPTDAT1 = txdata;  
  RETAILMSG(TRUE, (TEXT("INFO:write_spi1 data (%ld).\n"), v_pSPIPregs->SPTDAT1));  
  while(!(v_pSPIPregs->SPSTA1 & 0x01== 0x01 ));
  RETAILMSG(1,(TEXT("write_spi1 is over\n")));
}

max541用的2.5V参考电压 让它输出1.25V时 串口应该打印出0x7fff 串口确实打印出该数据 可是用万用表测出来的确是1.8V 这可就奇怪了

相关帖子

沙发
Rain_ning|  楼主 | 2011-7-10 17:12 | 只看该作者
问题已解决 动态加载的时候可以保证驱动是最后一个被加载的驱动 ad的设置 gpio的设置都可以保证不被其他驱动篡改 这样的话 使用ActivateDeviceEx函数来在应用程序中动态加载dll这样比较合理 同时使用了对注册表的一些读写操作 在加载之前写入注册表 加载之后 清除注册表
如果是静态编译进入NK.bin的话 导致一些驱动同需要的驱动有一些设置上的冲突 造成结果错误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:低调 低调~

0

主题

78

帖子

1

粉丝