5723|15

65

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

IIC驱动 为难 [复制链接]

要写一个芯片的驱动,是IIC接口的,要求是些8Bytes数据,读8Bytes

本来想自己写个IIC驱动的,但看了下三星BSP里面有IIC的驱动,所以想移植一下,结果,发现它里面的东西真的好多,



如果自己写的话,   好不好做?
  

----

最新回复

问题已经解决 !! 但对于这个 这ACK的操作 有点模糊,所以想求证一下: 在流程图里面可以看到,在每次SDA is shifted to IICDS.后都要到ACK period and then interrupt is pending. 这个过程是不是 在每次1个Bytes的数据传递过后,slave device 发送ack信号给 CPU,然后 IICCON 里面的Interrupt pending flag 被标记, 此时应该是1 ,状态应该是: Interrupt is pending (when read) 。然后当给IICDS 写入下一Bytes的数据之后,如果要继续发送数据给从设备,只要 clear this bit as 0, 就可以resume the operation,。之后SDA is shifted to IICDS. 然后 循环进行,知道 软件判断 是否要停止/ [url=http://topic.eeworld.net/u/20090927/22/99b685a9-d710-4c3d-aa26-2bdeb90044b9.html?55397][/url]   详情 回复 发表于 2009-9-28 18:05
点赞 关注

回复
举报

66

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
应该可以吧!看你怎么做模拟iic通信还是用cpu的iic寄存器?以前做个pxa270的,就是相应的寄存器配置好。有个从机地址什么的,还有如果在bsp中最好有lock,这样iic通信不会被打断!
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
自己写驱动的话很简单
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

4
 
我们的设备中用到UART,SPI,IIC等等,都是自己写的驱动
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
别动不动就自已写,使用BSP包里提供的就很好的,人家写的都经过测试了的,这些通用驱动口,有可能挂有多个设备,所以还是共用一个驱动好
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

6
 
软I2c还是硬i2c? 最好用硬i2c,如果硬件没有接对,那就只好用软件模拟,有些bsp有提供软i2c的,如果没有,那就自己写了,要研究i2c协议,得花点时间。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 ok138ok 的回复:
别动不动就自已写,使用BSP包里提供的就很好的,人家写的都经过测试了的,这些通用驱动口,有可能挂有多个设备,所以还是共用一个驱动好


他们写的非常难以理解,我觉得还是自己写吧。有控制器的比较好调试的,再说了裸机测试程序都有的,自己慢慢慢比较就可以搞出来了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 gooogleman 的回复:
引用 4 楼 ok138ok 的回复:
别动不动就自已写,使用BSP包里提供的就很好的,人家写的都经过测试了的,这些通用驱动口,有可能挂有多个设备,所以还是共用一个驱动好


他们写的非常难以理解,我觉得还是自己写吧。有控制器的比较好调试的,再说了裸机测试程序都有的,自己慢慢慢比较就可以搞出来了。

同意  我现在就是用测试程序 在自己搞
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 6 楼 gooogleman 的回复:
引用 4 楼 ok138ok 的回复:
别动不动就自已写,使用BSP包里提供的就很好的,人家写的都经过测试了的,这些通用驱动口,有可能挂有多个设备,所以还是共用一个驱动好


他们写的非常难以理解,我觉得还是自己写吧。有控制器的比较好调试的,再说了裸机测试程序都有的,自己慢慢慢比较就可以搞出来了。


我以前调camera驱动用iic,本来bsp自带的iic驱动有些问题,于是我就自己写了个,感觉那个波形真是很完美,camera也调通了,很有成就感的。可是后来被经理说了一顿,很不爽,说的就是“BSP包里提供的就很好的,人家写的都经过测试了的,bsp有的就最好用bsp下面的”。
到后来自己写其他的程序慢慢的意识到,一个完美的程序真的不是那么轻松就出来的。说白了程序是测出来的,不是写出来的。看看小日本写的测试程序,真是变态,啥都能给你测出来,这个精神还是值得学习的。

虽然bsp下面的程序比较复杂,但对我这样的新手来说,里面的思路和方式都是值得好好学习的。
哈哈,虽然我赞成自创新,建议还是把bsp下面的好好研究吧。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 8 楼 abo77281 的回复:
引用 6 楼 gooogleman 的回复:
引用 4 楼 ok138ok 的回复:
别动不动就自已写,使用BSP包里提供的就很好的,人家写的都经过测试了的,这些通用驱动口,有可能挂有多个设备,所以还是共用一个驱动好


他们写的非常难以理解,我觉得还是自己写吧。有控制器的比较好调试的,再说了裸机测试程序都有的,自己慢慢慢比较就可以搞出来了。


我以前调camera驱动用iic,本来bsp自带的iic驱动有些问题,于是我就自己写了个,感觉那个波形真是很完美,camera也调通了,很有成就感的。可是后来被经理说了一顿,很不爽,说的就是“BSP包里提供的就很好的,人家写的都经过测试了的,bsp有的就最好用bsp下面的”。
到后来自己写其他的程序慢慢的意识到,一个完美的程序真的不是那么轻松就出来的。说白了程序是测出来的,不是写出来的。看看小日本写的测试程序,真是变态,啥都能给你测出来,这个精神还是值得学习的。

虽然bsp下面的程序比较复杂,但对我这样的新手来说,里面的思路和方式都是值得好好学习的。
哈哈,虽然我赞成自创新,建议还是把bsp下面的好好研究吧。



那个代码 我只能说 很严谨  是值得学习 前提:时间允许
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

11
 
学习TRUEman
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
自己用的话可以找个裸机的测试程序改改就行了,给客户提供的话最好全面一点
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 
这个IIC可是不太好,总是翻转到异常,也不知道怎么回事啊
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

14
 
复杂说明人家牛,嘿嘿
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

15
 
用BSP下的还是比较好,省时省力.
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

16
 

问题已经解决 !!

但对于这个 这ACK的操作 有点模糊,所以想求证一下:
在流程图里面可以看到,在每次SDA is shifted to IICDS.后都要到ACK period and then
interrupt is pending. 这个过程是不是 在每次1个Bytes的数据传递过后,slave device 发送ack信号给 CPU,然后 IICCON 里面的Interrupt pending flag 被标记, 此时应该是1 ,状态应该是: Interrupt is pending (when read) 。然后当给IICDS 写入下一Bytes的数据之后,如果要继续发送数据给从设备,只要 clear this bit as 0, 就可以resume the operation,。之后SDA is shifted to IICDS. 然后 循环进行,知道 软件判断 是否要停止/

[url=http://topic.eeworld.net/u/20090927/22/99b685a9-d710-4c3d-aa26-2bdeb90044b9.html?55397][/url]
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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