天嵌 ARM开发社区

 找回密码
 注册
查看: 3339|回复: 7

请教个I2C接收数据的问题

[复制链接]
jiang11 发表于 2012-5-28 14:38:50 | 显示全部楼层 |阅读模式
单片机发送数据到S3C2440开发板,单片机作为master,S3C2440作为slave,
在开机日志中(dmesg中显示),有这样的日志
s3c2440-i2c s3c2440-i2c: slave address 0x10
s3c2440-i2c s3c2440-i2c: bus frequency set to 97 KHz
s3c2440-i2c s3c2440-i2c: i2c-0: S3C I2C adapter
所以单片机中设置的slave地址为0x10,
S3C2440中的程序,使用字符设备,open("/dev/i2c-0", O_RDWR)之后,直接read,程序不能读取到数据。
看了S3C2440的I2C驱动,read好像是作为master设备来读取数据的。
如果S3C2440作为Slave设备,被动接收单片机发送过来的数据,需要怎么处理。
是另外做一个驱动,还是啥的?
请指点,谢谢。
亚瑟王 发表于 2012-5-28 14:50:25 | 显示全部楼层
亲,在2440的芯片手册里面显示2440只能作为iic的主设备,不能作为从设备。
回复

使用道具 举报

 楼主| jiang11 发表于 2012-5-28 15:17:03 | 显示全部楼层
但是用裸机程序,是可以作为从设备接收数据的呢。
如果2440不能作为i2c主设备,2440又不知道什么时候单片机会有数据发送过来,那2440只能通过轮询的方式来处理,效率会很差的吧。
回复

使用道具 举报

亚瑟王 发表于 2012-5-28 15:23:55 | 显示全部楼层
jiang11 发表于 2012-5-28 15:17
但是用裸机程序,是可以作为从设备接收数据的呢。
如果2440不能作为i2c主设备,2440又不知道什么时候单片机 ...

亲,不好意思啊,刚刚搞错了,2440是可以作为从模式,不过在Linux的IIC驱动我这边所用到的都是主模式。你可以做个调整,不用内核自带的iic驱动,然后自己写一个iic的驱动(当成字符驱动来写就行了)。当然如果你在内核中找到了把IIC作为从的代码也行。目前我没有看到。
回复

使用道具 举报

 楼主| jiang11 发表于 2012-5-28 15:29:23 | 显示全部楼层
那工作量是不是很大阿,关键是我对arm的开发只是一知半解。。。。
回复

使用道具 举报

 楼主| jiang11 发表于 2012-5-28 15:33:45 | 显示全部楼层
请给个思路吧
回复

使用道具 举报

亚瑟王 发表于 2012-5-28 15:35:39 | 显示全部楼层
jiang11 发表于 2012-5-28 15:29
那工作量是不是很大阿,关键是我对arm的开发只是一知半解。。。。

亲,可以尝试以下几个办法:
1、如果你写过Linux的驱动,你可以看一下2440的芯片手册的IIC部分的章节,就几页内容,然后按照对应的说明设置寄存器就行了。
2、用一个外部中断,当单片机要发送数据到开发板了,单片机先触发开发板的外部中断,然后开发板再去读取IIC数据。
回复

使用道具 举报

烟灰缸 发表于 2012-5-28 18:29:28 | 显示全部楼层
我做TQ2440硬件裁剪,底板上摄像头接口和40P显示器接口都有那个I2C的2个信号,能去掉么?就是把I2C电路全部去掉可以么?
回复

使用道具 举报

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

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-20 03:08 , Processed in 2.060562 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表