gpio模拟i2c和pwm应该从哪里开始下手? 50C

毕业设计要做的是在移植了Linux系统的TQ2440的开发板上连接三个传感器,其中有两个要分别用i2c和PWM,看到有很多说的是用gpio口模拟i2c和PWM。可是我现在很困惑,这个i2c和PWM到底是什么呢?是一个接口还是一个协议?因为也看到有的人说过i2c算是什么总线,也要写驱动,然后传感器也要写驱动......所以我很乱,我平常在网上看到的i2c驱动到底是说总线那个驱动还是说其下挂载的驱动。希望有了解这方面的大神多跟我详细说一点。还有,能不能给个实例让我参考一下。现在脑子一团乱,不知道从哪里下手。
学渣一个,但不想去淘宝买,想自己学点毕竟也想试着努力找一下这方面的工作。
拜托大家了!

4个回答

gpio模拟i2c 可以参考 这个 http://book.51cto.com/art/201304/390509.htm

gpio 模拟 pwm 可以使用定时器中断 控制GPIO的置高和拉低模拟PWM

sinat_35268537
Hello_Gioia 回复miaopasi_QAQ: 看到文章下面有个人评论:误人子弟 真是吓到我了![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/8.gif)
3 年多之前 回复
wangweiqiang1325
王牧天 补充一点,我之前上传的应用层的i2c读写就是用来读传感器的采集值,根据你现在所用的datasheet修改地址即可使用,驱动层的东西你是用不到的
3 年多之前 回复
wangweiqiang1325
王牧天 回复Hello_Gioia: 如果你找到硬件i2c,你就不必在进行模拟,直接使用应用层的读写i2c函数就可以了,i2c驱动层程序只是设备模块驱动,写的非常清楚的,自己试验一下就明白了,总线驱动一般是sdk已经实现,你只要使用总线接口操作即可
3 年多之前 回复
sinat_35268537
Hello_Gioia 回复王牧天: 我现在找到了开发板的gpio上有两个引脚是用于i2c的,所以我还需要模拟吗?还是说像你给的博客那样写?博客那个我看到过,但是我不懂到底那些是总线的驱动还是我设备模块的驱动?
3 年多之前 回复

你好,
1.首先来说下I2C, 两线式串行总线(SDA 数据,SCL时钟)这是飞利浦开发的总线标准。我觉得你不要纠结I2C的定义。
他的本质是通信协议,但是通信协议要在板子上如何表现出来呢?这就需要你来开发I2C驱动了。
建议你网上学习一下I2C协议,你就明白是怎么回事了,另外用GPIO模拟I2C可以帮助你深入理解该协议。当然不少
芯片板载了I2C模块,你查一下技术手册也很方便开发。
2.PWM,通过脉冲的占空比来模拟输出电压,看百度百科就知道了。
3.i2c和PWM都是板子上的模块,你要使用这些模块首先你得用程序去配置他们,你得这个配置程序就可以称作是这个模块
的驱动。你说的传感器是外设,是cup的延伸,现在这些传感器都完善的比较便于开发了。
你要做嵌入式这块的话建议你先玩玩简单的单片机,建立一个大概的框架之后再玩一些比较复杂的开发板。
希望对你有帮助

DataCow
Allen不会Crossover 回复Hello_Gioia: linux的驱动开发我只了解大概不敢跟你乱说,只能说是你操作传感器的原理是一样的,但是怎么操作,这就跟LINUX有关了,你了解一下这方面的东西,我相信花点时间还是可以搞定的。
3 年多之前 回复
sinat_35268537
Hello_Gioia 回复DataCow: 是这样的。因为我毕业设计急着做了。然后用过那个温湿度传感器,这个就直接写一个驱动程序安装,然后在别的程序调用就可以了。但现在这个的话,我不懂我要怎么做,他们应该有很多不同,但也会有一些相同。就有点乱。
3 年多之前 回复

补充一下,你说的传感器,如同I2C模块一样,你要使用它你首先也需要写一些配置程序,一些功能程序,处理程序,这些合起来就是它的驱动。
建议你写的时候每个模块独立写,留出接口函数调用,这样比较容易Debug也利于你以后的开发和移植。

sinat_35268537
Hello_Gioia 回复DataCow: 我现在在开发板的gpio口上找到了关于i2c的引脚,但是我不知道它们要怎么用。搜过很多相关的,但是可能是心比较浮躁吧,看不懂他们的意思。有的说要写关于线的驱动,有的又说内核有不用写……搞得我整个人很混乱,不知道自己要做什么。
3 年多之前 回复
DataCow
Allen不会Crossover 回复Hello_Gioia: 2.再写传感器驱动,在需要通信的地方调用i2c驱动中写好的接口函数,基本上就可以简单实现操作这个传感器了,你看下这个链接中写的http://download.csdn.net/detail/tchonggang77/4159211?locationNum=2&fps=1
3 年多之前 回复
DataCow
Allen不会Crossover 回复Hello_Gioia: 在ucos中我是这样弄得,1.先单独写I2C的驱动就是你说的driver,封装成函数接口
3 年多之前 回复
DataCow
Allen不会Crossover 回复Hello_Gioia: 因为我用ucos比较多一点,Linux还在学习中。所以告诉你我在ucos中怎么搞,感觉两个差不多。
3 年多之前 回复
sinat_35268537
Hello_Gioia 回复DataCow: 现在我在gpio口上找到了可用i2c的引脚,这应该就说明我不用去模拟了?然后普通的用i2c通信的传感器之类的驱动要怎么写呢?它的套路是什么呢?在网上找了很多来看,但是越看越乱。有的说要写总线的驱动,有的又说内核里面有,有的又说什么注册,还有什么device 和driver ……头都大了。时间有点紧迫,所以看看大家有没有什么建议。
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐