4168|9

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急!!!IIC0改成IIC1! [复制链接]

如题。用的2450的板子,wince5.0的平台。现在用IIC1接我的IC芯片。现在拿到手的IIC驱动是IIC0的,即用的GPE14\GPE15,我需要将其换成IIC1,即GPB7\GPB8。我做了如下修改:
1、 WINCE500\PLATFORM\SMDK2450\Src\Drivers\IIC\i2c.c中
//#define I2C_POWER_ON    0x00010     // PCLKCON bit 4
#define I2C_POWER_ON    0x10000     // PCLKCON bit 4
/*  pI2C->pIOPReg->GPEUDP &= ~(0xf<<28);                // Pull-up-down Disable
    pI2C->pIOPReg->GPECON &= ~(0xf<<28);
    pI2C->pIOPReg->GPECON |= (0xa<<28);                // GPE15:IICSDA, GPE14:IICSCL
   */
    pI2C->pIOPReg->PAD2 &=0x00000000;
    pI2C->pIOPReg->GPBUDP &= ~(0xf<<14);//悬空
    pI2C->pIOPReg->PAD2 |=0x00000006;

2、 WINCE500\PLATFORM\SMDK2450\Src\Drivers\IIC\drv.c中
S3C2450_BASE_REG_PA_IICBUS0改成S3C2450_BASE_REG_PA_IICBUS1

3、 WINCE500\PLATFORM\SMDK2450\Files\platform.reg中"Index"=dword:0改成1
;------------ I2C Driver ------------------------------------------------------------------------------------
IF BSP_NOI2C !
;; I2C Bus Driver
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\I2C]
    "Prefix"="I2C"
    "Dll"="I2C.DLL"
    "Order"=dword:0
    "Index"=dword:1
    "Mode"=dword:1              ; Mode: 0 = POLLING, 1 = INTERRUPT
    "SlaveAddress"=dword:0      ; Bus Driver's Slave Address
    "FriendlyName"="I2C Bus Driver"
    "IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"   ; Power-manageable generic
ENDIF BSP_NOI2C !

但是我在应用程序中HCOM= CreateFile(TEXT("I2C1:"), GENERIC_READ | GENERIC_WRITE , 0 ,NULL, OPEN_EXISTING,0,0);
不成功,打印信息为I2c CreateFile failed。而我若用最初的IIC0的驱动,CreateFile I2C0是成功的,也就是说我的驱动加载没有问题,但是改成I2C1不成功。有人做过的吗???我还需要修改哪些地方???着急!!!

最新回复

Veabol 真是热心人,我也凑数  详情 回复 发表于 2009-12-22 11:14
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
改成这个试试
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\I2C1]
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
在你的WINCE界面下看看注册表,Index到底是几,可能是你的注册表没改成功
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
"Order"=dword:0得改成1吧。。。

你现在有两个IIC吗?如果没有的话,直接用,就可以啊,那个0和1,只是一个标示号而已
首先得确认,你这里的IIC0与IIC1,是什么意思?都不大明白,,,我感觉你应该只有一个。。。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果仅仅有一个IIC驱动,HKEY_LOCAL_MACHINE\Drivers\BuiltIn\I2C1]或者HKEY_LOCAL_MACHINE\Drivers\BuiltIn\I2C0]是无所谓的。
还有“Order"是驱动的加载顺序影响CreateFile的是Index,不要误导楼主!
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

6
 
2450有几路IIC?如果是一路的话 驱动就一个啊 用IIC0和IIC1是一样的啊 如果你想改IIC0 IIC1直接改Index就行了啊

在应用程序调用HCOM= CreateFile(TEXT("I2C1:"), GENERIC_READ | GENERIC_WRITE , 0 ,NULL, OPEN_EXISTING,0,0); 注册表要
     Prefix"="I2C"
    "Index"=dword:1

在应用程序调用HCOM= CreateFile(TEXT("I2C0:"), GENERIC_READ | GENERIC_WRITE , 0 ,NULL, OPEN_EXISTING,0,0); 注册表要
     Prefix"="I2C"
    "Index"=dword:0
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 veabol 的回复:
在你的WINCE界面下看看注册表,Index到底是几,可能是你的注册表没改成功

有可能,你改成:
CreateFile(TEXT("I2C0:"), GENERIC_READ | GENERIC_WRITE , 0 ,NULL, OPEN_EXISTING,0,0); 看能正常打开吗?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

8
 
4,5楼, 正解...
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
设备号好像是从1开始的吧- -
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
Veabol 真是热心人,我也凑数
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表