当前位置: 代码迷 >> 驱动开发 >> 怎么写linux的I2C驱动,更具体的是加密芯片at88sc0104c的驱动
  详细解决方案

怎么写linux的I2C驱动,更具体的是加密芯片at88sc0104c的驱动

热度:39   发布时间:2016-04-28 11:03:41.0
如何写linux的I2C驱动,更具体的是加密芯片at88sc0104c的驱动
本人从没写过真正的驱动,现在工作上要求写个驱动,是关于加密芯片at88sc0104c。想知道如何下手。看了芯片手册,明白个大概,但不知驱动里应该怎么操作,有哪些到底要自己实现,哪些可以调用内核的功能。真的很模糊。虽然在网上看到了很多有关linux i2c的驱动分析,可是就算通篇看完能理解,也不知道哪些该是自己要实现,何况现在是略懂而已。我不知道明白了i2c驱动架构对我写驱动有多大帮助,感觉没什么帮助,只是了解了一些结构和过程。现在只能模仿/drivers/i2c/chips/ 目录下已经存在的芯片驱动。但始终有个问题困扰着我,,i2c设备的从地址到底是怎么获取的??系统分配?硬件绑定?在芯片手册没发现哪里有交代地址是多少。模仿的驱动是采用probe方式,似乎还要自己填充i2c_board_info这个结构。

------解决方案--------------------
设备的从地址要根据你的从设备芯片的datasheet确认,有的芯片里写死的,有的是从芯片的外接电路有关系的。建议你根据/driver/i2c/chips/下面的一个芯片进行移植。
------解决方案--------------------
研究透i2c子系统对写i2c驱动帮助很大。
因为都是基于标准的驱动模型的。
------解决方案--------------------
"i2c设备的从地址到底是怎么获取的??"
从地址是国际上的I2C协议委员会规定的,每种器件的手册都会具体给出。例如E2PROM的基本地址就规定为A0。有些不同器件的地址还是重复的,此时需要靠器件上的引脚地址线来区分。好在同一个系统下的I2C器件数有限,不会引起冲突。
I2C驱动仅仅是提供了你访问某些常见器件的接口程序,有些器件还需要你自己来增补。
------解决方案--------------------
手册上没说是I2C,当然就不是I2C,也不能使用I2C驱动接口。按照手册时序,自己写模拟驱动程序吧。
------解决方案--------------------
探讨
另外,把gpio设置成output,可以读它的值吗?如果先设了输出低电平,那我再读该io口返回的是低电平的值吗?为什么我测试读取返回的都是高电平,难道不能这样?

------解决方案--------------------
以前我调试都是用LA(逻辑分析仪)。不知道你手上有这工具没有,这东西比较贵。